USB DFU - The USB Device Firmware Upgrade standard

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Some notes on USB Device Firmware Upgrade)
 
m (Type of DFU Download)
Line 19: Line 19:
 
==== Type of DFU Download ====
 
==== Type of DFU Download ====
  
The Neo1973 has enough SDRAM to accomodate a download mechanism according to Chapter 6.1 Mechanism "1." (to receive the entire image into a buffer and perform the actual programming during the manifesetation phase).  Thus, we can first transfer the firmware, then do checksum verification, and finally flash it into the NAND flash.
+
The Neo1973 has enough SDRAM to accomodate a download mechanism according to Chapter 6.1 Mechanism "1." (to receive the entire image into a buffer and perform the actual programming during the manifestation phase).  Thus, we can first transfer the firmware, then do checksum verification, and finally flash it into the NAND flash in one go.
  
 
==== USB DFU Interfaces ====
 
==== USB DFU Interfaces ====

Revision as of 14:05, 19 February 2007

USB Device Firmware Upgrade (DFU) is an official USB device class specification of the USB Implementers Forum.

It specifies a vendor and device independent way of updating the firmware of a USB device. The idea is to have only one vendor-independent firmware update tool as part of the operating system, which can then (given a particular firmware image) be downloaded into the device.

In addition to firmware download, it also specifies firmware upload, i.e. loading the currently installed device firmware to the USB Host.

The current version is 1.1, it can be found for free download at http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf

Despite its clear architecture and DFU being an official USB standard, very few companies are known to have implemented it in their products. In the Free Software / Hardware area, most notably the [OpenPCD] project has used it for their Free RFID readers.

Contents

OpenMoko and USB DFU

Since OpenMoko is a big supporter of open standards and protocols, it has chosen USB DFU as the way to do "firmware" (actually, general software) updates on its official devices.

USB DFU on the Neo1973

The DFU implementation is part of our version of the u-boot Bootloader. Once the implementation has stabilized and received some cleanups, we are trying to merge this into the upstream u-boot tree.

Type of DFU Download

The Neo1973 has enough SDRAM to accomodate a download mechanism according to Chapter 6.1 Mechanism "1." (to receive the entire image into a buffer and perform the actual programming during the manifestation phase). Thus, we can first transfer the firmware, then do checksum verification, and finally flash it into the NAND flash in one go.

USB DFU Interfaces

The Neo1973 has the following USB Interfaces for DFU:

  1. RAM. This downloads executable code into RAM (address 0x32000000) and executes it
  2. the u-boot bootloader partition in NAND flash
  3. the u-boot environment partition in NAND flash
  4. the kernel partition in NAND flash
  5. the splash partition in NAND flash
  6. the rootfs partition in NAND flash.
Personal tools

USB Device Firmware Upgrade (DFU) is an official USB device class specification of the USB Implementers Forum.

It specifies a vendor and device independent way of updating the firmware of a USB device. The idea is to have only one vendor-independent firmware update tool as part of the operating system, which can then (given a particular firmware image) be downloaded into the device.

In addition to firmware download, it also specifies firmware upload, i.e. loading the currently installed device firmware to the USB Host.

The current version is 1.1, it can be found for free download at http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf

Despite its clear architecture and DFU being an official USB standard, very few companies are known to have implemented it in their products. In the Free Software / Hardware area, most notably the [OpenPCD] project has used it for their Free RFID readers.

OpenMoko and USB DFU

Since OpenMoko is a big supporter of open standards and protocols, it has chosen USB DFU as the way to do "firmware" (actually, general software) updates on its official devices.

USB DFU on the Neo1973

The DFU implementation is part of our version of the u-boot Bootloader. Once the implementation has stabilized and received some cleanups, we are trying to merge this into the upstream u-boot tree.

Type of DFU Download

The Neo1973 has enough SDRAM to accomodate a download mechanism according to Chapter 6.1 Mechanism "1." (to receive the entire image into a buffer and perform the actual programming during the manifesetation phase). Thus, we can first transfer the firmware, then do checksum verification, and finally flash it into the NAND flash.

USB DFU Interfaces

The Neo1973 has the following USB Interfaces for DFU:

  1. RAM. This downloads executable code into RAM (address 0x32000000) and executes it
  2. the u-boot bootloader partition in NAND flash
  3. the u-boot environment partition in NAND flash
  4. the kernel partition in NAND flash
  5. the splash partition in NAND flash
  6. the rootfs partition in NAND flash.