2025-06-17 11:24 PM
I am currently implementing a dual-bank flash concept on the STM32WLE5CCU6 microcontroller, which features 256 KB of flash memory. I have divided the flash into two logical blocks, each of 128 KB. Both blocks include their own independent In-Application Programming (IAP) bootloader code. Additionally, each block contains identical application code, but mapped to different memory locations.
In the linker script for each block, I have modified the flash and SRAM start and end addresses accordingly. I have also updated the vector table by setting the __ICFEDIT_intvec_start__ symbol to match the start of the respective flash block.
The first block (Block 0 or B0) functions correctly. Upon reset, it correctly jumps to the application code located at the corresponding address.
However, when executing code from the second block (Block 1 or B1), the application does not function as expected. Furthermore, upon issuing a hard reset, the system always jumps to the start address of Block 0, rather than to Block 1.
This raises the question: apart from modifying the linker file (flash/SRAM address ranges and vector table in linker file ), are there any additional areas or configurations that need to be updated to support execution and booting from Block 1?
2025-08-04 2:33 AM