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

FreeBSD Manual Pages


home | help

       dfu-programmer -	USB firmware upgrading for Atmel microcontrollers

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

       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.

       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,

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

       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] [--serial=hexbytes:offset]  file  or
	      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

	      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

       None known.

       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.

       Weston Schmidt <>


       Copyright (C) 2005-2014 Weston Schmidt

       This program is free software; you can redistribute it and/or modify it
       under  the  terms of the	GNU General Public License as published	by the
       Free Software Foundation; either	version	2 of the License, or (at  your
       option) any later version.

       This  program  is  distributed  in the hope that	it will	be useful, but
       WITHOUT	ANY  WARRANTY;	without	  even	 the   implied	 warranty   of
       General Public License for more details.

       You should have received	a copy of the GNU General Public License along
       with this program; if not, write	to the Free Software Foundation, Inc.,
       51 Franklin Street, Fifth Floor,	Boston,	MA 02110-1301, USA

DFU-PROGRAMMER			 May 28, 2014		     DFU-PROGRAMMER(1)


Want to link to this manual page? Use this URL:

home | help