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.

MSPM0G1506: Update of BCR and BSL configuration (NONMAIN region) via UART BSL

Part Number: MSPM0G1506
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hello,

I tried to update the BCR and BSL configuration of the MSPM0G1506 controller on my target PCB.

As BSL host I used the BSL_GUI_EXE V1_2 from the SDK mspm0_sdk_2_03_00_07.

If I flash the target via debugger with an image that includes the BCR and BSL configuration, further updates via UART BSL are possible and the application on the target runs without problems.

But if I want to flash the image via BSL after a factory reset, the application on the target does not start after the firmware update and I cannot connect to target via debugger (so unfortunately I cannot read the flash).

It seems like the firmware update itself passes without errors:

Why does the application not start although the update was successful? Is it even possible to update the BCR and BSL configuration via UART BSL?

The BCR config differs only slightly to the default config:

(left side: BCR config I want to flash; right side: BCR config after factory reset).

I am just curious to know why the update of the NONMAIN area might cause problems after a factory reset.

Thanks in advance and best regards, 

Fabian

  • But if I want to flash the image via BSL after a factory reset, the application on the target does not start after the firmware update and I cannot connect to target via debugger (so unfortunately I cannot read the flash).

    Any error shown when you try to connect M0 via BSL or Debugger?

    The BCR config differs only slightly to the default config:

    Need further compare with TRM nonmain region register description to find the root cause.

    To check whether it's CRC register or configuration register.

    I am just curious to know why the update of the NONMAIN area might cause problems after a factory reset.

    Could you please show me the difference of nonmain region between M0 after factory reset and after SWD Flashed.

  • To execute the factory reset I connected the XDS110 interface on a MSPM0 launchpad with the SWD interface on the target PCB (with the MSPM0G1506 controller). I created a project in the Code Composer Studio and followed the instructions from this manual that I found (https://www.ti.com/lit/an/slaae88c/slaae88c.pdf?ts=1753360023052&ref_url=https%253A%252F%252Fwww.google.com%252F).

    So when I read the NONMAIN region via JLink debugger, it looks like this:

    The NONMAIN region of the image I want to flash looks like this:

    So, as you see, the only difference is that BSL invoke pin is disabled and the CRC over BCR config has changed (which makes sense).

    After the firmware update I tried to connect via JLink Debugger again and got this error message:

    What do you mean with "TRM nonmain region register"?

  • The NONMAIN region of the image I want to flash looks like this:

    To disable the BSL mode.

    So the question is, you can not flash your nonmain correctly, is my understanding correct?

    I am just curious to know why the update of the NONMAIN area might cause problems after a factory reset.

    It should work normally.

    Could you please show me the code you are using, or how to reproduce the issue, I can try from my side.

  • I will try explain how to reproduce this behavior step by step.

    1. Create a project in Keil for the MSPM0G1506 (the application software doesn't matter, just use example code)

    2. Adapt the BCR and BSL configuration in the sysconfig like this:

    3. Build the project -> mspm0g.hex is the name of the executable

    4. Generate special TI-TXT file that is required by the BSL GUI with the following command:

    srec_cat.exe mspm0g.hex -intel -fill 0xff -within mspm0g.hex -intel -range-padding 8 -o mspm0g.txt -TI-TXT

    So BCR and BSL config in the mspm0g.txt should look like this:

    5. Execute factory reset on the target controller (as I said I followed the instruction from this manual: https://www.ti.com/lit/an/slaae88c/slaae88c.pdf?ts=1753360023052&ref_url=https%253A%252F%252Fwww.google.com%252F, chapter 5.2 Factory Reset by CCS to Recover Device)

    6. Hardware setup: Connect GND, RXD and TXD of the XDS110 on the launchpad LPMSPM0Gxxxx with GND and the UART pins PA10 (TX) and PA11 (RX) on the target controller MSPM0G1506...these are the default BSL UART pins as I read in the datasheet

    7. Power the target controller and flash mspm0g.txt using BSL_GUI_EXE from SDK mspm0_sdk_2_03_00_07

    => the update passes without errors, but after that the application does not run and controller is locked (cannot connect to target via JLink debugger).

    Please try to reproduce this misbehavior following all steps described above.

    Thank you.