Part Number: MSPM0L1117
Is it possible for the BSL to override the static write protection provided by SYSCTL firewall (FRXPROTMAINSTART & FRXPROTMAINEND) to program a flash sector? I am using the following firewall settings:
SYSCTL->SECCFG.FRXPROTMAINSTART = 0x4000
SYSCTL->SECCFG.FRXPROTMAINEND = 0x4400
SYSCTL->SECCFG.FWENABLE |= (SYSCTL_FWENABLE_FLRXPROT_ENABLE | SYSCTL_FWENABLE_KEY_VALUE)
After setting-up and enabling the firewall, I invoke the BSL and try to erase 0x4000-0x43FF. In response to the erase command I get FAILILLADDR=Fail:
80 01 00 12 3A 61 44 DE // connect
00 // ack
80 01 00 19 B2 B8 96 49 // device info
00 // ack
08 19 00 31 00 01 00 01 00 00 00 00 01 00 F4 1D 18 02 00 20 00 00 00 06 00 00 00 06 FA 15 72 C4 // device info
80 21 00 21 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 02 AA F0 3D // unlock
00 // ack
08 02 00 3B 00 38 02 94 82 // unlock success
80 09 00 23 00 40 00 00 FF 43 00 00 26 15 58 4A // erase 0x4000 - 0x43FF
00 // ack
08 04 00 3A F0 40 00 F3 04 90 04 // FAILILLADDR = Failed
The 40 00 is, I believe, the FAILILLADDR = Failed.
Is there a way the BSL can override the static write protection? Otherwise it seems the firewall settings persist until INITDONE transistions back to 0 but what conditions cause INITDONE to transition from 1 back to 0? So far, the only way I can get INITDONE to transition from 1 to 0 is by doing a Mass Erase with my debug probe. For my product I would like the ability to protect keys with static firewall protection however, I would like a way for an authorized user to override the firewall and change the key periodically.
BTW, I believe there is a typo in MSPM0 BSL User Guide SLAU887A – FEBRUARY 2023 – REVISED NOVEMBER 2025 Section 4.4.2 Detailed Error. The length for Detailed Error message is listed as 0x02 but the BSL code actually sends a length of 0x04 (RSP + D1 + D2 + D3).