SLAU319AF July 2010 – September 2022
To invoke the BSL from a running application, set the program counter to the address where the BSL is located. For the MSP430F5xx and MSP430F6xx devices, the BSL is in memory location 0x1000. For the MSP430x1xx, MSP430x2xx, and MSP430x4xx devices, see Section 5.
When the BSL runs, the stack is always reset, and RAM is cleared. Interrupts are not disabled by the BSL, so the application must disable interrupts before invoking the BSL. TI recommends clearing the configuration of any module registers that are used in the BSL application, because the configuration for the external application can interrupt the BSL application and cause unexpected behavior. One example is that in the USB-enabled MCUs with an USB BSL, the Timer_B module is used to identify the frequency of the high-frequency crystal. If Timer_B is also used in the external application and is not cleared before jumping to the BSL application, unexpected behavior can occur.
The location 0x1000 can be called as a C function, as in the following example code:
__disable_interrupt(); // disable interrupts
((void ( * )())0x1000)(); // jump to BSL