The bootloader (BSL) on MSP430™ microcontrollers (MCUs) lets users communicate with embedded memory in the MSP MCUs during the prototyping phase, final production, and in service. This is done through standard interfaces such as UART, I2C, SPI, and USB. Both the programmable memory (Flash/FRAM) and the data memory (RAM) can be modified as required.
Below are the steps needed in order to both understand and use the MSPBSL effectively across the MSP portfolio. For the most up to date information on what features the BSL on your device supports or which interface methods are needed to communicate with the BSL, please see “TABLE 1. Overview of BSL Features” which is contained within the BSL User Guides linked to in STEP 1.
STEP 1: Understanding the MSP Bootloader (BSL)
Some applications require a customized bootloader to meet requirements outside of the BSL provided. Additionally, some MSP MCUs, such as the MSP430F5xxx, MSP430F6xxx and SimpleLink MSP432 MCU families, allow the user to customize the factory programmed BSL; however, most devices have a BSL in ROM that cannot be changed. For these devices an alternative BSL solution such as a main memory bootloader would need to be used to customize the boot loading process
STEP 2: Updating Application Firmware with the MSP BSL
Once a basic understanding of the BSL is achieved, one will want to communicate and/or program a device using the BSL. This can be done in several ways outlined below.
Communication Bridge – Hardware for BSL to PC Connection
In order to connect the MSP430 MCU's BSL to a PC, some additional hardware may be needed. The following are a few options for connecting the MSP430 BSL to a PC.
The MSP430-BSL Programmer ("BSL Rocket") is a bridge between the MSP430 BSL and a USB connection to a PC. The MSP430-BSL Rocket is a collaboration between Olimex LTD and Texas Instruments. The MSP430-BSL Programmer’s PCB and firmware are open source, and it supports UART, I2C and SPI communication.
The MSP-FET programmer and debugger also supports BSL interfaces for programming.
The MSP-GANG Production Programmer can program up to eight MCUs at the same time also supports the UART BSL interface.
A USB design on a custom board may also be used to access the USB BSL on MSP430 MCU devices that contain a USB peripheral. A Python-based GUI is also provided to help with USB BSL firmware upgrades on MSP430 devices. This software is part of the USB developer’s package linked below.
BSL Scripter – PC Side Software
The BSL Scripter is a command line program used to communicate with the MSP430 MCU BSL on a PC operating Windows®, Linux® and macOS® X through a communication bridge. Supported communication bridges include the MSP-BSL programmer ("BSL Rocket"), the MSP-FET, and the USB BSL on certain MSP430 flash-based devices. See the BSL Scripter User Guide for more information on how to use this program. Within the BSL Scripter Software download, BSLDEMO2 (deprecated command line tool for BSL) is also included for older devices not supported by the BSL Scripter. BSLScipter is available standalone and integrated within UniFlash v4.6.0 or greater.
Embedded Programming Solutions
Some applications do not have access to a PC for programming an MSP430 MCU via BSL. A Host BSL driver can be easily written to use the MSP430 BSL protocol over UART, I2C, or USB. The following application notes demonstrate this capability. Custom solutions for a chosen embedded host should follow the BSL protocol found within the BSL User’s Guides in step 1.
MSP430™ Bootloader With SimpleLink™ MCUs is the App note that provides the software to have embedded host for MSP430 bootloader. The project is based on the host being implemented using SimpleLink MSP432P4 MCU.
MSP430™ Bootloader With Sitara™ Embedded Linux Host is the Apps note that provides the software to have embedded host for UART based MSP430 bootloader. The project is based on the host being implemented using Sitara Embedded Linux Host.
MSP430 ™ Firmware Updates Over I2C Using Linux ® is the App note that provides the software for an embedded host to I2C based MSP430 bootloader. The project is based the host being implemented using TI BeagleBone Black running stock Debian Linux distribution.
STEP 3: Customizing the MSP BSL
Some applications require a customized bootloader to meet requirements outside of the BSL provided. Additionally, some MSP MCUs, such as the MSP430F5xxx, MSP430F6xxx and SimpleLink MSP432 MCU families, allow the user to customize the factory programmed BSL; however, most devices have a BSL in ROM that cannot be changed.
Custom BSL Documentation
On the flash based MSP430F5xxx and MSP430F6xxx MCU families, developers can change the BSL source code to add different peripheral interfaces, custom entry sequences, or other custom features to the standard BSL. Use the BSL source code linked below for reference when customizing the BSL. All available BSL firmware images and BSL source code are contained within the BSL430-SOURCE software package. BSL source code is only available for the most recent BSL version.
A similar download for SimpleLink MSP432P4xx MCUs is available.
Source code for MSP432E4 MCUs is available within the SimpleLink MSP432E4 SDK
Main Memory BSLs
MSP430 MCUs have two different main memory (application-side) BSLs that can be customized to an application's needs. These solutions do not replace the BSL that is included with the device, but sit on top of the application software in order to customize a BSL.
For flash-based MSP430 MCUs, MSPBOOT is offered:
For FRAM-based MSP430 MCUs, MSPFRBOOT is the offered featuring an over-the-air update option:
Secure Firmware Updates
Some applications are in need of secure firmware updates. The following has been made available for these situations.
The Crypto-Bootloader (CryptoBSL) is a custom bootloader that was developed and implemented on MSP430FR59xx and MSP430FR69xx FRAM microcontrollers. This bootloader uses cryptographic functions to enable increased security for in-field firmware updates.