Microchip Technology Inc

8-bit Bootloader

Summary

As embedded devices evolve in both capability and connectivity so does the need to enable remote application updates. Not limited to a single communications protocol, embedded connectivity takes many forms and is essential in growing markets including the Internet of Things (IoT). Remote firmware updates allow for simplified and efficient upgrades to an existing application while increasing a products useful life. The addition of new features to a product can be used to maintain a competitive advantage against new market offerings or unlock existing fee-based premium content. Additionally, software fixes can be quickly propagated to ensure reliable system operation.

To take advantage of this connectivity, bootloader firmware must reside within memory to provide self-programming capability to the microcontroller. Developing custom bootloader code can be a complex and time consuming process and to assist developers with this, Microchip provides a Bootloader Code Generator. Using a simple GUI interface, developers are able to create bootloader firmware designed to suit their application needs. The Bootloader Generator creates a custom assembly source file which can be programmed into the microcontroller’s memory. By tailoring the bootloader code to the specific application, the code size is minimized ensuring maximum space for application code.

Bootloader Generator Application

 

To complement the Bootloader Generator, Microchip also provides a Bootloader Host application. This tool is used to transfer new application code to the embedded device that contains the bootloader code. This GUI application can communicate with the target device through either UART, I2C, USB, or Ethernet protocols. The Bootloader Host application can be used to program the Flash memory for 8-bit PIC MCU’s and also supports EEPROM writes.

Bootloader Host Application

 

In addition to saving development time and cost, these tools also assist engineers with creating secure and reliable bootloaders. This includes detecting and recovering from a failed boot load as well as restricting read access of the Program Memory. The use of these tools will help ensure robust operation that will greatly enhance the flexibility of an embedded application whether it is currently in development or already being used by a customer.

Key Features

Bootloader Generator Application

  • GUI based interface with drop down selection menus
  • Minimizes code space required for bootloader code
  • Generates an assembly source file that will:
    • Determine if a valid application is loaded
    • Determine if it is time to boot load or run the end application
    • Communicate with the host
    • Erase and rewrite the device
    • Transfer control to the end application
    • Detect a failed boot load and recover
    • Allow or deny host read access to Program Memory
    • Protects from accidental self over-write of bootloader code

Bootloader Host Application

  • Multiple Communication Protocols
    • UART
    • I2C
    • USB (Future Availability)
  • Checksum verification to ensure correct programming
  • Flash reading to verify correct programming
  • Supports Flash and EEPROM writes

Bootloader Host User Interface