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

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1 Introduction
    1. 1.1 Bootloader Concept
    2. 1.2 MSPM0 Bootloader Structure
      1. 1.2.1 ROM-Based BSL
      2. 1.2.2 ROM-Based BSL With Flash-Based Plug-In Interface
      3. 1.2.3 Flash-Based Secondary BSL
    3. 1.3 MSPM0 BSL Features and Demos Summary
  5. 2BSL Host Implementation Summary
  6. 3BSL Configuration in Non-Main (Configuration NVM)
    1. 3.1 Non-Main Introduction
    2. 3.2 Example – Disable PA18 BSL Invoke Pin With Sysconfig
  7. 4Bootloader Host
    1. 4.1 MCU Host Code Introduction
      1. 4.1.1 Hardware Connection
      2. 4.1.2 TXT to Header File Conversion
      3. 4.1.3 Step-by-Step Using the Demo
    2. 4.2 PC Host Example
      1. 4.2.1 Prepare the Image File and Password File
      2. 4.2.2 Steps to Using the GUI
  8. 5Bootloader Target
    1. 5.1 Default ROM-Based BSL
      1. 5.1.1 UART Interface
      2. 5.1.2 I2C Interface
    2. 5.2 Flash-Based Plug-In Interface Demos
      1. 5.2.1 UART Interface
        1. 5.2.1.1 Step by Step Using the Demo
        2. 5.2.1.2 How to Debug the Plug-In Interface Code
      2. 5.2.2 I2C Interface
      3. 5.2.3 SPI Interface
      4. 5.2.4 CAN Interface
    3. 5.3 Secondary BSL Demo
      1. 5.3.1 Flash-Based Secondary BSL Start From 0x1000
      2. 5.3.2 Flash-Based Secondary BSL Start From 0x0000
        1. 5.3.2.1 Flash-Based 0x0 Address BSL Demo for MSPM0C
        2. 5.3.2.2 Live Firmware Update
  9. 6Common Questions
    1. 6.1 Linker File Modification
    2. 6.2 Factory Reset by CCS to Recover Device
  10. 7References
  11. 8Revision History

Flash-Based Secondary BSL

If the private protocol is needed, the ROM-based BSL core cannot be used any more and the secondary BSL demo can be referred. A totally open sourced secondary BSL demo is provided in the SDK that you can use to easily modify the protocol. The default protocol of the secondary BSL demo is the same with ROM-based BSL.

 Flash-Based Secondary BSL
                Structure Figure 1-5 Flash-Based Secondary BSL Structure

There are also two kinds of secondary BSL demos mentioned, as shown in Figure 1-6. Use MSPM0G3507 as an example:

 Secondary BSL Designs Figure 1-6 Secondary BSL Designs
  • For the secondary BSL start from 0x1000, you can put this anywhere in the flash except 0x0. Because the application code must start from the 0x0 address. In this condition, when device power up or reseted, the device checks the BSL invoke condition in the bootcode the decide run application code or BSL code. The demo reused the ROM-based BSL's trigger resources. (Both hardware, software and blank device detection, more information please refer to section 3.2 of MSPM0 Bootloader User's Guide). Figure 1-7 shows the secondary BSL demo executed flow.
     Secondary BSL Execute
                        Flow Figure 1-7 Secondary BSL Execute Flow
  • For the secondary BSL that start from 0 address, the MCU runs 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 use case is for some MSPM0 device without ROM BSL like MSPM0C and we do have demo code about this in the SDK. In this demo, after check the invoke condition, if need to jump to application, the PC can be set to the start address of the application. More information, refer to Section 5.3.2. There is also a demo that using FreeRTOS in the secondary BSL that can realize 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.