This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0L1106: Firmware update question (OTA)

Part Number: MSPM0L1106
Other Parts Discussed in Thread: MSPM0L1117, MSPM0L1306

Hi Team,


We implemented a charging case for Bluetooth earbuds by using the MCU MSPM0L1106. The firmware was downloaded via the build-in bootloader in production.

There is a new feature requirement that the charging case firmware can be updated by wirelessly through the Bluetooth earbuds. In my design, the code memory will include three parts :
- Boot selector
- Image A
- Image B


The boot selector will check the checksum of the last good image (e.g. A), and start the application inside it. If new firmware is ready for download, it will be downloaded to Image B and Image B will be marked as the last good image. Based on the above, I have the following questions :
1. Which TI MCU series support the above firmware upgrade mechanism?
2. Is there any related source code or documentation that can be shared?

 

  • Hi Alan,

    For bootloader, except C series, other MSPM0 devices can support ROM BSL upgrade.

    For your working flow, I think this all based on the SW mechanism. 

    You can use SW to make the MCU pc to jumper to either A or B images.

    I think the key concern here is the flash size. What's you thought?

    Zoey

  • Hi Zoey,

    I think increasing the flash size is a must. My key concern is the "SW", how to make MCU boot between A or B images. It is the reason why I create this ticket to ask about the source code or documentation on this software implementation.

    In order to support MCU boot between A or B images, does MCU need to support dual bank memory, eg. MSPM0L1117?

    If MSPM0L1117 can be one of the candidate, can provide the resources for me to study? If not, please suggest the MCU too.

  • Hi Alan,

    Dual bank memory is not required for the A/B image boot mechanism. It can be implemented in software on any MSPM0 device with sufficient flash.

    I see you will have the Boot selector SW, right? Every time, MCU finished ROM boot and will run your owne boot selector SW. In this part

    1. Read the flag to choose A/B(You can store it in a dedicated flash/SRAM)  
    2. Reset SCB->VTOR address and SP
    3. Jumps to the related image's reset handler
  • Hi Zoey,

    If dual bank memory is not required, how does it achieve that single image can be ran on different memory area?

    For clarification, my target usage for firmware upgrade. So the firmware should be able to run at Image A / B memory with single build.

    By the way, can you show me the URL to download the out_of_box source code for MSPM0L1117 Launchpad as it cannot be found in CCS?

    Remark there is one for MSPM0L1306 Launchpad in CCS.

  • Hi Alan,

    That involves compilation-related considerations. Typically, for MCUs with signal-bank architecture supporting Image A/B, we distinguish the Flash regions allocated to A and B by making simple modifications to the project's linker file.
    If you prefer not to make any project-level modifications for A and B, then a dual-bank configuration is the more suitable choice.

    The newest version of SDK can support MSPM0L1117. Please kindly download it. Thanks!