AVR-uploader-AVRDUDE Information
AVR-uploader-AVRDUDE Information
1 Option Descriptions
AVRDUDE is a command line tool, used as follows:
Command line options are used to control AVRDUDE’s behaviour. The following
options are recognized:
-p partno
This is the only mandatory option and it tells AVRDUDE what type of part
(MCU) that is connected to the programmer. The partno parameter is the part’s
id listed in the configuration file. Specify -p ? to list all parts in the
configuration file. If a part is unknown to AVRDUDE, it means that there is no
config file entry for that part, but it can be added to the configuration file if you
have the Atmel datasheet so that you can enter the programming specifications.
Currently, the following MCU types are understood:
uc3a0512 AT32UC3A0512
c128 AT90CAN128
c32 AT90CAN32
c64 AT90CAN64
pwm2 AT90PWM2
pwm2b AT90PWM2B
pwm3 AT90PWM3
pwm316 AT90PWM316
pwm3b AT90PWM3B
1200 AT90S1200 (****)
2313 AT90S2313
2333 AT90S2333
2343 AT90S2343 (*)
4414 AT90S4414
4433 AT90S4433
4434 AT90S4434
8515 AT90S8515
8535 AT90S8535
usb1286 AT90USB1286
usb1287 AT90USB1287
usb162 AT90USB162
usb646 AT90USB646
usb647 AT90USB647
usb82 AT90USB82
m103 ATmega103
m128 ATmega128
m1280 ATmega1280
m1281 ATmega1281
m1284p ATmega1284P
m1284rfr2 ATmega1284RFR2
m128rfa1 ATmega128RFA1
m128rfr2 ATmega128RFR2
m16 ATmega16
m161 ATmega161
m162 ATmega162
m163 ATmega163
m164p ATmega164P
m168 ATmega168
m168p ATmega168P
m169 ATmega169
m16u2 ATmega16U2
m2560 ATmega2560 (**)
m2561 ATmega2561 (**)
m2564rfr2 ATmega2564RFR2
m256rfr2 ATmega256RFR2
m32 ATmega32
m324p ATmega324P
m324pa ATmega324PA
m325 ATmega325
m3250 ATmega3250
m328 ATmega328
m328p ATmega328P
m329 ATmega329
m3290 ATmega3290
m3290p ATmega3290P
m329p ATmega329P
m32u2 ATmega32U2
m32u4 ATmega32U4
m406 ATMEGA406
m48 ATmega48
m48p ATmega48P
m64 ATmega64
m640 ATmega640
m644 ATmega644
m644p ATmega644P
m644rfr2 ATmega644RFR2
m645 ATmega645
m6450 ATmega6450
m649 ATmega649
m6490 ATmega6490
m64rfr2 ATmega64RFR2
m8 ATmega8
m8515 ATmega8515
m8535 ATmega8535
m88 ATmega88
m88p ATmega88P
m8u2 ATmega8U2
t10 ATtiny10
t11 ATtiny11
t12 ATtiny12
t13 ATtiny13
t15 ATtiny15
t1634 ATtiny1634
t20 ATtiny20
t2313 ATtiny2313
t24 ATtiny24
t25 ATtiny25
t26 ATtiny26
t261 ATtiny261
t4 ATtiny4
t40 ATtiny40
t4313 ATtiny4313
t43u ATtiny43u
t44 ATtiny44
t45 ATtiny45
t461 ATtiny461
t5 ATtiny5
t84 ATtiny84
t85 ATtiny85
t861 ATtiny861
t88 ATtiny88
t9 ATtiny9
x128a1 ATxmega128A1
x128a1d ATxmega128A1revD
x128a1u ATxmega128A1U
x128a3 ATxmega128A3
x128a3u ATxmega128A3U
x128a4 ATxmega128A4
x128a4u ATxmega128A4U
x128b1 ATxmega128B1
x128b3 ATxmega128B3
x128c3 ATxmega128C3
x128d3 ATxmega128D3
x128d4 ATxmega128D4
x16a4 ATxmega16A4
x16a4u ATxmega16A4U
x16c4 ATxmega16C4
x16d4 ATxmega16D4
x16e5 ATxmega16E5
x192a1 ATxmega192A1
x192a3 ATxmega192A3
x192a3u ATxmega192A3U
x192c3 ATxmega192C3
x192d3 ATxmega192D3
x256a1 ATxmega256A1
x256a3 ATxmega256A3
x256a3b ATxmega256A3B
x256a3bu ATxmega256A3BU
x256a3u ATxmega256A3U
x256c3 ATxmega256C3
x256d3 ATxmega256D3
x32a4 ATxmega32A4
x32a4u ATxmega32A4U
x32c4 ATxmega32C4
x32d4 ATxmega32D4
x32e5 ATxmega32E5
x384c3 ATxmega384C3
x384d3 ATxmega384D3
x64a1 ATxmega64A1
x64a1u ATxmega64A1U
x64a3 ATxmega64A3
x64a3u ATxmega64A3U
x64a4 ATxmega64A4
x64a4u ATxmega64A4U
x64b1 ATxmega64B1
x64b3 ATxmega64B3
x64c3 ATxmega64C3
x64d3 ATxmega64D3
x64d4 ATxmega64D4
x8e5 ATxmega8E5
ucr2 deprecated,
(****) The ISP programming protocol of the AT90S1200 differs in subtle ways
from that of other AVRs. Thus, not all programmers support this device.
Known to work are all direct bitbang programmers, and all programmers
talking the STK500v2 protocol.
-b baudrate
Specify the bit clock period for the JTAG interface or the ISP clock (JTAG ICE
only). The value is a floating-point number in microseconds. The default value
of the JTAG ICE results in about 1 microsecond bit clock period, suitable for
target MCUs running at 4 MHz clock and above. Unlike certain parameters in
the STK500, the JTAG ICE resets all its parameters to default values when the
programming software signs off from the ICE, so for MCUs running at lower
clock speeds, this parameter must be specified on the command-line. It can also
be set in the configuration file by using the ’default_bitclock’ keyword.
-c programmer-id
Use the specified config file for configuration data. This file contains all
programmer and part definitions that AVRDUDE knows about. If you have a
programmer or part that AVRDUDE does not know about, you can add it to the
config file (be sure and submit a patch back to the author so that it can be
incorporated for the next version). If not specified, AVRDUDE reads the
configuration file from /usr/local/etc/avrdude.conf (FreeBSD and Linux). See
Appendix A for the method of searching for the configuration file for
Windows.
If config-file is written as +filename then this file is read after the system wide
and user configuration files. This can be used to add entries to the configuration
without patching your system wide configuration file. It can be used several
times, the files are read in same order as given on the command line.
-D
Disable auto erase for flash. When the -U option with flash memory is
specified, avrdude will perform a chip erase before starting any of the
programming operations, since it generally is a mistake to program the flash
without performing an erase first. This option disables that. Auto erase is not
used for ATxmega devices as these devices can use page erase before writing
each page so no explicit chip erase is required. Note however that any page not
affected by the current operation will retain its previous contents.
-e
Causes a chip erase to be executed. This will reset the contents of the flash
ROM and EEPROM to the value ‘0xff’, and clear all lock bits. Except for
ATxmega devices which can use page erase, it is basically a prerequisite
command before the flash ROM can be reprogrammed again. The only
exception would be if the new contents would exclusively cause bits to be
programmed from the value ‘1’ to ‘0’. Note that in order to reprogram
EERPOM cells, no explicit prior chip erase is required since the MCU provides
an auto-erase cycle in that case before programming the cell.
-E exitspec[,…]
By default, AVRDUDE leaves the parallel port in the same state at exit as it has
been found at startup. This option modifies the state of the ‘/RESET’ and ‘Vcc’
lines the parallel port is left at, according to the exitspec arguments provided, as
follows:
reset
The ‘/RESET’ signal will be left activated at program exit, that is it will be held
low, in order to keep the MCU in reset state afterwards. Note in particular that
the programming algorithm for the AT90S1200 device mandates that the
‘/RESET’ signal is active before powering up the MCU, so in case an external
power supply is used for this MCU type, a previous invocation of AVRDUDE
with this option specified is one of the possible ways to guarantee this
condition.
noreset
The ‘/RESET’ line will be deactivated at program exit, thus allowing the MCU
target program to run while the programming hardware remains connected.
vcc
This option will leave those parallel port pins active (i. e. high) that can be used
to supply ‘Vcc’ power to the MCU.
novcc
This option will pull the ‘Vcc’ pins of the parallel port down at program exit.
d_high
This option will leave the 8 data pins on the parallel port active (i. e. high).
d_low
This option will leave the 8 data pins on the parallel port inactive (i. e. low).
Normally, AVRDUDE tries to verify that the device signature read from the
part is reasonable before continuing. Since it can happen from time to time that
a device has a broken (erased or overwritten) device signature but is otherwise
operating normally, this options is provided to override the check. Also, for
programmers like the Atmel STK500 and STK600 which can adjust parameters
local to the programming tool (independent of an actual connection to a target
controller), this option can be used together with ‘-t’ to continue in terminal
mode.
-i delay
No-write - disables actually writing data to the MCU (useful for debugging
AVRDUDE).
-O
Use port to identify the device to which the programmer is attached. Normally,
the default parallel port is used, but if the programmer type normally connects
to the serial port, the default serial port will be used. See Appendix A, Platform
Dependent Information, to find out the default port names for your platform. If
you need to use a different parallel or serial port, use this option to specify the
alternate port name.
On Win32 operating systems, the parallel ports are referred to as lpt1 through
lpt3, referring to the addresses 0x378, 0x278, and 0x3BC, respectively. If the
parallel port can be accessed through a different address, this address can be
specified directly, using the common C language notation (i. e., hexadecimal
values are prefixed by 0x).
For the JTAG ICE mkII, if AVRDUDE has been built with libusb
support, port may alternatively be specified as usb[:serialno]. In that case, the
JTAG ICE mkII will be looked up on USB. If serialno is also specified, it will
be matched against the serial number read from any JTAG ICE mkII found on
USB. The match is done after stripping any existing colons from the given
serial number, and right-to-left, so only the least significant bytes from the
serial number need to be given. For a trick how to find out the serial numbers
of all JTAG ICEs attached to USB, see Example Command Line Invocations.
As the AVRISP mkII device can only be talked to over USB, the very same
method of specifying the port is required there.
For the USB programmer "AVR-Doper" running in HID mode, the port must
be specified as avrdoper. Libusb support is required on Unix but not on
Windows. For more information about AVR-Doper
see http://www.obdev.at/avrusb/avrdoper.html.
For programmers that attach to a serial port using some kind of higher level
protocol (as opposed to bit-bang style programmers), port can be specified
as net:host:port. In this case, instead of trying to open a local device, a TCP
network connection to (TCP) port on host is established. The remote endpoint
is assumed to be a terminal or console server that connects the network stream
to a local serial port where the actual programmer has been attached to. The
port is assumed to be properly configured, for example using a transparent 8-bit
data connection without parity at 115200 Baud for a STK500.
Disable (or quell) output of the progress bar while reading or writing to the
device. Specify it a second time for even quieter operation.
-u
Disables the default behaviour of reading out the fuses three times before
programming, then verifying at the end of programming that the fuses have not
changed. If you want to change fuses you will need to specify this option, as
avrdude will see the fuses have changed (even though you wanted to) and will
change them back for your "safety". This option was designed to prevent cases
of fuse bits magically changing (usually called safemode).
Disable safemode prompting. When safemode discovers that one or more fuse
bits have unintentionally changed, it will prompt for confirmation regarding
whether or not it should attempt to recover the fuse bit(s). Specifying this flag
disables the prompt and assumes that the fuse bit(s) should be recovered
without asking for confirmation first.
-t
The fuse byte in devices that have only a single fuse byte.
hfuse
The fuse bytes of ATxmega devices, N is an integer number for each fuse
supported by the device.
application
The application flash area of ATxmega devices.
apptable
read the specified device memory and write to the specified file
w
read the specified file and write it to the specified device memory
v
read the specified device memory and the specified file and perform a verify
operation
Intel Hex
s
Motorola S-record
r
raw binary; little-endian byte order, in the case of the flash ROM data
e
ELF (Executable and Linkable Format), the final output file from the linker;
currently only accepted as an input file
m
immediate mode; actual byte values specified on the command line, separated
by commas or spaces in place of the filename field of the ‘-U’ option. This is
useful for programming fuse bytes without having to create a single-byte file or
enter terminal mode. If the number specified begins with 0x, it is treated as a
hex value. If the number otherwise begins with a leading zero ( 0) it is treated as
octal. Otherwise, the value is treated as decimal.
a
auto detect; valid for input only, and only if the input is not provided at stdin.
d
decimal; this and the following formats are only valid on output. They generate
one line of output for the respective memory section, forming a comma-
separated list of the values. This can be particularly useful for subsequent
processing, like for fuse bit settings.
h
octal; each value will get a 0 prepended unless it is less than 8 in which case it
gets no prefix.
b
The default is to use auto detection for input files, and raw binary format for
output files.
Note that if filename contains a colon, the format field is no longer optional
since the filename part following the colon would otherwise be misinterpreted
as format.
When using the JTAG ICE mkII or AVR Dragon in JTAG mode, the following
extended parameter is accepted:
‘jtagchain=UB,UA,BB,BA’
The default setup assumes the BusPirate’s CS output pin connected to the
RESET pin on AVR side. It is however possible to have multiple AVRs
connected to the same BP with MISO, MOSI and SCK lines common for all of
them. In such a case one AVR should have its RESET connected to
BusPirate’s CS pin, second AVR’s RESET connected to BusPirate’s AUX pin
and if your BusPirate has an AUX2 pin (only available on BusPirate version
v1a with firmware 3.0 or newer) use that to activate RESET on the third AVR.
It may be a good idea to decouple the BusPirate and the AVR’s SPI buses from
each other using a 3-state bus buffer. For example 74HC125 or 74HC244 are
some good candidates with the latches driven by the appropriate reset pin (cs,
aux or aux2). Otherwise the SPI traffic in one active circuit may interfere with
programming the AVR in the other design.
‘spifreq=0..7’
0 30 kHz (default)
1 125 kHz
2 250 kHz
3 1 MHz
4 2 MHz
5 2.6 MHz
6 4 MHz
7 8 MHz
‘rawfreq=0..3’
Sets the SPI speed and uses the Bus Pirate’s binary “raw-wire” mode instead of
the default binary SPI mode:
0 5 kHz
1 50 kHz
2 100 kHz (Firmware v4.2+ only)
3 400 kHz (v4.2+)
The only advantage of the “raw-wire” mode is that different SPI frequencies
are available. Paged writing is not implemented in this mode.
‘ascii’
Attempt to use ASCII mode even when the firmware supports BinMode (binary
mode). BinMode is supported in firmware 2.7 and newer, older FW’s either
don’t have BinMode or their BinMode is buggy. ASCII mode is slower and
makes the above ‘reset=’, ‘spifreq=’ and ‘rawfreq=’ parameters
unavailable. Be aware that ASCII mode is not guaranteed to work with newer
firmware versions, and is retained only to maintain compatability with older
firmware versions.
‘nopagedwrite’
Firmware versions 5.10 and newer support a binary mode SPI command that
enables whole pages to be written to AVR flash memory at once, resulting in a
significant write speed increase. If use of this mode is not desirable for some
reason, this option disables it.
‘nopagedread’
Newer firmware versions support in binary mode SPI command some AVR
Extended Commands. Using the “Bulk Memory Read from Flash” results in a
significant read speed increase. If use of this mode is not desirable for some
reason, this option disables it.
‘cpufreq=125..4000’
When using the Wiring programmer type, the following optional extended
parameter is accepted:
‘snooze=0..32767’
Sets the timeout for USB reads and writes in milliseconds (default is 1500 ms).
Upload the flash memory from the ATmega128 connected to the STK500
programmer and save it in raw binary format in the file named c:/diag flash.bin:
%
Connect to the JTAG ICE mkII which serial number ends up in 1C37 via USB, and
enter terminal mode:
List the serial numbers of all JTAG ICEs attached to USB. This is done by specifying
an invalid serial number, and increasing the verbosity level.