Part Number: MSP432P4111
There is exhaustive documentation how to utilize and/or change the resident bootloader (BSL) on the device by branching to 0x20200 (see e.g. https://www.ti.com/tool/MSPBSL).
However, what if such calls fail to produce the expected response?
BSL does a complete system setup of its own, including the clock system and interrupt vectors.
But after much trial and error, I have discovered two issues, which are absolutely deadly with respect to BSL invocation.
- if there is previous unfinished output pending in EUSCI_A0 (loading TXREG and not waiting for output completely serialized onto the TXline), even disabling the module (prematurely) will leave something in a volatile state, incompatible with BSL startup
- initially using SYSTICK services without disabling the module and associated interrupts also is inpalatable for BSL startup.
After introducing a forced delay to allow any characters to leave the TX shift register and disabling the SYSTICK module, BSL will startup ok.
;-)