Part Number: MSPM0C1104
Other Parts Discussed in Thread: SYSCONFIG
I have attempted to lock my device using the system configuration tool with the following generated code.
PLACE_IN_MEMORY(".BCRConfig")
const BCR_Config BCRConfig =
{
.bcrConfigID = 0x3,
.debugAccess = BCR_CFG_DEBUG_ACCESS_DIS,
.swdpMode = BCR_CFG_SWDP_EN,
.factoryResetMode = BCR_CFG_FACTORY_RESET_EN,
.staticWriteProtectionNonMain = BCR_CFG_NON_MAIN_STATIC_PROT_DIS,
.staticWriteProtectionMainLow = CFG_DEFAULT_VALUE,
.staticWriteProtectionMainHigh = CFG_DEFAULT_VALUE,
.reserved = 0xFFFFFFFFU,
};
After doing a power cycle the device was locked as described in the MSPM0C manual. The factory reset completed with a positive response. But even after multiple following factory resets and power cycles I cannot flash my device anymore. It responds with this message
Error connecting to the target: Connection to MSPM0 core failed. Possible root causes: 1) Debug access within NONMAIN was disabled or enabled with password. 2) Peripheral mis-configuration (e.g improper watchdog or clock). To see a more detailed diagnostic of the issue, please press the 'Read boot diagnostic' button.
The boot diagnostics response:
Possible root causes from diagnostic reading:
1) Nested exception (e.g double hard fault or NMI) can be caused by illegal CPU activity such as invalid address modification
2) Debug access has been disabled
Possible recovery method:
1) Perform a DSSM factory reset with or without password
2) Power cycle or reset the device
I can connect to the SEC_AP and CS_DAP_0 as expected but not to the CORTEX_M0P core.
I did notice that there is a difference in the BCR_Config structure and the supposed layout of the corresponding registers describd in the manual. Since the factory reset supposedly executed successfully, I assumed the generated code to be correct and the manual to be incorrect.
The generated code has no reserved data gaps and does not consider the offset between BOOTCFG0 and BOOTCFG3 for instance.

Is my device bricked? Why?
Why is the memory layout different between the manual and the generated code?


