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.

MSP432P401Y: Enabling Over The Air updates through the use of a UART connected cell module

Part Number: MSP432P401Y

I have been scouring through the forums and documentation looking for information on how to implement Over The Air updates on the MSP432P401Y but have yet to determine how or the best way this can be done. I have come across examples of how to enable this functionality for similar models of the MSP432 with either a connected ethernet or Bluetooth module but they do not go into much detail on how it is actually coded in the MSP.

We are using a Sara R410M cell module to communicate over the internet and can save a firmware update package to it's internal memory to be read back over a UART AT interface but we would likely need to modify the MSP's bootloader to be able to determine when to start parsing the file over the UART. The default bootloader would likely not be able to parse the file due to some extra file description information appended by the use of the AT interface.

I assume that we would need to further modify the bootloader on the MSP so that you can boot to either of the two Main flash memory banks depending on some criteria (newest software version information perhaps).

The perceived flow of operations would be as follows:

1) Send software update file over the internet to our cell module

2) Cell module saves the file to it's internal memory

3) MSP reads back this file and sends it to its bootloader to program to one of the two Main flash memory banks. (Keeping a copy of the original software as a backup)

4) Bootloader can attempt to boot to the newest firmware and fall back to the backup if needed.

Is this something that is possible with the MSP through the use of a custom bootloader? Is there an example project of the default bootloader that I can modify for my needs that works with the MSP432P401Y model variant? I am using CCS10 and the latest SimpleLink library.

  • Hello Tristan,

    This is possible due to the dual flash bank feature of MSP432P4xxx as well as its ability to customize the BSL. We actually have examples of this using the SImpleLink ecosystem. Please see the following example of MSP432P4 with our SimpleLink BLE Plugin here.

    Although we do not have a cell module in our SimpleLink portfolio, you could follow the example pointed to above to figure out the mechanics needed on the MSP432P4 side of the equation. You may also want to checkout the MSPBSL webpage for all MSP bootloader information. Here you will find the additional information you may nee din order to customize the BSL on MSP432P4 devices. Specifically you will have the BSL source code you can download and modify, as well as the MSP432P4 BSL User Guide. Section 5 goes into detail on downloading/customizing BSL. 

  • Hello Jace,

    Thanks for your help. I've taken a look at the examples you sent and I am currently trying to build the BSL source code that you linked to and have not been able to successfully.

    I get the following warning when trying to build:

    "#10211-D cannot resolve archive /mnt/Storage/TI/ccs1031/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/lib/libc.a to a compatible library, as no input files have been encountered"

    I also get the following errors:


    #10008-D cannot find file "./BSL432_API.obj" BSL432_MSP432P4111 C/C++ Problem
    #10008-D cannot find file "./BSL432_Command_Interpreter.obj" BSL432_MSP432P4111 C/C++ Problem
    #10008-D cannot find file "./BSL432_Peripheral_Interface_eUSCI_UART_SPI_I2C_IRQ.obj" BSL432_MSP432P4111 C/C++ Problem
    #10008-D cannot find file "./msp432_startup_ccs.obj" BSL432_MSP432P4111 C/C++ Problem
    #10009 no input files BSL432_MSP432P4111 C/C++ Problem
    gmake: *** [BSL432_MSP432P4111.out] Error 1 BSL432_MSP432P4111 C/C++ Problem
    gmake: Target 'all' not remade because of errors. BSL432_MSP432P4111 C/C++ Problem
    no source files, nothing to do BSL432_API.c /BSL432_MSP432P4111 C/C++ Problem
    no source files, nothing to do BSL432_Command_Interpreter.c /BSL432_MSP432P4111 C/C++ Problem
    no source files, nothing to do BSL432_Peripheral_Interface_eUSCI_UART_SPI_I2C_IRQ.c /BSL432_MSP432P4111 C/C++ Problem
    no source files, nothing to do msp432_startup_ccs.c /BSL432_MSP432P4111 C/C++ Problem

    Is this because the newest version of the TI arm compiler (20.2.5) is incompatible with this source code?

  • Hello Tristan,

    I just confirmed this. The BSL source code was built with ARM Compiler v15.12.3, so quite a while ago. If you download the v15.12.7 compiler into CCS, the source code compiles. 

  • Can you send me a link to where I can find this version?

    Also will this compile with CCS10 or does that need a downgrade as well?

  • I was able to get the TI ARM compiler v15.12.7.LTS to install and be recognized by CCS10 but the errors remain largely unchanged with the  only exception being that the path referenced in the warning changed to the path for the TI ARM compiler v15.12.7.LTS

  • *Didn't mean to click TI Thinks resolved on your reply, sorry about that.

    I compiled the project on CCS10. Can you double check you project settings to make sure they match the image below? Also, if you haven't done so, please "Clean" then "Build" the project. This will ensure proper linkage to the older compiler, and not to the newer/default compiler version.