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.

CCS/MSP432P401R: Adding Bootloader to allow field update of firmware and/or control parameters via serial port

Part Number: MSP432P401R

Tool/software: Code Composer Studio

Apologies in advance for this being sort of a multi-topic question but I think all the steps relate to each other.

Currently we are using a MSP432 Launchpad board as a daughterboard on our system (it will eventually just get the processor and a JTAG header on the board when the next generation project starts). While this allows reprogramming of the firmware as well as debugging via the USB port, it is desirable to be able to allow field updates to be done over a serial port that is also used to communicate operating data when the system is running. We are using EUSCI_A2 as our system serial port.

From what I have found it seems that the CUSTOM-BSL432 package (found here: http://www.ti.com/tool/mspbsl ) needs to be customized to specify the desired UART port, compiled and loaded first; then my application is loaded after that and then using the BSL-SCRIPTER (from previous link) there is a way to set things up to automate the process of updating my application via the serial port. Unfortunately while there seems to be lots of details in the BSL User’s Guide (http://www.ti.com/lit/ug/slau622e/slau622e.pdf ) I cannot find any simple examples of how to accomplish all of this. There are a couple of threads on the forum including this one (https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/535669?tisearch=e2e-sitesearch&keymatch=MSP432%20bootloader ) that indicate (as I suspected) that properly setting up the linker files is some of what needs to be done, but for those of us who are hardware guys at our core and not software wizards it is still rather confusing.

Perhaps I have missed finding a tutorial or example somewhere that someone can point me to?

In the same vein I am also looking for a way to reserve a block of Flash for control parameters and be able to download or program that via the serial port (I can always do this in my code but it seems that the BSL-SCRIPTER might allow this to be easily done). And to support debugging I assume that part of the linker file setup mentioned above would be involved with allowing the control parameters NOT to be touched when reprogramming the application over USB?

Some details: Using CCS 7.1.0.00016 and have the simplelink msp432 sdk v 1.40.00.28 included in our code (that was current when I started and we won’t be changing during development unless absolutely necessary).

Any suggestions, pointers, links to a tutorial, etc. would be greatly appreciated. 

  • Hello John,

    It looks like you would like to use TI's BSL to allow field updates but instead of using the default EUSCI_A0, you would like to use  EUSCI_A2 as that is the one you selected as your serial port. Are there any other devices that will be programmed during the field updates?? In other words, is the MSP432 will be used to program the other devices?? Or is it the only device that will get updated?? It would be nice if you can share system block diagram, this will help me to get a clearer picture

    As I mentioned before, EUSCI_A0 is the default serial port used by the BSL so it will need to be changed to use the EUSCI_A2 and I'll be more than happy to help. It is an easy change on SW, but please keep in mind, that this new BSL will need to be updated on all the MSP432 that you will receive. I can also help you with this process and we have a tool MSP432_BSL_Programmer  1_00_00_01 to update the BSL (requires JTAG)

    John Weber said:
    Perhaps I have missed finding a tutorial or example somewhere that someone can point me to?

    We do not have a tutorial for this, but this might be something good to have.

    John Weber said:
    In the same vein I am also looking for a way to reserve a block of Flash for control parameters and be able to download or program that via the serial port (I can always do this in my code but it seems that the BSL-SCRIPTER might allow this to be easily done). And to support debugging I assume that part of the linker file setup mentioned above would be involved with allowing the control parameters NOT to be touched when reprogramming the application over USB?

    Yes, you will have to reserve some space on your linker and it can be updated using the BSL-SCRIPTER / BSL combination. In order to protect this section, I would recommend you to use the IP protection feature, please take a look at this document.

    Lets start with the BSL and then we can look into reserving a memory block in your application.

      Regards,

        David 

  • Thank you, David. Sorry for the delay - I hadn't seen the email indicating a reply and got busy with other things.

    The high-level block diagram of the system looks like this:

    I had assumed that all the processors would need to be programmed with the updated BSL, current code, and initial config data (as separate operations). And yes, given that all the documentation shows the details about the BSL, Scripter, etc. but doesn't really show HOW you use it - a tutorial oriented in that way (even for those not wanting to customize) would be appreciated I'm sure!

  • Hello John,

    After reviewing your block diagram the MSP432 is the only MCU on the system that requires an update. For a second I thought that the MSP432 was going to be used to update other MCU's on your system, thanks for the block diagram.

    I'm working on getting you a new version of the BSL that uses the EUSCI_A2, so just want to confirm that you are using P3.2 for UCA2RXD and P3.3 for UCA2TXD.

    Best regards,

    David
  • Hello John,

      Please find attached BSL0000.0003.0007.0205.DDAA_EUSCIA2.txt the BSL that enables EUSCI_A2.

    Please use the  MSP432_BSL_Programmer  1_00_00_01 tool to update the BSL and please get in touch with me offline and I'll send you the updated BSL source code (you can click on my profile and send me a private message that way).

      Best regards,

         David

**Attention** This is a public forum