added jump_to_systembootloader
This commit is contained in:
@@ -61,6 +61,7 @@ union {
|
|||||||
cls_light_ThemeSettings msg_cls_light_ThemeSettings;
|
cls_light_ThemeSettings msg_cls_light_ThemeSettings;
|
||||||
cls_light_SaveThemeSettings msg_cls_light_SaveThemeSettings;
|
cls_light_SaveThemeSettings msg_cls_light_SaveThemeSettings;
|
||||||
cls_light_RequestThemeSetting msg_cls_light_RequestThemeSetting;
|
cls_light_RequestThemeSetting msg_cls_light_RequestThemeSetting;
|
||||||
|
cls_usb_JumpToBootloader msg_cls_usb_JumpToBootloader;
|
||||||
|
|
||||||
} mem_msg_decode;
|
} mem_msg_decode;
|
||||||
|
|
||||||
@@ -119,6 +120,7 @@ message_handler_t message_handlers[] = {
|
|||||||
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_SETTING_THEME, cls_light_ThemeSettings),
|
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_SETTING_THEME, cls_light_ThemeSettings),
|
||||||
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_SETTING_THEME_SAVE, cls_light_SaveThemeSettings),
|
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_SETTING_THEME_SAVE, cls_light_SaveThemeSettings),
|
||||||
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_REQUEST_THEME, cls_light_RequestThemeSetting),
|
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_REQUEST_THEME, cls_light_RequestThemeSetting),
|
||||||
|
MESSAGE_HANDLER(cls_usb_PackageType_JUMP_TO_BOOTLOADER, cls_usb_JumpToBootloader),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ void UsbDataHandler_Runner();
|
|||||||
*/
|
*/
|
||||||
int UsbDataHandler_RxCallback(uint8_t* Buf, uint32_t Len);
|
int UsbDataHandler_RxCallback(uint8_t* Buf, uint32_t Len);
|
||||||
|
|
||||||
|
void DataClbk_cls_usb_JumpToBootloader(void* msg, uint32_t length);
|
||||||
|
|
||||||
void DataClbk_cls_firmware_Start(void* msg, uint32_t length);
|
void DataClbk_cls_firmware_Start(void* msg, uint32_t length);
|
||||||
void DataClbk_cls_firmware_Package(void* msg, uint32_t length);
|
void DataClbk_cls_firmware_Package(void* msg, uint32_t length);
|
||||||
|
|||||||
@@ -285,6 +285,48 @@ void ULOG_SendLPUART(ulog_level_t level, char *msg) {
|
|||||||
HAL_UART_Transmit(&hlpuart1, (const uint8_t*)ulog_send_buffer, send_length, LOG_TIMEOUT);
|
HAL_UART_Transmit(&hlpuart1, (const uint8_t*)ulog_send_buffer, send_length, LOG_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JumpToBootloader(void)
|
||||||
|
{
|
||||||
|
#define conBootloadAddress 0x1FF09800
|
||||||
|
|
||||||
|
void (*SysMemBootJump)(void);
|
||||||
|
uint8_t i;
|
||||||
|
|
||||||
|
__disable_irq();
|
||||||
|
// Reset USB
|
||||||
|
//USBD_DeInit(&hUsbDeviceHS);
|
||||||
|
|
||||||
|
//De-init all peripherals
|
||||||
|
//HAL_ADC_DeInit(&hadc1);
|
||||||
|
|
||||||
|
// Disable Systick
|
||||||
|
SysTick->CTRL = 0;
|
||||||
|
SysTick->LOAD = 0;
|
||||||
|
SysTick->VAL = 0;
|
||||||
|
|
||||||
|
// Reset clock to default
|
||||||
|
HAL_RCC_DeInit();
|
||||||
|
|
||||||
|
// Clear all interrupt bits
|
||||||
|
for (i = 0; i < sizeof(NVIC->ICER) / sizeof(NVIC->ICER[0]); i++)
|
||||||
|
{
|
||||||
|
NVIC->ICER[i] = 0xFFFFFFFF;
|
||||||
|
NVIC->ICPR[i] = 0xFFFFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
__enable_irq();
|
||||||
|
|
||||||
|
SysMemBootJump = (void (*)(void)) (*((uint32_t *) (conBootloadAddress + 4)));
|
||||||
|
__set_MSP(*(uint32_t *)conBootloadAddress);
|
||||||
|
SysMemBootJump();
|
||||||
|
|
||||||
|
while (1); // Just in case...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DataClbk_cls_usb_JumpToBootloader(void* msg, uint32_t length) {
|
||||||
|
JumpToBootloader();
|
||||||
|
}
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
|
||||||
/* MPU Configuration */
|
/* MPU Configuration */
|
||||||
|
|||||||
13
tools/bootloader.py
Normal file
13
tools/bootloader.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
from usb_pb2 import PackageType, JumpToBootloader
|
||||||
|
from vcp_driver import *
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
ser = setup_connection()
|
||||||
|
# Create a message
|
||||||
|
request = JumpToBootloader()
|
||||||
|
request.magic = 0xdeadbeef
|
||||||
|
# Serialize the request to a bytearray
|
||||||
|
request_data = request.SerializeToString()
|
||||||
|
|
||||||
|
# Send the request
|
||||||
|
send_package(PackageType.JUMP_TO_BOOTLOADER, request_data, ser)
|
||||||
Reference in New Issue
Block a user