SLAA450G April   2010  – April 2020


  1.   Creating a Custom Flash-Based Bootloader (BSL)
    1.     Trademarks
    2. 1 5xx and 6xx Bootloader Customization
      1. 1.1 BSL Memory Layout
        1. 1.1.1 Z-Area
        2. 1.1.2 BSL Reserved Memory Locations
      2. 1.2 Device Start-up Sequence
        1. 1.2.1 BSL Protect Function
          1. Protection of BSL Memory
          2. Checking for BSL Invoke
      3. 1.3 TI-Supplied BSL Software
        1. 1.3.1 Software Overview
        2. 1.3.2 Software File Details
          1. BSL430_Low_Level_Init.s43 (IAR) / BSL430_Low_Level_Init.asm (CCS)
          2. BSL_Device_File.h
          3. lnk430FXXXX_BSL_AREA.xcl (IAR) / MSP430Fxxxx_BSL.cmd (CCS)
        3. 1.3.3 Known Limitations in CCS CSL Code Example
          1. Memory Allocation of BSL Code Under Linker Command File
          2. BSL Functions Supported in the Default Setting Project
          3. How to Accomodate Full Function of BSL
          4. Using Modified boot_hook.h and boot.c (CCS Only)
      4. 1.4 Creation of Custom Peripheral Interface
        1. 1.4.1 PI_init ()
        2. 1.4.2 PI_receivePacket()
        3. 1.4.3 PI_sendData(int bufSize)
      5. 1.5 BSL Development and Debug
        1. 1.5.1 Development and Testing
        2. 1.5.2 Special Notes and Tips
        3. 1.5.3 USB BSL External Oscillator Frequency
    3. 2 G2xx Bootloader Creation and Customization
      1. 2.1 Target System Specification
      2. 2.2 BSL Specification
        1. 2.2.1 Functionality
          1. Entry Sequence
          2. Synchronization
          3. Erasing Previous Flash Content
          4. Receiving and Writing New User Data
          5. Data Verification
        2. 2.2.2 Memory Footprint
        3. 2.2.3 Peripherals
      3. 2.3 Implementation
        1. 2.3.1 BSL Assembler Code
          1. Save DCO Calibration Data
          2. Linker Command File
            1. Locating the Linker Command File
            2. Modify Linker File
            3. Force the IDE to Use Custom Linker File
          3. Project Settings
        2. 2.3.2 User Application
      4. 2.4 BSL Operation
        1. 2.4.1 Hardware Setup
        2. 2.4.2 Connection to Host
          1. Determining COM Port
          2. Setup of COM Port
        3. 2.4.3 Operate BSL - Standard Sequence
        4. 2.4.4 Create New Code to Download Through BSL
          1. Create Custom Application
          2. Save Calibration Data
          3. Make User Application Code a BSL Update File
            1. Using CCS
            2. Using IAR
          4. Obtaining XOR Checksum
            1. Send User Data
            2. Read Checksum
            3. Send Acquired Checksum
            4. Verify Data
            5. Save Checksum
        5. 2.4.5 Getting Ready for Production
    4. 3 Frequently Asked Questions (FAQ)
  2.   Revision History

Creating a Custom Flash-Based Bootloader (BSL)

MSP430F5xx and MSP430F6xx devices ship with a standard TI BSL. As the TI BSL programmed in Flash memory, the BSL can be reprogrammed and customized. A custom BSL can allow for the creation of custom communication interfaces, start-up sequences, and other possibilities.

This document describes the basics of the BSL memory and describes the TI standard BSL software, so that it can be reused in custom projects. This document also describes a small demonstration BSL that can be used on MSP430G2xx devices. An entry sequence starts the code update and allows the new user code to be sent and stored in flash. A one-byte feedback is provided to indicate status. TA0-based UART communication is used for entry sequence, data, and feedback.

The source code and the firmware image are available in the Custom MSP430 Bootloader package. Note that there is not always a single BSL version programmed for one specific device, and some BSL versions have been programmed for several devices. To obtain complete information which BSL version belong with which device, see Section 5 in the MSP430™ Flash Device Bootloader (BSL) User's Guide.

Project collateral and associated source discussed in this application report can be downloaded from the CUSTOM_BSL430 link at Bootloader (BSL) for MSP low-power microcontrollers.