Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DFU-PROGRAMMER(1)					       DFU-PROGRAMMER(1)

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  nor-
     mally  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,   at-
	    mega32u4, 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 de-
     vice 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 com-
     mands.

     configure register [--suppress-validation] data
	    Bootloaders for 8051 based controllers support writing certain  con-
	    figuration 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]  [--sup-
	    press-bootloader-mem]  [--validate-first] [--ignore-outside] [--ser-
	    ial=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 flash-
	    ing 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  se-
	    lected  using  --user  and	--eeprom.  The user space flash on AVR32
	    chips lies outside of the normal range of flash blocks  and  is  de-
	    signed  to	contain configuration parameters.  Bootloader configura-
	    tion 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 re-
	    quired 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 us-
     ing 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", other-
     wise 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  re-
     ported 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 be-
	    ing  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  mes-
     sage.

     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  pro-
     tection  until the device is rebooted. To remove the protection more perma-
     nently 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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dfu-programmer&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help