chore(legacy): unify {go,return}_to_bootloader => stay_in_bootloader

pull/1461/head
Pavol Rusnak 3 years ago
parent 040d09397c
commit 1a71dcd0c5
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

@ -112,9 +112,9 @@ static void bootloader_loop(void) {
} }
int main(void) { int main(void) {
// grab go to bootloader flag as soon as possible // grab "stay in bootloader" flag as soon as possible
register uint32_t r11 __asm__("r11"); register uint32_t r11 __asm__("r11");
volatile uint32_t go_to_bootloader_flag = r11; volatile uint32_t stay_in_bootloader_flag = r11;
#ifndef APPVER #ifndef APPVER
setup(); setup();
@ -128,7 +128,7 @@ int main(void) {
mpu_config_bootloader(); mpu_config_bootloader();
if (go_to_bootloader_flag == RETURN_TO_BOOTLOADER_FLAG) { if (stay_in_bootloader_flag == STAY_IN_BOOTLOADER_FLAG) {
goto bootloader_loop_start; goto bootloader_loop_start;
} }

@ -18,7 +18,7 @@ INCLUDE cortex-m-generic.ld
_ram_start = ORIGIN(ram); _ram_start = ORIGIN(ram);
_ram_end = ORIGIN(ram) + LENGTH(ram); _ram_end = ORIGIN(ram) + LENGTH(ram);
_go_to_bootloader_flag_addr = ABSOLUTE(0x20010000); _stay_in_bootloader_flag_addr = ABSOLUTE(0x20010000);
_stack = _ram_end - 8; _stack = _ram_end - 8;
__stack_chk_guard = _ram_end - 8; __stack_chk_guard = _ram_end - 8;
system_millis = _ram_end - 4; system_millis = _ram_end - 4;

@ -18,7 +18,7 @@ INCLUDE cortex-m-generic.ld
_ram_start = ORIGIN(ram); _ram_start = ORIGIN(ram);
_ram_end = ORIGIN(ram) + LENGTH(ram); _ram_end = ORIGIN(ram) + LENGTH(ram);
_go_to_bootloader_flag_addr = ABSOLUTE(0x20010000); _stay_in_bootloader_flag_addr = ABSOLUTE(0x20010000);
_stack = _ram_end - 8; _stack = _ram_end - 8;
__stack_chk_guard = _ram_end - 8; __stack_chk_guard = _ram_end - 8;
system_millis = _ram_end - 4; system_millis = _ram_end - 4;

@ -24,7 +24,7 @@ _codelen = SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.ARM.exidx);
_ram_start = ORIGIN(ram); _ram_start = ORIGIN(ram);
_ram_end = ORIGIN(ram) + LENGTH(ram); _ram_end = ORIGIN(ram) + LENGTH(ram);
_go_to_bootloader_flag_addr = ABSOLUTE(0x20010000); _stay_in_bootloader_flag_addr = ABSOLUTE(0x20010000);
_stack = _ram_end - 8; _stack = _ram_end - 8;
__stack_chk_guard = _ram_end - 8; __stack_chk_guard = _ram_end - 8;
system_millis = _ram_end - 4; system_millis = _ram_end - 4;

@ -32,7 +32,7 @@ reset_handler:
isb isb
#endif #endif
ldr r0, =_go_to_bootloader_flag_addr // r0 - address of storage for "go to bootloader" flag ldr r0, =_stay_in_bootloader_flag_addr // r0 - address of storage for "stay in bootloader" flag
ldr r11, [r0] // r11 - keep in register and hope it gets to main ldr r11, [r0] // r11 - keep in register and hope it gets to main
ldr r0, =_ram_start // r0 - point to beginning of SRAM ldr r0, =_ram_start // r0 - point to beginning of SRAM

@ -66,7 +66,7 @@ static uint32_t svhandler_flash_lock(void) {
} }
static void __attribute__((noreturn)) svhandler_reboot_to_bootloader(void) { static void __attribute__((noreturn)) svhandler_reboot_to_bootloader(void) {
*RETURN_TO_BOOTLOADER_FLAG_ADDR = RETURN_TO_BOOTLOADER_FLAG; *STAY_IN_BOOTLOADER_FLAG_ADDR = STAY_IN_BOOTLOADER_FLAG;
scb_reset_system(); scb_reset_system();
} }

@ -31,8 +31,8 @@
#define SVC_TIMER_MS 4 #define SVC_TIMER_MS 4
#define SVC_REBOOT_TO_BOOTLOADER 5 #define SVC_REBOOT_TO_BOOTLOADER 5
#define RETURN_TO_BOOTLOADER_FLAG_ADDR ((uint32_t *)0x20010000) #define STAY_IN_BOOTLOADER_FLAG_ADDR ((uint32_t *)0x20010000)
#define RETURN_TO_BOOTLOADER_FLAG 0x11 #define STAY_IN_BOOTLOADER_FLAG 0x11
/* Unlocks flash. This function needs to be called before programming /* Unlocks flash. This function needs to be called before programming
* or erasing. Multiple calls of flash_program and flash_erase can * or erasing. Multiple calls of flash_program and flash_erase can

Loading…
Cancel
Save