Field Firmware Update over USB
Many micro-controller-based products can now benefit from the ability of updating that product’s firmware in the field after it has shipped. This firmware update can be to address bugs, or add new features, or both. This is both a value proposition for the customer as well as a potential source of additional revenue for the manufacturer.
Modern micro-controllers, such as those based on the ARM Cortex-Mx series, often store their running firmware in flash memory that can be updated many times over the life of the hardware. Even many older ram-based micro-controllers or current DSP chips start up by reading their firmware from an external serial flash part.
All such devices can have their firmware updated in the field, provided that there is some mechanism to connect the device to the user’s computer or, in some cases, directly to the internet itself.
USB is the dominant bus technology for connecting any type of digital electronic device to a computer, or increasingly with USB On-The-Go, to each other. USB has the advantage that it can be used to provide power to the device, which for a battery power device, offers a source of battery-charging current. In addition, it is a highly flexible digital communications mechanism. Its main strength, however, is that it is a standard, adopted by virtually all computer, smart phone, gaming device, etc.
Within the different supported types of communication in USB, several are well suited to firmware update. The USB-IF (the USB standards body) has defined a number of different types of communication and categorized these types as “Classes”. A given USB device can also support a number of different simultaneously used “interfaces”, each presenting a different Class. These Classes include HID (“Human Interface Device”), Storage, Communications, Audio, video and “vendor specific”. There is also a class (“DFU”) specifically for Device Firmware Update.
While the DFU class is useful for some devices, especially a device that makes no other use of USB, many vendors find that it is more beneficial to combine the Firmware Update function into the larger function that their particular device makes of USB. In this way, the firmware update function can be rolled into other product software that runs on the host (i.e. Macintosh, Windows PC, Linux, etc.)
With some products, this update process can be completely transparent to the end-user (think of certain cable Set-Top boxes). With others, such an update can be offered to the user with details of what a given update fixes, changes or enhances. This latter is clearly required is some additional functionality is being offered for a charge.
For example, if your product is a special Human Interface device (HID) which has special host software to manage and configure it (e.g. a pointing device with adjustable sensitivity), the firmware update function can be combined into the host software. A new version of host software could be downloaded from the Web and could include new firmware for the device as well as host software changes to take advantage of the firmware changes. The USB HID Class has a special feature called “Vendor Specific HID” that allows special data such as configuration or firmware update to flow over the USB in addition to the more normal mouse and keyboard data. An advantage of this Vendor Specific HID interface is that it requires no device drivers or INF files on either Mac OS X or Windows.
How does all of this work? See the “Boot Loader/Firmware Update” article.
If you want to add Field Firmware Update to your product, talk to Bramson Welch & Associates.