diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/bootloader.c b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/bootloader.c index 233ca2c54e0aeb09b4be7c4fc267e6948a6ab3c4..eb5fdfb267340116a4dcfc472ba7ac0c5ccca153 100644 --- a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/bootloader.c +++ b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/bootloader.c @@ -2,11 +2,10 @@ //bootloader code used from micropython machine_bootloader -// Location in RAM of bootloader state (just after the top of the stack). // STM32H7 has ECC and writes to RAM must be 64-bit so they are fully committed // to actual SRAM before a system reset occurs. -#define BL_STATE_PTR ((uint64_t *)&_estack) -#define BL_STATE_KEY (0x5a5) //arbitrary bit pattern used as marker +#define BL_STATE_PTR ((uint64_t *) SRAM2_BASE) //start of 16kb SRAM bank in stm32f405 +#define BL_STATE_KEY (0x5a5) //arbitrary bit pattern used as a marker #define BL_STATE_KEY_MASK (0xfff) #define BL_STATE_KEY_SHIFT (32) #define BL_STATE_INVALID (0) @@ -14,7 +13,6 @@ #define BL_STATE_GET_REG(s) ((s) & 0xffffffff) #define BL_STATE_GET_KEY(s) (((s) >> BL_STATE_KEY_SHIFT) & BL_STATE_KEY_MASK) #define BL_STATE_GET_ADDR(s) (((s) >> BL_STATE_KEY_SHIFT) & ~BL_STATE_KEY_MASK) -extern uint64_t _estack[]; void branch_to_bootloader(uint32_t r0, uint32_t bl_addr){ @@ -47,6 +45,6 @@ void check_enter_bootloader(){ void enter_bootloader(uint32_t r0, uint32_t bl_addr){ //set bootloader state values *BL_STATE_PTR = BL_STATE_VALID(r0, bl_addr); - + NVIC_SystemReset(); } \ No newline at end of file