SLAAE88D December 2022 – September 2025 MSPM0C1105 , MSPM0C1106 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0H3216 , MSPM0L1105 , MSPM0L1106 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
For the secondary BSL that starts from 0 address, the MCU can run into secondary BSL every time when power up or reset. In the secondary BSL, use custom check judgment to decide if stay in BSL to do firmware update or go into application. For the advantage of this design is that the customer can use special judgment not limited to GPIO, blank device detection. For example need to check CRC of application before jump to application code to make sure the integrity of the application code. The other using case is for some MSPM0 device without ROM BSL like MSPM0C and we do have demo code about this in the SDK. When jump to application, can set the PC to the start address of application.
To use this kind of BSL, create two projects, one is for secondary BSL and the other is for the application. The flash area needs to be separated. There are two interrupt tables that each project has. The BSL needs to configure the vector table offset register(SCB->VTOR) to make the current interrupt table to be active when jump from BSL to application code (Application jump to BSL is using reset that can reset vector table offset register automatically).
There is also a secondary BSL demos code that can support live firmware update. That demo means the secondary BSL firmware update ongoing without stop application code. For more information, see MSPM0 Live Firmware Update (LFU) Bootloader Implementation .