Provided by: dfu-programmer_1.1.0-1_amd64 bug

NAME

       dfu-programmer - USB firmware upgrading for Atmel microcontrollers

SYNOPSIS

       dfu-programmer target[:usb-bus,usb-addr] command [options] [parameters]
       dfu-programmer --help
       dfu-programmer --targets
       dfu-programmer --version

DESCRIPTION

       dfu-programmer  is  a  multi-platform command line Device Firmware Upgrade (DFU) based programmer for the
       flash memory on Atmel AVR, AVR32, XMEGA and 8051 based  microcontrollers  which  ship  with  a  USB  boot
       loader.   It  supports  In System Programming (ISP) for developers and potentially product updates in the
       field.  Those boot loaders are patterned after the standard USB DFU 1.0 class specification,  but  depend
       on extensions defined by Atmel to the extent that standard DFU drivers will not work.

       To  use  it,  first  connect  the  device  to be programmed and ensure that it comes up in DFU mode.  The
       microcontrollers come up in that mode as shipped by Atmel; or they may reenter that mode after a  special
       hardware  reset.   Then invoke this program to issue one or more DFU commands.  You will normally need to
       start by issuing the "erase" command; the default  security  policies  prevent  extracting  firmware,  to
       prevent reverse engineering of what is usually proprietary code.

SUPPORTED MICROCONTROLLERS

       These chip names are used as the command line "target" parameter.

       8051 based controllers:
              at89c51snd1c, at89c51snd2c, at89c5130, at89c5131, at89c5132

       AVR based controllers:
              at90usb1287,  at90usb1286,  at90usb1287-4k,  at90usb1286-4k,  at90usb647,  at90usb646, at90usb162,
              at90usb82, atmega32u6, atmega32u4, atmega32u2, atmega16u4, atmega16u2, atmega8u2

       AVR32 based controllers:
              at32uc3a0128,    at32uc3a1128,    at32uc3a0256,    at32uc3a1256,    at32uc3a0512,    at32uc3a1512,
              at32uc3a0512es,    at32uc3a1512es,   at32uc3a364,   at32uc3a364s,   at32uc3a3128,   at32uc3a3128s,
              at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064, at32uc3b164, at32uc3b0128,  at32uc3b1128,
              at32uc3b0256,    at32uc3b1256,   at32uc3b0256es,   at32uc3b1256es,   at32uc3b0512,   at32uc3b1512,
              at32uc3c064, at32uc3c0128, at32uc3c0256, at32uc3c0512,  at32uc3c164,  at32uc3c1128,  at32uc3c1256,
              at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256, at32uc3c2512

       XMEGA based controllers:
              atxmega64a1u,    atxmega128a1u,   atxmega64a3u,   atxmega128a3u,   atxmega192a3u,   atxmega256a3u,
              atxmega16a4u,   atxmega32a4u,   atxmega64a4u,    atxmega128a4u,    atxmega256a3bu,    atxmega64b1,
              atxmega128b1,  atxmega64b3,  atxmega128b3,  atxmega64c3, atxmega128c3, atxmega256c3, atxmega384c3,
              atxmega16c4, atxmega32c4

       STM32F4 controllers (experimental):
              stm32f4_B, stm32f4_C, stm32f4_E, stm32f4_G

