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.

MSPM0L1117: Invoking BSL via DSSM

Part Number: MSPM0L1117
Other Parts Discussed in Thread: UNIFLASH,

In SLAU887A MSPM0 Bootloader User Guide it says: 

"When debug interface is available, Bootloader invocation command can be sent through the Debug Subsystem Mailbox (DSSM). For more details on the DSSM command usage, please refer to MSPM0x_Technical_Reference_Manual DSSM commands section."

When I look in SLAU847E MSPM0 L-Series 32MHz Microcontrollers Tech Manual (May 2025) it only lists 5 DSSM commands: 1.) Factory Reset, 2.) Mass Erase, 3.) Password Authentication, 4.) Data Exchange, 5.) Wait for Debug.  I do not see how any of these commands would be used to invoke the BSL.  Does anyone know how to go about invoking the BSL via DSSM?  What am I missing?

  • Hi,

    As far as I know, there is no DSSM command to invoke BSL. Let me check internally and give you feedback.

  • Hi,

    The DSSM value for BSL is 0x0108. But I think in our tooling we are not supporting this by default, I am not sure on the reason. If you need to send this DSSM, please modify and write by yourself. 

    Regards,
    Zoey

  • I tried 0x0108 just now without success.  I believe this command should be sent using SEC-AP.  Is there any specific state or security policy that is required for it to work?  I am right now using security policy level 0 and sending the command directly after reset using a SEGGER J-Link debugger.  Is there any authentication required to enable the DSSM BSL command?  It is unclear from your message whether your tooling supports 0x0108 and if the customer has the option to use it.  What do you mean by "write by yourself"?

  • Hi,

    If you're using XDS110 debugger with CCS. In CCS, there is a script for factory reset, password sending, so on... But there is no script written for BSL invoke, in that case, you can modify the script and send 0x0108 to invoke the BSL. 

  • I have XDS110 debugger but I am unfamiliar with the CCS script feature.  I mainly use Uniflash with the XDS110.  Uniflash has buttons for Factory Reset, Mass Erase, ...  Those buttons I believe run gel files right?  Do you have an example gel file to share that I can edit?  I can then overwrite it in my Uniflash directory so, for example, the Factory Reset button would actually execute DSSM command for BSL invoke.  I would retrieve the gel file myself but it is unclear to me exactly which gel file in my Uniflash installation is actually running for Factory Reset button.  Having an example from you would help very much.

  • Hi,

    Here is what I found in the CCS directorymspm0l1117.gelmspm0_cs_dap_init.gel

    Here is the document(Realization of Password-Protected Debug Based on Software) that in Section 4.2  Access to Locked MCU step 1 and 2 explains how to run your custom GEL file in older versions of CCS (Cybernetic Scripts). I'm sharing this only in case you can't run custom scripts in Uniflash.

  • I was able to fake out Uniflash so the MassErase button sends the 0x0108 command.  I know my modified file is running because I can see my textout in the Uniflash command window.  It says the command was successful but I was not able to see the BSL running.  I tried manual (no reset afterwards) and auto (reset after)--both did not work.  If you don't have any other suggestions of things to try I guess I'm ready to give up.  Thank a lot for your help!  Here is the code excerpt from mspm0_cs_dap_init.gel in my Uniflash directory which runs when the MassErase GUI button is pressed.  BTW, great app note on Realization of Password-Protected Debug Based on Software.  Looks like you were the author.  This will be super helpful for me since I'm working on a cybersecurity project with the MSPM0L1117.

    <excerpt from mspm0_cs_dap_init.gel>
    .
    .
    .
    #define DSSM_BC_MASS_ERASE                              (0x0108U)
    .
    .
    .
    /*
     * Called from the device specific GEL file to force Factory Reset
     */
    GEL_DAPInit_remoteMassErase(autoReset)
    {
        GEL_TextOut("Initiating Device BSL Invoke\n");
        'GEL'::gDAPSecAPDataLen = 0;
        GEL_DAPInit_remoteSECAPCommand (DSSM_BC_MASS_ERASE, 0);
    }
    .
    .
    .

  • Hi,

    I have checked from my side with Uniflash. It should be workable.

    What I only change is the DSSM_BC_MASS_ERASE to 0x0108, remaining others unchanged.

    And press the mass erase manual

    Then press the reset button in LP, and you can the mass erase command executed.

    Now, MCU has entered into BSL mode:

    Regards,

    Zoey

  • By the way, thank you for the compliment. This document is primarily intended for the low-cost MSPM0 series that lack hardware-based features. I believe the MSPM0L1117 offers a more extensive set of security features—including the ability to disable the debug port with a password.

**Attention** This is a public forum