SLAA600E June   2013  – January 2024

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Glossary
    2. 1.2 Conventions
  5. 2Implementation
    1. 2.1 Main
    2. 2.2 Application Manager
      1. 2.2.1 Boot and Application Detection
        1. 2.2.1.1 Force Bootloader Mode
        2. 2.2.1.2 Application Validation
        3. 2.2.1.3 Jump to Application
      2. 2.2.2 Vector Redirection
      3. 2.2.3 Interrupt Vectors in Flash Devices
      4. 2.2.4 Dual Image Support
        1. 2.2.4.1 Jumping to Application in Dual Image Mode
    3. 2.3 Memory Interface (MI)
      1. 2.3.1 Dual Image Support
    4. 2.4 Communication Interface (CI)
      1. 2.4.1 Physical-DataLink (PHY-DL)
        1. 2.4.1.1 I2C
          1. 2.4.1.1.1 Time-out Detection
        2. 2.4.1.2 UART
        3. 2.4.1.3 SPI
        4. 2.4.1.4 CC110x
        5. 2.4.1.5 Comm Sharing
      2. 2.4.2 NWK-APP
        1. 2.4.2.1 BSL-Based Protocol
          1. 2.4.2.1.1 Security
          2. 2.4.2.1.2 BSL-Based Protocol using CC110x
          3. 2.4.2.1.3 Examples Using I2C
          4. 2.4.2.1.4 Examples Using UART or CC110x
  6. 3Customization of MSPBoot
    1. 3.1 Predefined Customizations
  7. 4Building MSPBoot
    1. 4.1 Starting a New Project
      1. 4.1.1 Creating a New MSPBoot Project
        1. 4.1.1.1 MSPBootProjectCreator.pl
        2. 4.1.1.2 Importing Project Spec File in CCS
        3. 4.1.1.3 Modifying Generated Source Code
          1. 4.1.1.3.1 Modifying MSPBoot Main.c
          2. 4.1.1.3.2 Modifying TI_MSPBoot_Config.h
          3. 4.1.1.3.3 Modifying TI_MSPBoot_CI_PHYDL_xxxx_xxx.c
          4. 4.1.1.3.4 Modifying TI_MSPBoot_AppMgr.c
          5. 4.1.1.3.5 Modifying Application Main.c
          6. 4.1.1.3.6 Modifying TI_MSPBoot_Mgr_Vectors_xxxx.c
      2. 4.1.2 Loading Application Code With MSPBoot
        1. 4.1.2.1 Convert Application Output Images
    2. 4.2 Examples
      1. 4.2.1 LaunchPad Development Kit Hardware
      2. 4.2.2 CC110x Hardware
      3. 4.2.3 Building the Target Project
      4. 4.2.4 Building the Host Project
      5. 4.2.5 Running the Examples
  8. 5References
  9. 6Revision History

Introduction

MSP430 MCUs are equipped with the useful Bootloader (BSL) that allows for a very simple way to do field upgrades. For more information about the MSP430 BSL, see the MSP430™ Flash Device Bootloader (BSL) User's Guide and Creating a Custom Flash-Based Bootloader (BSL). The BSL is customizable in MSP430F5xx and MSP430F6xx devices, because it resides in flash.

Other families (for example, MSP430G2xx) have a ROM-resident BSL that supports only UART and cannot be modified to support I2C or other interfaces. Given these limitations, it becomes necessary to create a bootloader that resides in main memory and allows for an easy implementation of the application.

This application report describes the implementation of the bootloader named MSPBoot with the following characteristics:

  • Small footprint (less than 4KB in size required)
  • 20-bit and 16-bit incorporation for large memory model and small memory model devices, respectively
  • Supports USI, USCI, and eUSCI peripherals
  • UART communication offers the most simple wired interface using a small memory space
  • SPI bus offers over-the-air downloads (using the CC110x) at a slightly larger footprint
  • Different options allow for customizable levels of robustness
  • Optional dual-image support in case of communication interruption
  • Allows for use of all interrupts in application
  • Application can optionally reuse the low-level communication drivers from the bootloader or implement its own drivers
  • Configurable entry sequence
  • Optional validation of application using CRC-CCITT
  • Source code is available, allowing for additional customizations

Source code for the bootloader with different sample configurations, application examples, and host examples is included to allow for an easy testing, customization, and implementation. Knowledge of I2C, UART, and SPI specifications, as well as sub-1 GHz RF communication protocol, is assumed.