Exploring the MSP430 tool chain: Part 3 – Programming with the MSP430 Bootstrap Loader (BSL)

Other Parts Discussed in Post: MSPBSL

This is the third entry of a five-part series to help you learn more about our robust MSP430 MCU tool chain. Don’t miss Parts 1 and 2 on this blog from past weeks, because this week we focus on MSP430 target boards.

The MSP430™ Bootstrap Loader (BSL) is a program built into each MSP430 microcontroller for the purpose of reading and writing to memory via UART or USB. It enables users to communicate with embedded memory in the MSP430 device during the prototyping phase, final production and in service. Both the programmable memory (flash memory) and the data memory (RAM) can be modified as required.

The Bootstrap Loader can be divided into two major types: ROM-based BSLs found in the MSP430F1x/2x/4x and FR2x/4x/5x/6x families, and flash-based BSLs found in MSP430F5x and F6x devices. Though similar, both BSLs have a different protocol and command structure. In addition, the flash-based BSLs can be overwritten with a new program, for instance a BSL which communicates via I2C. If the device is secured by disabling JTAG, it is still possible to use the BSL. Access to the MSP430 memory via BSLs is protected against misuse by a user-defined password.

Have you ever heard of the MSP430 MCUBSL tool (known as the "BSL Rocket")? It is a low-cost programmer for MSP430 MCUs designed to allow communication to MSP430 BSLs via Virtual COM ports. It is completely open source and the firmware can be compiled and run on either TI Target Socket Boards, or third-party produced boards. The programming adapter is compatible to all existing MSP430F5x/6x devices which feature a UART or I2C BSL firmware. Click here for how to get started and click here to learn how to use BSL Rocket with our MSP430F1x/F2x/G2x/F4x devices.

 In order to make communication with the BSL easier, TI released the MSPBSL_Library as an Open Source Project on Github. This library is a project that is designed to allow developers to create PC-side applications for Windows, Linux and Mac OS without having to focus on lower-level communication layers. This library encapsulates all the complexity of communication behind an easy-to-use API with being cross platform and object oriented.

For more information, check out this helpful documentation below: