Since the device firmware is Free Software licensed under GNU GPL,
we encourage and enable users to enhance and adapt the firmware according to
their needs. In order to really benefit from this freedom, we have embedded
an easy mechanism to update the device firmware without any special tools /
adapters / cables / programmers or the like.
The OpenPICC implements the USB Device Firmware Upgrade speficication,
as released by the USB Association. Using this protocol, it is possible to
update the device firmware via special-purpose USB control requests.
A software implementation of the USB DFU host side was already available for
Linux under the name of "dfu-programmer". However, this program did not
implement the true standard, but some vendor-specific dialect of it.
Therefore, dfu-programmer has been enhanced to have full native support
for standard DFU.
The AT91SAM7 microcontroller used in the device contains a USB flash loader
(called SAM-BA) in read-only memory. By setting a jumper on the PCB and
powering up the device for 20 seconds, this loader can be copied into the
first 8kb of flash memory, overwriting the existing content.
So if the DFU loader has become inoperable, e.g. because of bugs in
experimental DFU modifications, SAM-BA can be employed to rescue the system.
Apart from proprietary Windows software by Atmel, there's the Free Software
sam7utils project which provides a host program called 'sam7' to interface
with SAM-BA and facilitate a full-flash rewrite with DFU and the device firmware.
For more information on the flash procedure, we refer to the AT91SAM7 product
documentation, as well as the sam7utils documentation.