Bootloaders

Overview 

There are many issues to consider when designing bootloaders for embedded systems.
  • How to ensure that the bootloader is never overwritten
  • How to ensure that the programmed image is valid
  • How to insure that the application is independent of the bootloader
  • How to integrate with a target development environment
The basic mode of operation of all HCC bootloaders is to create a highly optimized, small footprint bootstub that resides permanently on the target system. This bootstub is designed never to be erased. It includes the system interrupt table. When the bootloader is not active, interrupts are redirected to a fixed point in the user’s application. The developer is free to select the method by which the system decides to run the bootloader.
 
Actual implementation may vary depending on the target. In certain cases these bootloaders may be secondary bootloaders, as when the target microcontroller supports DFU, for example.
 
 

FAT Bootloader

BL-FAT is a special version of HCC’s already optimized small-footprint FAT file system. It is designed to be used as a simple bootloader.

 
Typical usage is to install BL-FAT as a fixed bootstub in the target; it is never to be erased. On a developer-designed trigger mechanism the bootloader will check an attached SD card (or other similar media) for a new code image. If available, the bootloader will program the image into the device.
 
Because bootstubs need to be toolchain- and target-dependent, the system is designed to be portable and can be delivered as a working project on a range of microcontrollers and toolchains.
 
Supported targets include AT91SAM7, LPC2xxx, MSP430xxxx, STR7xx, STR9, MCF5xxx. Please contact HCC sales at info@hcc-embedded.com for the latest information about your microcontroller, or to request a port for your target.
 
BL-FAT requires <4K code and <1K RAM on an ARM7 device.

USB Device Bootloader

BL-EUSBD-XXX is a bootstub that is used to configure a bootloader that loads a new code image from a host application over a USB connection. It uses a special version of HCC’s EUSBD stack and a simple transfer protocol to minimize overhead.

Typically BL-EUSBD-XXX is installed as a fixed bootstub in the target device, never to be erased. On a developer-designed trigger mechanism the bootloader will accept a new code image from a host and program it into the target.

Because bootstubs are toolchain- and target-dependent, the system is designed to be portable and can be delivered as a working project on a range of microcontrollers and toolchains.

Supported targets include AT91SAM7, AT91SAM9xxx, AT91RM9200, LPC214x, LPC2368, LPC2468, MCF5329, MCF5222x, SR7, STR9 and MAX3421e together with several microcontrollers. Please contact HCC at info@hcc-embedded.com  for the latest information about your microcontroller or to request a port for your target.

On the host side the developer has several options for the download program:

  1. Use HCC’s free sample application that works with libusb, which is a freely available.
  2. Use HCC’s USB Embedded Pipe and one of our free sample applications.
  3. Use another generic USB host interface such as Winusb from Microsoft.

BL-EUSBD-XXX typically requires <4K for code and <1K of RAM on an ARM7 device.

USB Host Bootloader

BL-EUSBH-XXX is a standalone bootstub that can read a new code image from any USB pen drive, and use it to update your target device’s firmware safely. The Bootstub contains a special, read-only version of HCC’s already optimized small-footprint FAT file system, together with HCC’s EUSBH-MS and any EUSBH stack.
 

 
Typical usage is to install BL-EUSBH-XXX as a fixed bootstub in the target device, never to be erased. On a developer-designed trigger mechanism the bootloader will check an attached pen drive for a new image, and if available will program it into the target.
 
Because bootstubs need to be toolchain- and target-dependent, the system is designed to be portable and can be delivered as a working project on a range of microcontrollers and toolchains.
 
Supported targets include AT91SAM92xx, AT91RM9200, LPC2468, MCF5329, MCF5222x and MAX3421e, as well as several microcontrollers. Please contact HCC at info@hcc-embedded.com for the latest information about your microcontroller or to request a port for your target.
 
BL-EUSBH-XXX typically requires <12K for code and <2K of RAM on an ARM7 device.
 
BL-EUSBH-XXX is available in 3 standard variants:
  • BL-EUSBH-EHCI for EHCI compatible host controllers
  • BL-EUSBH-OHCI for OHCI compatible host controllers
  • BL-EUSBH-xxx for non-standard host controllers
The xxx can be any of:
  • MAX3421e
  • ISP1561
  • ISP1761
  • JM16, JM60
  • MCF52221, MCF52223
  • LM3S3768, LM3S3759, LM3S3748, LM3S3748, LM3S3739, LM3S3651

 

Serial Bootloaders

BL-SERIAL-XXX is a bootloader for use with a serial link.

BL-SERIAL-XXX is available for most MSP430 devices. The system consists of a simple protocol to be used over the serial link, together with the appropriate flash programming algorithms.