1DFU-PROGRAMMER(1) DFU-PROGRAMMER(1)
2
3
4
6 dfu-programmer - USB firmware upgrading for Atmel microcontrollers
7
9 dfu-programmer target[:usb-bus,usb-addr] command [options] [parameters]
10 dfu-programmer --help
11 dfu-programmer --targets
12 dfu-programmer --version
13
15 dfu-programmer is a multi-platform command line Device Firmware Upgrade
16 (DFU) based programmer for the flash memory on Atmel AVR, AVR32, XMEGA
17 and 8051 based microcontrollers which ship with a USB boot loader. It
18 supports In System Programming (ISP) for developers and potentially
19 product updates in the field. Those boot loaders are patterned after
20 the standard USB DFU 1.0 class specification, but depend on extensions
21 defined by Atmel to the extent that standard DFU drivers will not work.
22
23 To use it, first connect the device to be programmed and ensure that it
24 comes up in DFU mode. The microcontrollers come up in that mode as
25 shipped by Atmel; or they may reenter that mode after a special
26 hardware reset. Then invoke this program to issue one or more DFU
27 commands. You will normally need to start by issuing the "erase"
28 command; the default security policies prevent extracting firmware, to
29 prevent reverse engineering of what is usually proprietary code.
30
32 These chip names are used as the command line "target" parameter.
33
34 8051 based controllers:
35 at89c51snd1c, at89c51snd2c, at89c5130, at89c5131, at89c5132
36
37 AVR based controllers:
38 at90usb1287, at90usb1286, at90usb1287-4k, at90usb1286-4k,
39 at90usb647, at90usb646, at90usb162, at90usb82, atmega32u6,
40 atmega32u4, atmega32u2, atmega16u4, atmega16u2, atmega8u2
41
42 AVR32 based controllers:
43 at32uc3a0128, at32uc3a1128, at32uc3a0256, at32uc3a1256,
44 at32uc3a0512, at32uc3a1512, at32uc3a0512es, at32uc3a1512es,
45 at32uc3a364, at32uc3a364s, at32uc3a3128, at32uc3a3128s,
46 at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064,
47 at32uc3b164, at32uc3b0128, at32uc3b1128, at32uc3b0256,
48 at32uc3b1256, at32uc3b0256es, at32uc3b1256es, at32uc3b0512,
49 at32uc3b1512, at32uc3c064, at32uc3c0128, at32uc3c0256,
50 at32uc3c0512, at32uc3c164, at32uc3c1128, at32uc3c1256,
51 at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256,
52 at32uc3c2512
53
54 XMEGA based controllers:
55 atxmega64a1u, atxmega128a1u, atxmega64a3u, atxmega128a3u,
56 atxmega192a3u, atxmega256a3u, atxmega16a4u, atxmega32a4u,
57 atxmega64a4u, atxmega128a4u, atxmega256a3bu, atxmega64b1,
58 atxmega128b1, atxmega64b3, atxmega128b3, atxmega64c3,
59 atxmega128c3, atxmega256c3, atxmega384c3, atxmega16c4,
60 atxmega32c4
61
62
64 There are no mechanisms to implement gang programming. By default, the
65 first device that matches the id codes for the given target is
66 selected. Many targets share the same id codes. Accordingly, you will
67 usually avoid connecting more than one device of a given family (AVR,
68 XMEGA, AVR32 or 8051) at a time.
69
70 The target may be qualified with the USB bus and address number of the
71 device you wish to program. This allows programming multiple devices of
72 the same family at the same time.
73
74 All of these commands support the "global options". Unless you
75 override it, commands which write to the microcontroller will perform a
76 validation step that rereads the data which was written, compares it to
77 the expected result, and reports any errors.
78
79 Note that unlike Atmel's BatchISP program, dfu-programmer will only
80 perform a single operation at a time. Erasing and programming require
81 separate commands.
82
83 configure register [--suppress-validation] data
84 Bootloaders for 8051 based controllers support writing certain
85 configuration bytes.
86
87 dump [--force] [--bin] [(flash)|--user|--eeprom]
88 Reads the program memory in flash and output non-blank pages in
89 ihex format to stdout. Use --force to output the entire memory
90 and --bin for binary output. User page and eeprom are selected
91 using --user and --eeprom.
92
93 erase [--force]
94 Erases all the flash memory. For AT90 and ATmega type devices a
95 chip erase must be performed before other commands become
96 available. Erase first checks if the memory is blank unless
97 --force flag is set.
98
99 flash [--force] [(flash)|--user|--eeprom] [--suppress-validation]
100 [--suppress-bootloader-mem] [--serial=hexbytes:offset] file or
101 STDIN
102 Writes flash memory. The input file (or stdin) must use the
103 "ihex" file format convention for a memory image.
104 --suppress-bootloader-mem ignores any data written to the
105 bootloader memory space when flashing the device. This option
106 is particularly useful for the AVR32 chips. The --force flag
107 tells the program to ignore whether memory inside the program
108 region is blank. User page and eeprom are selected using --user
109 and --eeprom. The user space flash on AVR32 chips lies outside
110 of the normal range of flash blocks and is designed to contain
111 configuration parameters. Bootloader configuration uses the
112 last 4 to 8 bytes of the user page. If this data is corrupted,
113 the device will restart into the bootloader until valid data is
114 used (see atmel doc7745 or doc32166). --force is always
115 required here.
116
117 --serial provides a way to inject a serial number or other unique
118 sequence of bytes into the memory image programmed into the device.
119 This allows using a single .ihex file to program multiple devices, and
120 still give each device its own unique serial number. For example,
121 --serial=ABCDEF01:0x6000 would program the byte at 0x6000 with the hex
122 value AB, the byte at 0x6001 with the value CD, and so on. There must
123 be an even number of hex digits, but the sequence can be any length.
124 The offset is assumed to be given in hex if it starts with a "0x"
125 prefix, octal if it begins with a "0", otherwise is it assumed to be
126 decimal.
127
128 setsecure
129 Sets the security bit on AVR32 chips. This prevents the content
130 being read back from the chip, except in the same session in
131 which it was programmed. When the security fuse is set, almost
132 nothing will work without first executing the erase command.
133 The only way to clear the security fuse once set is to use a
134 JTAG chip erase, which will also erase the bootloader.
135
136 get register
137 Displays various product identifier bytes.
138
139 launch [--no-reset]
140 Launch the application by resetting the device. The --no-reset
141 flag can be used to launch the device without a reset (jump to
142 the start address of the program).
143
144 Global Options
145 --quiet - minimizes the output
146
147 --debug level - enables verbose output at the specified level
148
149 Configure Registers
150 The standard bootloader for 8051 based chips supports writing data
151 bytes which are not relevant for the AVR based chips.
152
153 BSB - boot status byte
154 SBV - software boot vector
155 SSB - software security byte
156 EB - extra byte
157 HSB - hardware security byte
158
159 Get Register
160 bootloader-version - currently flashed bootloader version
161 ID1 - device boot identification 1
162 ID2 - device boot identification 2
163 manufacturer - the hardware manufacturer code
164 family - the product family code
165 product-name - the product name
166 product-revision - the product revision
167 HSB - same as the configure_register version
168 BSB - same as the configure_register version
169 SBV - same as the configure_register version
170 SSB - same as the configure_register version
171 EB - same as the configure_register version
172
174 None known.
175
177 The at90usb series chips do not make available any read/write protect
178 flags so the dump or flash command may fail with a less than helpful
179 error message.
180
181 To remove any write or read protection from any chips, a full chip
182 erasure is required. For AVR32 chips an erase operation over USB will
183 remove protection until the device is rebooted. To remove the
184 protection more permanently requires a JTAG erase (which will also
185 erase the bootloader).
186
187 You may need to be a member of the uucp group in order to have access
188 to the device without needing to be root.
189
191 Weston Schmidt <weston_schmidt@alumni.purdue.edu>
192
194 http://dfu-programmer.sourceforge.net
195 http://www.atmel.com/Images/doc7618.pdf
196 http://www.atmel.com/Images/doc32131.pdf
197 http://www.atmel.com/Images/doc8457.pdf
198 http://www.atmel.com/Images/doc7745.pdf
199
201 Copyright (C) 2005-2014 Weston Schmidt
202
203 This program is free software; you can redistribute it and/or modify it
204 under the terms of the GNU General Public License as published by the
205 Free Software Foundation; either version 2 of the License, or (at your
206 option) any later version.
207
208 This program is distributed in the hope that it will be useful, but
209 WITHOUT ANY WARRANTY; without even the implied warranty of
210 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
211 General Public License for more details.
212
213 You should have received a copy of the GNU General Public License along
214 with this program; if not, write to the Free Software Foundation, Inc.,
215 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
216
217
218
219DFU-PROGRAMMER May 28, 2014 DFU-PROGRAMMER(1)