USB DFU - The USB Device Firmware Upgrade standard

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(USB DFU Interfaces)
m (linkfix)
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{Languages|USB DFU - The USB Device Firmware Upgrade standard}}
 +
 
USB Device Firmware Upgrade (DFU) is an official USB device class specification of the USB Implementers Forum.
 
USB Device Firmware Upgrade (DFU) is an official USB device class specification of the USB Implementers Forum.
  
Line 7: Line 9:
 
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
 
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 [http://www.openpcd.org/ OpenPCD] project has used it for their Free RFID readers.
+
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 [http://www.openpcd.org/ OpenPCD] project has used it for their Free RFID readers.
  
== OpenMoko and USB DFU ==
+
== 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.
+
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 host utility ===
 
=== USB DFU host utility ===
Line 25: Line 27:
 
==== 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 manifestation phase).  We are using this mechanism for the u-boot [[partition]] to prevent users from "bricking" their device if something goes wrong during the transfer.
+
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).  We are using this mechanism for the u-boot [[Partitions|partition]] to prevent users from "bricking" their device if something goes wrong during the transfer.
  
For other [[partitions]] (kernel, rootfs, ...) however, future devices will have more NAND than SDRAM.  Thus, we implement a download mechanism according Chapter 6.1 Mechanism "2." for all non-bootloader partitions.
+
For other [[Partitions|partitions]] (kernel, rootfs, ...) however, future devices will have more NAND than SDRAM.  Thus, we implement a download mechanism according Chapter 6.1 Mechanism "2." for all non-bootloader partitions.
  
 
==== USB DFU Interfaces ====
 
==== USB DFU Interfaces ====
  
The DFU in the Neo1973 has a USB Alternate Interface name "RAM 0x32000000" number 0 for downloading executable code into RAM (address 0x32000000) and executing it. The rest of the Alternate Interfaces are for each internal NAND flash [[partition]].
+
The DFU in the Neo1973 has a USB Alternate Interface name "RAM 0x32000000" number 0 for downloading executable code into RAM (address 0x32000000) and executing it. The rest of the Alternate Interfaces are for each internal NAND flash [[Partitions|partition]].
  
 
{{Languages|USB DFU}}
 
{{Languages|USB DFU}}
[[Category:Hardware]]
+
 
[[Category:USB| ]]
+
[[Category:Flashing Openmoko]]
 +
[[Category:USB|USB]]

Latest revision as of 15:45, 22 October 2008


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

[edit] 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.

[edit] USB DFU host utility

Please see dfu-util for more information.

[edit] USB DFU on the Neo1973

The DFU implementation is part of our version of the u-boot bootloader.

You can use it with any USB DFU 1.1 compliant utility. We also have developed our own dfu-util program.

[edit] 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). We are using this mechanism for the u-boot partition to prevent users from "bricking" their device if something goes wrong during the transfer.

For other partitions (kernel, rootfs, ...) however, future devices will have more NAND than SDRAM. Thus, we implement a download mechanism according Chapter 6.1 Mechanism "2." for all non-bootloader partitions.

[edit] USB DFU Interfaces

The DFU in the Neo1973 has a USB Alternate Interface name "RAM 0x32000000" number 0 for downloading executable code into RAM (address 0x32000000) and executing it. The rest of the Alternate Interfaces are for each internal NAND flash partition.

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 host utility

Please see dfu-util for more information.

USB DFU on the Neo1973

The DFU implementation is part of our version of the u-boot bootloader.

You can use it with any USB DFU 1.1 compliant utility. We also have developed our own dfu-util program.

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). We are using this mechanism for the u-boot partition to prevent users from "bricking" their device if something goes wrong during the transfer.

For other partitions (kernel, rootfs, ...) however, future devices will have more NAND than SDRAM. Thus, we implement a download mechanism according Chapter 6.1 Mechanism "2." for all non-bootloader partitions.

USB DFU Interfaces

The DFU in the Neo1973 has a USB Alternate Interface name "RAM 0x32000000" number 0 for downloading executable code into RAM (address 0x32000000) and executing it. The rest of the Alternate Interfaces are for each internal NAND flash partition.