USAGE

       There are no mechanisms to implement gang programming.  By default, the first device that matches the  id
       codes  for  the  given  target  is selected. Many targets share the same id codes.  Accordingly, you will
       usually avoid connecting more than one device of a given family (AVR, XMEGA, AVR32 or 8051) at a time.

       The target may be qualified with the USB bus and address number of the device you wish to  program.  This
       allows programming multiple devices of the same family at the same time.

       All  of these commands support the "global options".  Unless you override it, commands which write to the
       microcontroller will perform a validation step that rereads the data which was written,  compares  it  to
       the expected result, and reports any errors.

       Note that unlike Atmel's BatchISP program, dfu-programmer will only perform a single operation at a time.
       Erasing and programming require separate commands.

       configure register [--suppress-validation] data
              Bootloaders for 8051 based controllers support writing certain configuration bytes.

       dump [--force] [--bin] [(flash)|--user|--eeprom]
              Reads  the  program  memory  in  flash  and  output non-blank pages in ihex format to stdout.  Use
              --force to output the entire memory and --bin  for  binary  output.   User  page  and  eeprom  are
              selected using --user and --eeprom.

       erase [--force]
              Erases  all  the  flash  memory.   For AT90 and ATmega type devices a chip erase must be performed
              before other commands become available.  Erase first checks if the memory is blank unless  --force
              flag is set.

       flash    [--force]    [(flash)|--user|--eeprom]    [--suppress-validation]    [--suppress-bootloader-mem]
              [--validate-first] [--ignore-outside] [--serial=hexbytes:offset] file or STDIN
              Writes flash memory.  The input file (or stdin) must use the "ihex" file format convention  for  a
              memory  image.  --suppress-bootloader-mem  ignores any data written to the bootloader memory space
              when flashing the device.  This option is particularly useful for the AVR32  chips.   The  --force
              flag tells the program to ignore whether memory inside the program region is blank.  User page and
              eeprom  are  selected using --user and --eeprom.  The user space flash on AVR32 chips lies outside
              of the normal range  of  flash  blocks  and  is  designed  to  contain  configuration  parameters.
              Bootloader  configuration uses the last 4 to 8 bytes of the user page.  If this data is corrupted,
              the device will restart into the bootloader until  valid  data  is  used  (see  atmel  doc7745  or
              doc32166).  --force is always required here.

       --serial provides a way to inject a serial number or other unique sequence of bytes into the memory image
       programmed  into the device. This allows using a single .ihex file to program multiple devices, and still
       give each device its own unique serial number. For example, --serial=ABCDEF01:0x6000  would  program  the
       byte  at  0x6000 with the hex value AB, the byte at 0x6001 with the value CD, and so on. There must be an
       even number of hex digits, but the sequence can be any length. The offset is assumed to be given  in  hex
       if it starts with a "0x" prefix, octal if it begins with a "0", otherwise is it assumed to be decimal.

       --validate-first  add  a  validate  before  writing  the flash memory. If the validate succeeds (i.e. the
       firmware in the chip is the same as the one given as input), then no further operations are done, and the
       flash is reported as successful.

       --ignore-outside changes the validate behavior to ignore any error outside the programming  region.  This
       can  be  useful  for  programming  a  single  part of the chip (where errors outside region are expected)
       without ignoring the validate result.

       setsecure
              Sets the security bit on AVR32 chips.  This prevents the content being read back  from  the  chip,
              except  in  the  same  session  in which it was programmed.  When the security fuse is set, almost
              nothing will work without first executing the erase command.  The only way to clear  the  security
              fuse once set is to use a JTAG chip erase, which will also erase the bootloader.

       get register
              Displays various product identifier bytes.

       launch [--no-reset]
              Launch  the  application  by  resetting  the device. The --no-reset flag can be used to launch the
              device without a reset (jump to the start address of the program).

   Global Options
       --quiet - minimizes the output

       --debug level - enables verbose output at the specified level

   Configure Registers
       The standard bootloader for 8051 based chips supports writing data bytes which are not relevant  for  the
       AVR based chips.

       BSB - boot status byte
       SBV - software boot vector
       SSB - software security byte
       EB  - extra byte
       HSB - hardware security byte

   Get Register
       bootloader-version - currently flashed bootloader version
       ID1 - device boot identification 1
       ID2 - device boot identification 2
       manufacturer - the hardware manufacturer code
       family - the product family code
       product-name - the product name
       product-revision - the product revision
       HSB - same as the configure_register version
       BSB - same as the configure_register version
       SBV - same as the configure_register version
       SSB - same as the configure_register version
       EB  - same as the configure_register version

BUGS

       None known.

KNOWN ISSUES

       The  at90usb series chips do not make available any read/write protect flags so the dump or flash command
       may fail with a less than helpful error message.

       To remove any write or read protection from any chips, a full chip erasure is required.  For AVR32  chips
       an erase operation over USB will remove protection until the device is rebooted. To remove the protection
       more permanently requires a JTAG erase (which will also erase the bootloader).

       You may need to be a member of the uucp group in order to have access to the device without needing to be
       root.

AUTHOR

       Weston Schmidt <weston_schmidt@alumni.purdue.edu>

SEE ALSO