SLAA457B September   2013  – October 2018 MSP430F5500 , MSP430F5501 , MSP430F5502 , MSP430F5503 , MSP430F5504 , MSP430F5505 , MSP430F5506 , MSP430F5507 , MSP430F5508 , MSP430F5509 , MSP430F5510 , MSP430F5513 , MSP430F5514 , MSP430F5515 , MSP430F5517 , MSP430F5519 , MSP430F5521 , MSP430F5522 , MSP430F5524 , MSP430F5525 , MSP430F5526 , MSP430F5527 , MSP430F5528 , MSP430F5529 , MSP430F5630 , MSP430F5631 , MSP430F5632 , MSP430F5633 , MSP430F5634 , MSP430F5635 , MSP430F5636 , MSP430F5637 , MSP430F5638 , MSP430F5658 , MSP430F5659 , MSP430F6630 , MSP430F6631 , MSP430F6632 , MSP430F6633 , MSP430F6634 , MSP430F6635 , MSP430F6636 , MSP430F6637 , MSP430F6638 , MSP430F6658 , MSP430F6659 , MSP430FG6425 , MSP430FG6426 , MSP430FG6625 , MSP430FG6626

 

  1.   Starting a USB Design Using MSP430™ MCUs
    1.     Trademarks
    2. 1 USB and the Art of Making Something Complex Look Simple
      1. 1.1 What Has Made USB So Successful?
      2. 1.2 But It Looks So Simple!
      3. 1.3 TI's Approach for MSP430 USB
    3. 2 MSP430 USB Silicon
      1. 2.1 How MSP430 Devices are Documented
      2. 2.2 USB-Equipped MSP430 Derivatives
      3. 2.3 MSP430 USB Module
      4. 2.4 USB Certification of the Silicon
    4. 3 Software
      1. 3.1 USB Developers Package: Overview
      2. 3.2 USB API Stacks: Features
      3. 3.3 MSP430 USB Descriptor Tool
      4. 3.4 Host Software, and the Java HID Demo App
      5. 3.5 USB API Programmer's Guide and Examples Guide
      6. 3.6 MSP430 USB Field Firmware Upgrade Tools
    5. 4 MSP430 USB Hardware Design
      1. 4.1 TI Reference Design for USB Interface
      2. 4.2 Selecting a Power Configuration
      3. 4.3 Selecting a Clock Configuration
        1. 4.3.1 Choosing a Source
        2. 4.3.2 Choosing a Frequency
      4. 4.4 Other Reference Design Commentary
    6. 5 MSP430 USB Software Design
      1. 5.1 How to Choose a USB Device Class
      2. 5.2 How to Select a Vendor ID (VID) and Product ID (PID)
        1. 5.2.1 What are the VID and PID?
        2. 5.2.2 How are They Chosen (or Obtained)?
        3. 5.2.3 Using VIDs and PIDs During Development
    7. 6 Getting Started: Evaluating MSP430 USB
      1. 6.1 Software Development Environments
      2. 6.2 F5529 LaunchPad Development Kit
      3. 6.3 MSP430F5529 USB Experimenter's Board
      4. 6.4 FET Target Boards
    8. 7 More Information
  2.   A USB Glossary
  3.   Revision History

MSP430 USB Field Firmware Upgrade Tools

A common use of USB is to enable end users to update the firmware. Among the advantages of this is that bug fixes can be pushed proactively, increasing user satisfaction and reducing returns.

The vast majority of MSP430 derivative devices have an on-chip bootloader (BSL). The BSL is a program that resides in a special protected location in MSP430 flash memory and facilitates communication with an external host. Like tools with JTAG access, it can read and write to the MCU's flash memory. But unlike JTAG tools, it cannot be used to emulate code.

The BSL interface is often a UART, or sometimes I2C. On the USB-equipped derivatives listed in Table 1, the BSL's interface is USB.

In addition to field updates, the BSL can be used for production programming. It also plays an important role when JTAG access is not available. For example, it can be used to recover the device when something has corrupted internal flash.

Because of potential use in the field, the BSL is password-protected to prevent unwanted access to proprietary application software.

The BSL must be invoked, meaning that CPU execution must be transferred to it. On the USB BSL, this can happen in one of three ways:

  • The application software in main flash can jump into it
  • A BOR reset while the reset vector is blank
  • A BOR reset while the PUR pin is held high externally – perhaps by way of a pushbutton switch

Field applications of the USB BSL are likely to use the first method, because a main application is already in control of the device. In this way, the developer can design a simple end user experience for the update. However, if main software becomes corrupted, this method might not work.

The second method is used during production of a device based on the MSP430 MCU, because the reset vector is blank when it leaves TI's factory; you can simply assemble the board and attach the device to a USB host, and it will enumerate under BSL control. This method also plays an important role in recovering from interrupted BSL sessions, because the reset vector is left blank throughout the update process.

The third method is the most reliable but often requires the additional cost of a pushbutton.

The BSL is designed to automatically recognize four frequencies applied to XT2:

  • 4 MHz
  • 8 MHz
  • 12 MHz
  • 24 MHz

If using BSL for production programming, you must use one of these four frequencies. If using BSL after a JTAG session has been performed, you can use that JTAG session to program a modified version of the BSL that can recognize your frequency.

All of this is described in Field Firmware Updates on MSP430 MCUs. Supporting this application note, the MSP430 USB Developers Package includes the Python-based Firmware Updater application. This application is built on the open source package python-msp430-tools. It can be used from a command line, or a GUI can be built on top of it.