diff options
Diffstat (limited to 'xs/src/avrdude/doc/avrdude.texi')
-rw-r--r-- | xs/src/avrdude/doc/avrdude.texi | 2586 |
1 files changed, 0 insertions, 2586 deletions
diff --git a/xs/src/avrdude/doc/avrdude.texi b/xs/src/avrdude/doc/avrdude.texi deleted file mode 100644 index 6941389df..000000000 --- a/xs/src/avrdude/doc/avrdude.texi +++ /dev/null @@ -1,2586 +0,0 @@ -%% -*-texinfo-*- -\input texinfo - -@c $Id$ - -@setfilename avrdude.info -@settitle AVRDUDE -@finalout - -@include version.texi - -@c -@c These are set in version.texi which is automatically generated by automake. -@c -@c @set UPDATED 26 Febuary 2003 -@c @set EDITION 3.2.0 -@c @set VERSION 3.2.0 - -@c This is a dir.info fragment to support semi-automated addition of -@c manuals to an info tree. -@dircategory AVR Programming & development tools. -@direntry -* AvrDude: (avrdude). AVR program downloader/uploader. -@end direntry - -@ifinfo -This file documents the avrdude program. - -For avrdude version @value{VERSION}, @value{UPDATED}. - -Copyright @copyright{} 2003, 2005 Brian Dean - -Copyright @copyright{} 2006 - 2016 J@"org Wunsch - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Free Software Foundation. - -Alternatively, this documentation may be copied and distributed under -the terms of the GNU Free Documentation License (FDL), version 1.3. -@end ifinfo - -@titlepage -@title AVRDUDE -@subtitle A program for download/uploading AVR microcontroller flash and eeprom. -@subtitle For AVRDUDE, Version @value{VERSION}, @value{UPDATED}. -@author by Brian S. Dean - -@page -Send comments on AVRDUDE to @w{@email{avrdude-dev@@nongnu.org}}. - -Use @uref{http://savannah.nongnu.org/bugs/?group=avrdude} to report bugs. - -Copyright @copyright{} 2003,2005 Brian S. Dean - -Copyright @copyright{} 2006 - 2013 J@"org Wunsch -@sp 2 - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Free Software Foundation. -@end titlepage - -@contents - -@c -@c Top Node -@c -@node Top, Introduction, (dir), (dir) -@comment node-name, next, previous, up - -@ifinfo -This file documents the avrdude program for downloading/uploading -programs to Atmel AVR microcontrollers. - -For avrdude version @value{VERSION}, @value{UPDATED}. - -Send comments on AVRDUDE to @w{@email{avrdude-dev@@nongnu.org}}. - -Use @uref{http://savannah.nongnu.org/bugs/?group=avrdude} to report bugs. - -Copyright @copyright{} 2003,2005 Brian S. Dean - -Copyright @copyright{} 2006 J@"org Wunsch -@end ifinfo - -@menu -* Introduction:: -* Command Line Options:: -* Terminal Mode Operation:: -* Configuration File:: -* Programmer Specific Information:: -* Platform Dependent Information:: -* Troubleshooting:: -@end menu - -@c -@c Node -@c -@node Introduction, Command Line Options, Top, Top -@comment node-name, next, previous, up -@chapter Introduction -@cindex introduction - -AVRDUDE - AVR Downloader Uploader - is a program for downloading and -uploading the on-chip memories of Atmel's AVR microcontrollers. It can -program the Flash and EEPROM, and where supported by the serial -programming protocol, it can program fuse and lock bits. AVRDUDE also -supplies a direct instruction mode allowing one to issue any programming -instruction to the AVR chip regardless of whether AVRDUDE implements -that specific feature of a particular chip. - -AVRDUDE can be used effectively via the command line to read or write -all chip memory types (eeprom, flash, fuse bits, lock bits, signature -bytes) or via an interactive (terminal) mode. Using AVRDUDE from the -command line works well for programming the entire memory of the chip -from the contents of a file, while interactive mode is useful for -exploring memory contents, modifying individual bytes of eeprom, -programming fuse/lock bits, etc. - -AVRDUDE supports the following basic programmer types: Atmel's STK500, -Atmel's AVRISP and AVRISP mkII devices, -Atmel's STK600, -Atmel's JTAG ICE (the original one, mkII, and 3, the latter two also in ISP mode), appnote -avr910, appnote avr109 (including the AVR Butterfly), -serial bit-bang adapters, -and the PPI (parallel port interface). PPI represents a class -of simple programmers where the programming lines are directly -connected to the PC parallel port. Several pin configurations exist -for several variations of the PPI programmers, and AVRDUDE can be -configured to work with them by either specifying the appropriate -programmer on the command line or by creating a new entry in its -configuration file. All that's usually required for a new entry is to -tell AVRDUDE which pins to use for each programming function. - -A number of equally simple bit-bang programming adapters that connect -to a serial port are supported as well, among them the popular -Ponyprog serial adapter, and the DASA and DASA3 adapters that used to -be supported by uisp(1). Note that these adapters are meant to be -attached to a physical serial port. Connecting to a serial port -emulated on top of USB is likely to not work at all, or to work -abysmally slow. - -If you happen to have a Linux system with at least 4 hardware GPIOs -available (like almost all embedded Linux boards) you can do without -any additional hardware - just connect them to the MOSI, MISO, RESET -and SCK pins on the AVR and use the linuxgpio programmer type. It bitbangs -the lines using the Linux sysfs GPIO interface. Of course, care should -be taken about voltage level compatibility. Also, although not strictly -required, it is strongly advisable to protect the GPIO pins from -overcurrent situations in some way. The simplest would be to just put -some resistors in series or better yet use a 3-state buffer driver like -the 74HC244. Have a look at http://kolev.info/avrdude-linuxgpio for a more -detailed tutorial about using this programmer type. - -The STK500, JTAG ICE, avr910, and avr109/butterfly use the serial port to communicate with the PC. -The STK600, JTAG ICE mkII/3, AVRISP mkII, USBasp, avrftdi (and derivatives), and USBtinyISP -programmers communicate through the USB, using @code{libusb} as a -platform abstraction layer. -The avrftdi adds support for the FT2232C/D, FT2232H, and FT4232H devices. These all use -the MPSSE mode, which has a specific pin mapping. Bit 1 (the lsb of the byte in the config -file) is SCK. Bit 2 is MOSI, and Bit 3 is MISO. Bit 4 usually reset. The 2232C/D parts -are only supported on interface A, but the H parts can be either A or B (specified by the -usbdev config parameter). -The STK500, STK600, JTAG ICE, and avr910 contain on-board logic to control the programming of the target -device. -The avr109 bootloader implements a protocol similar to avr910, but is -actually implemented in the boot area of the target's flash ROM, as -opposed to being an external device. -The fundamental difference between the two types lies in the -protocol used to control the programmer. The avr910 protocol is very -simplistic and can easily be used as the basis for a simple, home made -programmer since the firmware is available online. On the other hand, -the STK500 protocol is more robust and complicated and the firmware is -not openly available. -The JTAG ICE also uses a serial communication protocol which is similar -to the STK500 firmware version 2 one. However, as the JTAG ICE is -intended to allow on-chip debugging as well as memory programming, the -protocol is more sophisticated. -(The JTAG ICE mkII protocol can also be run on top of USB.) -Only the memory programming functionality of the JTAG ICE is supported -by AVRDUDE. -For the JTAG ICE mkII/3, JTAG, debugWire and ISP mode are supported, provided -it has a firmware revision of at least 4.14 (decimal). -See below for the limitations of debugWire. -For ATxmega devices, the JTAG ICE mkII/3 is supported in PDI mode, provided it -has a revision 1 hardware and firmware version of at least 5.37 (decimal). - -The Atmel-ICE (ARM/AVR) is supported (JTAG, PDI for Xmega, debugWIRE, ISP modes). - -Atmel's XplainedPro boards, using EDBG protocol (CMSIS-DAP compliant), are -supported by the ``jtag3'' programmer type. - -Atmel's XplainedMini boards, using mEDBG protocol, are also -supported by the ``jtag3'' programmer type. - -The AVR Dragon is supported in all modes (ISP, JTAG, PDI, HVSP, PP, debugWire). -When used in JTAG and debugWire mode, the AVR Dragon behaves similar to a -JTAG ICE mkII, so all device-specific comments for that device -will apply as well. -When used in ISP and PDI mode, the AVR Dragon behaves similar to an -AVRISP mkII (or JTAG ICE mkII in ISP mode), so all device-specific -comments will apply there. -In particular, the Dragon starts out with a rather fast ISP clock -frequency, so the @code{-B @var{bitclock}} -option might be required to achieve a stable ISP communication. -For ATxmega devices, the AVR Dragon is supported in PDI mode, provided it -has a firmware version of at least 6.11 (decimal). - -Wiring boards are supported, utilizing STK500 V2.x protocol, but -a simple DTR/RTS toggle to set the boards into programming mode. -The programmer type is ``wiring''. - -The Arduino (which is very similar to the STK500 1.x) is supported via -its own programmer type specification ``arduino''. - -The BusPirate is a versatile tool that can also be used as an AVR programmer. -A single BusPirate can be connected to up to 3 independent AVRs. See -the section on -@emph{extended parameters} -below for details. - -The USBasp ISP and USBtinyISP adapters are also supported, provided AVRDUDE -has been compiled with libusb support. -They both feature simple firmware-only USB implementations, running on -an ATmega8 (or ATmega88), or ATtiny2313, respectively. - -The Atmel DFU bootloader is supported in both, FLIP protocol version 1 -(AT90USB* and ATmega*U* devices), as well as version 2 (Xmega devices). -See below for some hints about FLIP version 1 protocol behaviour. - - -@menu -* History:: -@end menu - -@c -@c Node -@c -@node History, , Introduction, Introduction -@section History and Credits - -AVRDUDE was written by Brian S. Dean under the name of AVRPROG to run on -the FreeBSD Operating System. Brian renamed the software to be called -AVRDUDE when interest grew in a Windows port of the software so that the -name did not conflict with AVRPROG.EXE which is the name of Atmel's -Windows programming software. - -The AVRDUDE source now resides in the public CVS repository on -savannah.gnu.org (@url{http://savannah.gnu.org/projects/avrdude/}), -where it continues to be enhanced and ported to other systems. In -addition to FreeBSD, AVRDUDE now runs on Linux and Windows. The -developers behind the porting effort primarily were Ted Roth, Eric -Weddington, and Joerg Wunsch. - -And in the spirit of many open source projects, this manual also draws -on the work of others. The initial revision was composed of parts of -the original Unix manual page written by Joerg Wunsch, the original web -site documentation by Brian Dean, and from the comments describing the -fields in the AVRDUDE configuration file by Brian Dean. The texi -formatting was modeled after that of the Simulavr documentation by Ted -Roth. - - -@c -@c Node -@c -@node Command Line Options, Terminal Mode Operation, Introduction, Top -@chapter Command Line Options -@cindex options - -@menu -* Option Descriptions:: -* Programmers accepting extended parameters:: -* Example Command Line Invocations:: -@end menu - -@c -@c Node -@c -@node Option Descriptions, Programmers accepting extended parameters, Command Line Options, Command Line Options -@section Option Descriptions - -@noindent -AVRDUDE is a command line tool, used as follows: - -@smallexample -avrdude -p partno @var{options} @dots{} -@end smallexample - -@noindent -Command line options are used to control AVRDUDE's behaviour. The -following options are recognized: - -@table @code -@item -p @var{partno} -This is the only mandatory option and it tells AVRDUDE what type of part -(MCU) that is connected to the programmer. The @var{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: - -@multitable @columnfractions .15 .3 -@include parts.texi -@end multitable - -(*) The AT90S2323 and ATtiny22 use the same algorithm. - -(**) Flash addressing above 128 KB is not supported by all -programming hardware. Known to work are jtag2, stk500v2, -and bit-bang programmers. - -(***) -The ATtiny11 can only be -programmed in high-voltage serial mode. - -(****) -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. - -@item -b @var{baudrate} -Override the RS-232 connection baud rate specified in the respective -programmer's entry of the configuration file. - -@item -B @var{bitclock} -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. -Alternatively, the value might be suffixed with "Hz", "kHz", or "MHz", -in order to specify the bit clock frequency, rather than a period. -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. - -@item -c @var{programmer-id} -Specify the programmer to be used. AVRDUDE knows about several common -programmers. Use this option to specify which one to use. The -@var{programmer-id} parameter is the programmer's id listed in the -configuration file. Specify -c ? to list all programmers in the -configuration file. If you have a programmer that is unknown to -AVRDUDE, and the programmer is controlled via the PC parallel port, -there's a good chance that it can be easily added to the configuration -file without any code changes to AVRDUDE. Simply copy an existing entry -and change the pin definitions to match that of the unknown programmer. -Currently, the following programmer ids are understood and supported: - -@multitable @columnfractions .2 .6 -@include programmers.texi -@end multitable - - - -@item -C @var{config-file} -Use the specified config file for configuration data. This file -contains all programmer and part definitions that AVRDUDE knows about. -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 @var{config-file} is written as @var{+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. - - -@item -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. - -@item -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. - - -@item -E @var{exitspec}[,@dots{}] -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: - -@table @code -@item 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. - -@item noreset -The `/RESET' line will be deactivated at program exit, thus allowing the -MCU target program to run while the programming hardware remains -connected. - -@item vcc -This option will leave those parallel port pins active (i. e. high) that -can be used to supply `Vcc' power to the MCU. - -@item novcc -This option will pull the `Vcc' pins of the parallel port down at -program exit. - -@item d_high -This option will leave the 8 data pins on the parallel port active -(i. e. high). - -@item d_low -This option will leave the 8 data pins on the parallel port inactive -(i. e. low). - -@end table - -Multiple @var{exitspec} arguments can be separated with commas. - - -@item -F -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 @option{-t} to continue in terminal mode. - -@item -i @var{delay} -For bitbang-type programmers, delay for approximately -@var{delay} -microseconds between each bit state change. -If the host system is very fast, or the target runs off a slow clock -(like a 32 kHz crystal, or the 128 kHz internal RC oscillator), this -can become necessary to satisfy the requirement that the ISP clock -frequency must not be higher than 1/4 of the CPU clock frequency. -This is implemented as a spin-loop delay to allow even for very -short delays. -On Unix-style operating systems, the spin loop is initially calibrated -against a system timer, so the number of microseconds might be rather -realistic, assuming a constant system load while AVRDUDE is running. -On Win32 operating systems, a preconfigured number of cycles per -microsecond is assumed that might be off a bit for very fast or very -slow machines. - -@item -l @var{logfile} -Use @var{logfile} rather than @var{stderr} for diagnostics output. -Note that initial diagnostic messages (during option parsing) are still -written to @var{stderr} anyway. - -@item -n -No-write - disables actually writing data to the MCU (useful for -debugging AVRDUDE). - -@item -O -Perform a RC oscillator run-time calibration according to Atmel -application note AVR053. -This is only supported on the STK500v2, AVRISP mkII, and JTAG ICE mkII -hardware. -Note that the result will be stored in the EEPROM cell at address 0. - -@item -P @var{port} -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 @var{0x}). - -For the JTAG ICE mkII, if AVRDUDE has been built with libusb support, -@var{port} may alternatively be specified as -@code{usb}[:@var{serialno}]. In that case, the JTAG ICE mkII will be -looked up on USB. If @var{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 @ref{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 @var{avrdoper}. Libusb support is required on Unix -but not on Windows. For more information about AVR-Doper see -@url{http://www.obdev.at/avrusb/avrdoper.html}. - -For the USBtinyISP, which is a simplistic device not implementing -serial numbers, multiple devices can be distinguished by their -location in the USB hierarchy. -@xref{Troubleshooting}, for examples. - -For programmers that attach to a serial port using some kind of -higher level protocol (as opposed to bit-bang style programmers), -@var{port} can be specified as @code{net}:@var{host}:@var{port}. -In this case, instead of trying to open a local device, a TCP -network connection to (TCP) @var{port} on @var{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. - - -@item -q -Disable (or quell) output of the progress bar while reading or writing -to the device. Specify it a second time for even quieter operation. - -@item -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 @emph{safemode}). - -If one of the configuration files contains a line - -@code{default_safemode = no;} - -safemode is disabled by default. -The @option{-u} option's effect is negated in that case, i. e. it -@emph{enables} safemode. - -Safemode is always disabled for AVR32, Xmega and TPI devices. - -@item -s -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. - -@item -t -Tells AVRDUDE to enter the interactive ``terminal'' mode instead of up- -or downloading files. See below for a detailed description of the -terminal mode. - -@item -U @var{memtype}:@var{op}:@var{filename}[:@var{format}] -Perform a memory operation. -Multiple @option{-U} options can be specified in order to operate on -multiple memories on the same command-line invocation. The -@var{memtype} field specifies the memory type to operate on. Use -the @option{-v} option on the command line or the @code{part} command from -terminal mode to display all the memory types supported by a particular -device. -Typically, a device's memory configuration at least contains -the memory types -@code{flash} -and -@code{eeprom}. -All memory types currently known are: -@table @code -@item calibration -One or more bytes of RC oscillator calibration data. -@item eeprom -The EEPROM of the device. -@item efuse -The extended fuse byte. -@item flash -The flash ROM of the device. -@item fuse -The fuse byte in devices that have only a single fuse byte. -@item hfuse -The high fuse byte. -@item lfuse -The low fuse byte. -@item lock -The lock byte. -@item signature -The three device signature bytes (device ID). -@item fuse@emph{N} -The fuse bytes of ATxmega devices, @emph{N} is an integer number -for each fuse supported by the device. -@item application -The application flash area of ATxmega devices. -@item apptable -The application table flash area of ATxmega devices. -@item boot -The boot flash area of ATxmega devices. -@item prodsig -The production signature (calibration) area of ATxmega devices. -@item usersig -The user signature area of ATxmega devices. -@end table - -The @var{op} field specifies what operation to perform: - -@table @code -@item r -read the specified device memory and write to the specified file - -@item w -read the specified file and write it to the specified device memory - -@item v -read the specified device memory and the specified file and perform a verify operation - -@end table - -The @var{filename} field indicates the name of the file to read or -write. The @var{format} field is optional and contains the format of -the file to read or write. Possible values are: - -@table @code -@item i -Intel Hex - -@item s -Motorola S-record - -@item r -raw binary; little-endian byte order, in the case of the flash ROM data - -@item e -ELF (Executable and Linkable Format), the final output file from the -linker; currently only accepted as an input file - -@item m -immediate mode; actual byte values specified on the command line, -separated by commas or spaces in place of the @var{filename} field of -the @option{-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 @code{0x}, -it is treated as a hex value. If the number otherwise begins with a -leading zero (@code{0}) it is treated as octal. Otherwise, the value is -treated as decimal. - -@item a -auto detect; valid for input only, and only if the input is not provided -at stdin. - -@item 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. - -@item h -hexadecimal; each value will get the string @emph{0x} prepended. - -@item o -octal; each value will get a @emph{0} -prepended unless it is less than 8 in which case it gets no prefix. - -@item b -binary; each value will get the string @emph{0b} prepended. - -@end table - -The default is to use auto detection for input files, and raw binary -format for output files. - -Note that if @var{filename} contains a colon, the @var{format} field is -no longer optional since the filename part following the colon would -otherwise be misinterpreted as @var{format}. - -When reading any kind of flash memory area (including the various sub-areas -in Xmega devices), the resulting output file will be truncated to not contain -trailing 0xFF bytes which indicate unprogrammed (erased) memory. -Thus, if the entire memory is unprogrammed, this will result in an output -file that has no contents at all. - -As an abbreviation, the form @code{-U} @var{filename} -is equivalent to specifying -@code{-U} @emph{flash:w:}@var{filename}@emph{:a}. -This will only work if @var{filename} does not have a colon in it. - -@item -v -Enable verbose output. -More @code{-v} options increase verbosity level. - -@item -V -Disable automatic verify check when uploading data. - -@item -x @var{extended_param} -Pass @var{extended_param} to the chosen programmer implementation as -an extended parameter. The interpretation of the extended parameter -depends on the programmer itself. See below for a list of programmers -accepting extended parameters. - -@end table - -@page -@c -@c Node -@c -@node Programmers accepting extended parameters, Example Command Line Invocations, Option Descriptions, Command Line Options -@section Programmers accepting extended parameters - -@table @code - -@item JTAG ICE mkII/3 -@itemx AVR Dragon - -When using the JTAG ICE mkII/3 or AVR Dragon in JTAG mode, the -following extended parameter is accepted: -@table @code -@item @samp{jtagchain=UB,UA,BB,BA} -Setup the JTAG scan chain for @var{UB} units before, @var{UA} units -after, @var{BB} bits before, and @var{BA} bits after the target AVR, -respectively. -Each AVR unit within the chain shifts by 4 bits. -Other JTAG units might require a different bit shift count. -@end table - -@item AVR910 - -The AVR910 programmer type accepts the following extended parameter: -@table @code -@item @samp{devcode=VALUE} -Override the device code selection by using @var{VALUE} -as the device code. -The programmer is not queried for the list of supported -device codes, and the specified @var{VALUE} -is not verified but used directly within the -@code{T} command sent to the programmer. -@var{VALUE} can be specified using the conventional number notation of the -C programming language. -@item @samp{no_blockmode} -Disables the default checking for block transfer capability. -Use -@samp{no_blockmode} only if your @samp{AVR910} -programmer creates errors during initial sequence. -@end table - -@item BusPirate - -The BusPirate programmer type accepts the following extended parameters: -@table @code -@item @samp{reset=cs,aux,aux2} -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 -@emph{CS} -pin, second AVR's RESET connected to BusPirate's -@emph{AUX} -pin and if your BusPirate has an -@emph{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. - -@item @samp{spifreq=@var{0..7}} -@multitable @columnfractions .05 .3 -@item @code{0} @tab 30 kHz (default) -@item @code{1} @tab 125 kHz -@item @code{2} @tab 250 kHz -@item @code{3} @tab 1 MHz -@item @code{4} @tab 2 MHz -@item @code{5} @tab 2.6 MHz -@item @code{6} @tab 4 MHz -@item @code{7} @tab 8 MHz -@end multitable - -@item @samp{rawfreq=0..3} -Sets the SPI speed and uses the Bus Pirate's binary ``raw-wire'' mode instead -of the default binary SPI mode: - -@multitable @columnfractions .05 .3 -@item @code{0} @tab 5 kHz -@item @code{1} @tab 50 kHz -@item @code{2} @tab 100 kHz (Firmware v4.2+ only) -@item @code{3} @tab 400 kHz (v4.2+) -@end multitable - -The only advantage of the ``raw-wire'' mode is that different SPI frequencies -are available. Paged writing is not implemented in this mode. - -@item @samp{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 -@samp{reset=}, @samp{spifreq=} -and -@samp{rawfreq=} -parameters unavailable. Be aware that ASCII mode is not guaranteed to work -with newer firmware versions, and is retained only to maintain compatibility -with older firmware versions. - -@item @samp{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. - -@item @samp{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. - -@item @samp{cpufreq=@var{125..4000}} -This sets the @emph{AUX} pin to output a frequency of @var{n} kHz. Connecting -the @emph{AUX} pin to the XTAL1 pin of your MCU, you can provide it a clock, -for example when it needs an external clock because of wrong fuses settings. -Make sure the CPU frequency is at least four times the SPI frequency. - -@item @samp{serial_recv_timeout=@var{1...}} -This sets the serial receive timeout to the given value. -The timeout happens every time avrdude waits for the BusPirate prompt. -Especially in ascii mode this happens very often, so setting a smaller value -can speed up programming a lot. -The default value is 100ms. Using 10ms might work in most cases. - -@end table - -@item Wiring - -When using the Wiring programmer type, the -following optional extended parameter is accepted: -@table @code -@item @samp{snooze=@var{0..32767}} -After performing the port open phase, AVRDUDE will wait/snooze for -@var{snooze} milliseconds before continuing to the protocol sync phase. -No toggling of DTR/RTS is performed if @var{snooze} > 0. -@end table - -@item PICkit2 -Connection to the PICkit2 programmer: -@multitable @columnfractions .05 .3 -@item @code{(AVR)} @tab @code{(PICkit2)} -@item @code{RST} @tab @code{VPP/MCLR (1) } -@item @code{VDD} @tab @code{VDD Target (2) -- possibly optional if AVR self powered } -@item @code{GND} @tab @code{GND (3) } -@item @code{MISO} @tab @code{PGD (4) } -@item @code{SCLK} @tab @code{PDC (5) } -@item @code{OSI} @tab @code{AUX (6) } -@end multitable - -Extended command line parameters: -@table @code -@item @samp{clockrate=@var{rate}} -Sets the SPI clocking rate in Hz (default is 100kHz). Alternately the -B or -i options can be used to set the period. -@item @samp{timeout=@var{usb-transaction-timeout}} -Sets the timeout for USB reads and writes in milliseconds (default is 1500 ms). -@end table - -@end table - -@page -@c -@c Node -@c -@node Example Command Line Invocations, , Programmers accepting extended parameters, Command Line Options -@section Example Command Line Invocations - -@noindent -Download the file @code{diag.hex} to the ATmega128 chip using the -STK500 programmer connected to the default serial port: - -@smallexample -@cartouche -% avrdude -p m128 -c stk500 -e -U flash:w:diag.hex - -avrdude: AVR device initialized and ready to accept instructions - -Reading | ################################################## | 100% 0.03s - -avrdude: Device signature = 0x1e9702 -avrdude: erasing chip -avrdude: done. -avrdude: performing op: 1, flash, 0, diag.hex -avrdude: reading input file "diag.hex" -avrdude: input file diag.hex auto detected as Intel Hex -avrdude: writing flash (19278 bytes): - -Writing | ################################################## | 100% 7.60s - -avrdude: 19456 bytes of flash written -avrdude: verifying flash memory against diag.hex: -avrdude: load data flash data from input file diag.hex: -avrdude: input file diag.hex auto detected as Intel Hex -avrdude: input file diag.hex contains 19278 bytes -avrdude: reading on-chip flash data: - -Reading | ################################################## | 100% 6.83s - -avrdude: verifying ... -avrdude: 19278 bytes of flash verified - -avrdude: safemode: Fuses OK - -avrdude done. Thank you. - -% -@end cartouche -@end smallexample - -@page -@noindent -Upload the flash memory from the ATmega128 connected to the STK500 -programmer and save it in raw binary format in the file named -@code{c:/diag flash.bin}: - -@smallexample -@cartouche -% avrdude -p m128 -c stk500 -U flash:r:"c:/diag flash.bin":r - -avrdude: AVR device initialized and ready to accept instructions - -Reading | ################################################## | 100% 0.03s - -avrdude: Device signature = 0x1e9702 -avrdude: reading flash memory: - -Reading | ################################################## | 100% 46.10s - -avrdude: writing output file "c:/diag flash.bin" - -avrdude: safemode: Fuses OK - -avrdude done. Thank you. - -% -@end cartouche -@end smallexample - -@page -@noindent -Using the default programmer, download the file @code{diag.hex} to -flash, @code{eeprom.hex} to EEPROM, and set the Extended, High, and Low -fuse bytes to 0xff, 0x89, and 0x2e respectively: - -@smallexample -@cartouche - -% avrdude -p m128 -u -U flash:w:diag.hex \ -> -U eeprom:w:eeprom.hex \ -> -U efuse:w:0xff:m \ -> -U hfuse:w:0x89:m \ -> -U lfuse:w:0x2e:m - -avrdude: AVR device initialized and ready to accept instructions - -Reading | ################################################## | 100% 0.03s - -avrdude: Device signature = 0x1e9702 -avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed - To disable this feature, specify the -D option. -avrdude: erasing chip -avrdude: reading input file "diag.hex" -avrdude: input file diag.hex auto detected as Intel Hex -avrdude: writing flash (19278 bytes): - -Writing | ################################################## | 100% 7.60s - -avrdude: 19456 bytes of flash written -avrdude: verifying flash memory against diag.hex: -avrdude: load data flash data from input file diag.hex: -avrdude: input file diag.hex auto detected as Intel Hex -avrdude: input file diag.hex contains 19278 bytes -avrdude: reading on-chip flash data: - -Reading | ################################################## | 100% 6.84s - -avrdude: verifying ... -avrdude: 19278 bytes of flash verified - -[ ... other memory status output skipped for brevity ... ] - -avrdude done. Thank you. - -% -@end cartouche -@end smallexample - -@page -@noindent -Connect to the JTAG ICE mkII which serial number ends up in 1C37 via -USB, and enter terminal mode: - -@smallexample -@cartouche - -% avrdude -c jtag2 -p m649 -P usb:1c:37 -t - -avrdude: AVR device initialized and ready to accept instructions - -Reading | ################################################## | 100% 0.03s - -avrdude: Device signature = 0x1e9603 - -[ ... terminal mode output skipped for brevity ... ] - -avrdude done. Thank you. - -@end cartouche -@end smallexample - -@noindent -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. - -@smallexample -@cartouche - -% avrdude -c jtag2 -p m128 -P usb:xx -v -[...] - Using Port : usb:xxx - Using Programmer : jtag2 -avrdude: usbdev_open(): Found JTAG ICE, serno: 00A000001C6B -avrdude: usbdev_open(): Found JTAG ICE, serno: 00A000001C3A -avrdude: usbdev_open(): Found JTAG ICE, serno: 00A000001C30 -avrdude: usbdev_open(): did not find any (matching) USB device "usb:xxx" - -@end cartouche -@end smallexample - - -@c -@c Node -@c -@node Terminal Mode Operation, Configuration File, Command Line Options, Top -@chapter Terminal Mode Operation - -AVRDUDE has an interactive mode called @var{terminal mode} that is -enabled by the @option{-t} option. This mode allows one to enter -interactive commands to display and modify the various device memories, -perform a chip erase, display the device signature bytes and part -parameters, and to send raw programming commands. Commands and -parameters may be abbreviated to their shortest unambiguous form. -Terminal mode also supports a command history so that previously entered -commands can be recalled and edited. - -@menu -* Terminal Mode Commands:: -* Terminal Mode Examples:: -@end menu - -@node Terminal Mode Commands, Terminal Mode Examples, Terminal Mode Operation, Terminal Mode Operation -@section Terminal Mode Commands - -@noindent -The following commands are implemented: - -@table @code - -@item dump @var{memtype} @var{addr} @var{nbytes} -Read @var{nbytes} from the specified memory area, and display them in -the usual hexadecimal and ASCII form. - -@item dump -Continue dumping the memory contents for another @var{nbytes} where the -previous dump command left off. - -@item write @var{memtype} @var{addr} @var{byte1} @dots{} @var{byteN} -Manually program the respective memory cells, starting at address addr, -using the values @var{byte1} through @var{byteN}. This feature is not -implemented for bank-addressed memories such as the flash memory of -ATMega devices. - -@item erase -Perform a chip erase. - -@item send @var{b1} @var{b2} @var{b3} @var{b4} -Send raw instruction codes to the AVR device. If you need access to a -feature of an AVR part that is not directly supported by AVRDUDE, this -command allows you to use it, even though AVRDUDE does not implement the -command. When using direct SPI mode, up to 3 bytes -can be omitted. - -@item sig -Display the device signature bytes. - -@item spi -Enter direct SPI mode. The @emph{pgmled} pin acts as slave select. -@emph{Only supported on parallel bitbang programmers.} - -@item part -Display the current part settings and parameters. Includes chip -specific information including all memory types supported by the -device, read/write timing, etc. - -@item pgm -Return to programming mode (from direct SPI mode). - -@item verbose [@var{level}] -Change (when @var{level} is provided), or display the verbosity -level. -The initial verbosity level is controlled by the number of @code{-v} options -given on the command line. - -@item ? -@itemx help -Give a short on-line summary of the available commands. - -@item quit -Leave terminal mode and thus AVRDUDE. - -@end table - -@noindent -In addition, the following commands are supported on the STK500 -and STK600 programmer: - -@table @code - -@item vtarg @var{voltage} -Set the target's supply voltage to @var{voltage} Volts. - -@item varef [@var{channel}] @var{voltage} -Set the adjustable voltage source to @var{voltage} Volts. -This voltage is normally used to drive the target's -@emph{Aref} input on the STK500 and STK600. -The STK600 offers two reference voltages, which can be -selected by the optional parameter @var{channel} (either -0 or 1). - -@item fosc @var{freq}[@code{M}|@code{k}] -Set the master oscillator to @var{freq} Hz. -An optional trailing letter @code{M} -multiplies by 1E6, a trailing letter @code{k} by 1E3. - -@item fosc off -Turn the master oscillator off. - -@item sck @var{period} -@emph{STK500 and STK600 only:} -Set the SCK clock period to @var{period} microseconds. - -@emph{JTAG ICE only:} -Set the JTAG ICE bit clock period to @var{period} microseconds. -Note that unlike STK500 settings, this setting will be reverted to -its default value (approximately 1 microsecond) when the programming -software signs off from the JTAG ICE. -This parameter can also be used on the JTAG ICE mkII/3 to specify the -ISP clock period when operating the ICE in ISP mode. - -@item parms -@emph{STK500 and STK600 only:} -Display the current voltage and master oscillator parameters. - -@emph{JTAG ICE only:} -Display the current target supply voltage and JTAG bit clock rate/period. - -@end table - -@c -@c Node -@c -@node Terminal Mode Examples, , Terminal Mode Commands, Terminal Mode Operation -@section Terminal Mode Examples - -@noindent -Display part parameters, modify eeprom cells, perform a chip erase: - -@smallexample -@cartouche -% avrdude -p m128 -c stk500 -t - -avrdude: AVR device initialized and ready to accept instructions -avrdude: Device signature = 0x1e9702 -avrdude: current erase-rewrite cycle count is 52 (if being tracked) -avrdude> part ->>> part - -AVR Part : ATMEGA128 -Chip Erase delay : 9000 us -PAGEL : PD7 -BS2 : PA0 -RESET disposition : dedicated -RETRY pulse : SCK -serial program mode : yes -parallel program mode : yes -Memory Detail : - - Page Polled - Memory Type Paged Size Size #Pages MinW MaxW ReadBack - ----------- ------ ------ ---- ------ ----- ----- --------- - eeprom no 4096 8 0 9000 9000 0xff 0xff - flash yes 131072 256 512 4500 9000 0xff 0x00 - lfuse no 1 0 0 0 0 0x00 0x00 - hfuse no 1 0 0 0 0 0x00 0x00 - efuse no 1 0 0 0 0 0x00 0x00 - lock no 1 0 0 0 0 0x00 0x00 - calibration no 1 0 0 0 0 0x00 0x00 - signature no 3 0 0 0 0 0x00 0x00 - -avrdude> dump eeprom 0 16 ->>> dump eeprom 0 16 -0000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| - -avrdude> write eeprom 0 1 2 3 4 ->>> write eeprom 0 1 2 3 4 - -avrdude> dump eeprom 0 16 ->>> dump eeprom 0 16 -0000 01 02 03 04 ff ff ff ff ff ff ff ff ff ff ff ff |................| - -avrdude> erase ->>> erase -avrdude: erasing chip -avrdude> dump eeprom 0 16 ->>> dump eeprom 0 16 -0000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| - -avrdude> -@end cartouche -@end smallexample - - -@noindent -Program the fuse bits of an ATmega128 (disable M103 compatibility, -enable high speed external crystal, enable brown-out detection, slowly -rising power). Note since we are working with fuse bits the -u (unsafe) -option is specified, which allows you to modify the fuse bits. First -display the factory defaults, then reprogram: - -@smallexample -@cartouche -% avrdude -p m128 -u -c stk500 -t - -avrdude: AVR device initialized and ready to accept instructions -avrdude: Device signature = 0x1e9702 -avrdude: current erase-rewrite cycle count is 52 (if being tracked) -avrdude> d efuse ->>> d efuse -0000 fd |. | - -avrdude> d hfuse ->>> d hfuse -0000 99 |. | - -avrdude> d lfuse ->>> d lfuse -0000 e1 |. | - -avrdude> w efuse 0 0xff ->>> w efuse 0 0xff - -avrdude> w hfuse 0 0x89 ->>> w hfuse 0 0x89 - -avrdude> w lfuse 0 0x2f ->>> w lfuse 0 0x2f - -avrdude> -@end cartouche -@end smallexample - - -@c -@c Node -@c -@node Configuration File, Programmer Specific Information, Terminal Mode Operation, Top -@chapter Configuration File - -@noindent -AVRDUDE reads a configuration file upon startup which describes all of -the parts and programmers that it knows about. The advantage of this is -that if you have a chip that is not currently supported by AVRDUDE, you -can add it to the configuration file without waiting for a new release -of AVRDUDE. Likewise, if you have a parallel port programmer that is -not supported by AVRDUDE, chances are good that you can copy and -existing programmer definition, and with only a few changes, make your -programmer work with AVRDUDE. - -AVRDUDE first looks for a system wide configuration file in a platform -dependent location. On Unix, this is usually -@code{/usr/local/etc/avrdude.conf}, while on Windows it is usually in the -same location as the executable file. The name of this file can be -changed using the @option{-C} command line option. After the system wide -configuration file is parsed, AVRDUDE looks for a per-user configuration -file to augment or override the system wide defaults. On Unix, the -per-user file is @code{.avrduderc} within the user's home directory. On -Windows, this file is the @code{avrdude.rc} file located in the same -directory as the executable. - -@menu -* AVRDUDE Defaults:: -* Programmer Definitions:: -* Part Definitions:: -* Other Notes:: -@end menu - -@c -@c Node -@c -@node AVRDUDE Defaults, Programmer Definitions, Configuration File, Configuration File -@section AVRDUDE Defaults - -@table @code - -@item default_parallel = "@var{default-parallel-device}"; -Assign the default parallel port device. Can be overridden using the -@option{-P} option. - -@item default_serial = "@var{default-serial-device}"; -Assign the default serial port device. Can be overridden using the -@option{-P} option. - -@item default_programmer = "@var{default-programmer-id}"; -Assign the default programmer id. Can be overridden using the @option{-c} -option. - -@item default_bitclock = "@var{default-bitclock}"; -Assign the default bitclock value. Can be overridden using the @option{-B} -option. - -@end table - - -@c -@c Node -@c -@node Programmer Definitions, Part Definitions, AVRDUDE Defaults, Configuration File -@section Programmer Definitions - -@noindent -The format of the programmer definition is as follows: - -@smallexample -programmer - parent <id> # <id> is a quoted string - id = <id1> [, <id2> [, <id3>] ...] ; # <idN> are quoted strings - desc = <description> ; # quoted string - type = "par" | "stk500" | ... ; # programmer type (see below for a list) - baudrate = <num> ; # baudrate for serial ports - vcc = <num1> [, <num2> ... ] ; # pin number(s) - buff = <num1> [, <num2> ... ] ; # pin number(s) - reset = <num> ; # pin number - sck = <num> ; # pin number - mosi = <num> ; # pin number - miso = <num> ; # pin number - errled = <num> ; # pin number - rdyled = <num> ; # pin number - pgmled = <num> ; # pin number - vfyled = <num> ; # pin number - usbvid = <hexnum>; # USB VID (Vendor ID) - usbpid = <hexnum> [, <hexnum> ...]; # USB PID (Product ID) - usbdev = <interface>; # USB interface or other device info - usbvendor = <vendorname>; # USB Vendor Name - usbproduct = <productname>; # USB Product Name - usbsn = <serialno>; # USB Serial Number - ; -@end smallexample - -@noindent -If a parent is specified, all settings of it (except its ids) are used for the new -programmer. These values can be changed by new setting them for the new programmer. - -@noindent -To invert a bit in the pin definitions, use @code{= ~ <num>}. - -@noindent -Not all programmer types can handle a list of USB PIDs. - -@noindent -Following programmer types are currently implemented: - -@multitable @columnfractions .25 .6 -@include programmer_types.texi -@end multitable - -@c -@c Node -@c -@node Part Definitions, Other Notes, Programmer Definitions, Configuration File -@section Part Definitions - -@smallexample -part - id = <id> ; # quoted string - desc = <description> ; # quoted string - has_jtag = <yes/no> ; # part has JTAG i/f - has_debugwire = <yes/no> ; # part has debugWire i/f - has_pdi = <yes/no> ; # part has PDI i/f - has_tpi = <yes/no> ; # part has TPI i/f - devicecode = <num> ; # numeric - stk500_devcode = <num> ; # numeric - avr910_devcode = <num> ; # numeric - signature = <num> <num> <num> ; # signature bytes - usbpid = <num> ; # DFU USB PID - reset = dedicated | io; - retry_pulse = reset | sck; - pgm_enable = <instruction format> ; - chip_erase = <instruction format> ; - chip_erase_delay = <num> ; # micro-seconds - # STK500 parameters (parallel programming IO lines) - pagel = <num> ; # pin name in hex, i.e., 0xD7 - bs2 = <num> ; # pin name in hex, i.e., 0xA0 - serial = <yes/no> ; # can use serial downloading - parallel = <yes/no/pseudo>; # can use par. programming - # STK500v2 parameters, to be taken from Atmel's XML files - timeout = <num> ; - stabdelay = <num> ; - cmdexedelay = <num> ; - synchloops = <num> ; - bytedelay = <num> ; - pollvalue = <num> ; - pollindex = <num> ; - predelay = <num> ; - postdelay = <num> ; - pollmethod = <num> ; - mode = <num> ; - delay = <num> ; - blocksize = <num> ; - readsize = <num> ; - hvspcmdexedelay = <num> ; - # STK500v2 HV programming parameters, from XML - pp_controlstack = <num>, <num>, ...; # PP only - hvsp_controlstack = <num>, <num>, ...; # HVSP only - hventerstabdelay = <num>; - progmodedelay = <num>; # PP only - latchcycles = <num>; - togglevtg = <num>; - poweroffdelay = <num>; - resetdelayms = <num>; - resetdelayus = <num>; - hvleavestabdelay = <num>; - resetdelay = <num>; - synchcycles = <num>; # HVSP only - chiperasepulsewidth = <num>; # PP only - chiperasepolltimeout = <num>; - chiperasetime = <num>; # HVSP only - programfusepulsewidth = <num>; # PP only - programfusepolltimeout = <num>; - programlockpulsewidth = <num>; # PP only - programlockpolltimeout = <num>; - # JTAG ICE mkII parameters, also from XML files - allowfullpagebitstream = <yes/no> ; - enablepageprogramming = <yes/no> ; - idr = <num> ; # IO addr of IDR (OCD) reg. - rampz = <num> ; # IO addr of RAMPZ reg. - spmcr = <num> ; # mem addr of SPMC[S]R reg. - eecr = <num> ; # mem addr of EECR reg. - # (only when != 0x3c) - is_at90s1200 = <yes/no> ; # AT90S1200 part - is_avr32 = <yes/no> ; # AVR32 part - - memory <memtype> - paged = <yes/no> ; # yes / no - size = <num> ; # bytes - page_size = <num> ; # bytes - num_pages = <num> ; # numeric - min_write_delay = <num> ; # micro-seconds - max_write_delay = <num> ; # micro-seconds - readback_p1 = <num> ; # byte value - readback_p2 = <num> ; # byte value - pwroff_after_write = <yes/no> ; # yes / no - read = <instruction format> ; - write = <instruction format> ; - read_lo = <instruction format> ; - read_hi = <instruction format> ; - write_lo = <instruction format> ; - write_hi = <instruction format> ; - loadpage_lo = <instruction format> ; - loadpage_hi = <instruction format> ; - writepage = <instruction format> ; - ; - ; -@end smallexample - -@menu -* Parent Part:: -* Instruction Format:: -@end menu - -@c -@c Node -@c -@node Parent Part, Instruction Format, Part Definitions, Part Definitions -@subsection Parent Part - -@noindent -Parts can also inherit parameters from previously defined parts -using the following syntax. In this case specified integer and -string values override parameter values from the parent part. New -memory definitions are added to the definitions inherited from the -parent. - -@smallexample - part parent <id> # quoted string - id = <id> ; # quoted string - <any set of other parameters from the list above> - ; -@end smallexample - -@c -@c Node -@c -@node Instruction Format, , Parent Part, Part Definitions -@subsection Instruction Format - -@noindent -Instruction formats are specified as a comma separated list of string -values containing information (bit specifiers) about each of the 32 bits -of the instruction. Bit specifiers may be one of the following formats: - -@table @code - -@item 1 -The bit is always set on input as well as output - -@item 0 -the bit is always clear on input as well as output - -@item x -the bit is ignored on input and output - -@item a -the bit is an address bit, the bit-number matches this bit specifier's -position within the current instruction byte - -@item a@var{N} -the bit is the @var{N}th address bit, bit-number = N, i.e., @code{a12} -is address bit 12 on input, @code{a0} is address bit 0. - -@item i -the bit is an input data bit - -@item o -the bit is an output data bit - -@end table - -Each instruction must be composed of 32 bit specifiers. The instruction -specification closely follows the instruction data provided in Atmel's -data sheets for their parts. For example, the EEPROM read and write -instruction for an AT90S2313 AVR part could be encoded as: - -@smallexample - -read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - -write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - -@end smallexample - - - -@c -@c Node -@c -@node Other Notes, , Part Definitions, Configuration File -@section Other Notes - - -@itemize @bullet -@item -The @code{devicecode} parameter is the device code used by the STK500 -and is obtained from the software section (@code{avr061.zip}) of -Atmel's AVR061 application note available from -@url{http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf}. - -@item -Not all memory types will implement all instructions. - -@item -AVR Fuse bits and Lock bits are implemented as a type of memory. - -@item -Example memory types are: @code{flash}, @code{eeprom}, @code{fuse}, -@code{lfuse} (low fuse), @code{hfuse} (high fuse), @code{efuse} -(extended fuse), @code{signature}, @code{calibration}, @code{lock}. - -@item -The memory type specified on the AVRDUDE command line must match one of -the memory types defined for the specified chip. - -@item -The @code{pwroff_after_write} flag causes AVRDUDE to attempt to power -the device off and back on after an unsuccessful write to the affected -memory area if VCC programmer pins are defined. If VCC pins are not -defined for the programmer, a message indicating that the device needs a -power-cycle is printed out. This flag was added to work around a -problem with the at90s4433/2333's; see the at90s4433 errata at: - - @url{http://www.atmel.com/dyn/resources/prod_documents/doc1280.pdf} - -@item -The boot loader from application note AVR109 (and thus also the AVR -Butterfly) does not support writing of fuse bits. Writing lock bits -is supported, but is restricted to the boot lock bits (BLBxx). These -are restrictions imposed by the underlying SPM instruction that is used -to program the device from inside the boot loader. Note that programming -the boot lock bits can result in a ``shoot-into-your-foot'' scenario as -the only way to unprogram these bits is a chip erase, which will also -erase the boot loader code. - -The boot loader implements the ``chip erase'' function by erasing the -flash pages of the application section. - -Reading fuse and lock bits is fully supported. - -Note that due to the inability to write the fuse bits, the safemode -functionality does not make sense for these boot loaders. - -@end itemize - -@c -@c Node -@c -@node Programmer Specific Information, Platform Dependent Information, Configuration File, Top -@chapter Programmer Specific Information - -@menu -* Atmel STK600:: -* Atmel DFU bootloader using FLIP version 1:: -@end menu - -@c -@c Node -@c -@node Atmel STK600, Atmel DFU bootloader using FLIP version 1, Programmer Specific Information, Programmer Specific Information -@section Atmel STK600 - -@c -@c Update the table below by running the tools/get-stk600-devices.xsl -@c XSLT transformation on targetboard.xml as shipped by the latest -@c release of AVR Studio. -@c -The following devices are supported by the respective STK600 routing -and socket card: - -@multitable @columnfractions .25 .25 .5 -@headitem Routing card @tab Socket card @tab Devices -@item @code{} @tab @code{STK600-ATTINY10} @tab ATtiny4 ATtiny5 ATtiny9 ATtiny10 -@item @code{STK600-RC008T-2} @tab @code{STK600-DIP} @tab ATtiny11 ATtiny12 ATtiny13 ATtiny13A ATtiny25 ATtiny45 ATtiny85 -@item @code{STK600-RC008T-7} @tab @code{STK600-DIP} @tab ATtiny15 -@item @code{STK600-RC014T-42} @tab @code{STK600-SOIC} @tab ATtiny20 -@item @code{STK600-RC020T-1} @tab @code{STK600-DIP} @tab ATtiny2313 ATtiny2313A ATtiny4313 -@item @code{} @tab @code{STK600-TinyX3U} @tab ATtiny43U -@item @code{STK600-RC014T-12} @tab @code{STK600-DIP} @tab ATtiny24 ATtiny44 ATtiny84 ATtiny24A ATtiny44A -@item @code{STK600-RC020T-8} @tab @code{STK600-DIP} @tab ATtiny26 ATtiny261 ATtiny261A ATtiny461 ATtiny861 ATtiny861A -@item @code{STK600-RC020T-43} @tab @code{STK600-SOIC} @tab ATtiny261 ATtiny261A ATtiny461 ATtiny461A ATtiny861 ATtiny861A -@item @code{STK600-RC020T-23} @tab @code{STK600-SOIC} @tab ATtiny87 ATtiny167 -@item @code{STK600-RC028T-3} @tab @code{STK600-DIP} @tab ATtiny28 -@item @code{STK600-RC028M-6} @tab @code{STK600-DIP} @tab ATtiny48 ATtiny88 ATmega8 ATmega8A ATmega48 ATmega88 ATmega168 ATmega48P ATmega48PA ATmega88P ATmega88PA ATmega168P ATmega168PA ATmega328P -@item @code{} @tab @code{QT600-ATTINY88-QT8} @tab ATtiny88 -@item @code{STK600-RC040M-4} @tab @code{STK600-DIP} @tab ATmega8515 ATmega162 -@item @code{STK600-RC044M-30} @tab @code{STK600-TQFP44} @tab ATmega8515 ATmega162 -@item @code{STK600-RC040M-5} @tab @code{STK600-DIP} @tab ATmega8535 ATmega16 ATmega16A ATmega32 ATmega32A ATmega164P ATmega164PA ATmega324P ATmega324PA ATmega644 ATmega644P ATmega644PA ATmega1284P -@item @code{STK600-RC044M-31} @tab @code{STK600-TQFP44} @tab ATmega8535 ATmega16 ATmega16A ATmega32 ATmega32A ATmega164P ATmega164PA ATmega324P ATmega324PA ATmega644 ATmega644P ATmega644PA ATmega1284P -@item @code{} @tab @code{QT600-ATMEGA324-QM64} @tab ATmega324PA -@item @code{STK600-RC032M-29} @tab @code{STK600-TQFP32} @tab ATmega8 ATmega8A ATmega48 ATmega88 ATmega168 ATmega48P ATmega48PA ATmega88P ATmega88PA ATmega168P ATmega168PA ATmega328P -@item @code{STK600-RC064M-9} @tab @code{STK600-TQFP64} @tab ATmega64 ATmega64A ATmega128 ATmega128A ATmega1281 ATmega2561 AT90CAN32 AT90CAN64 AT90CAN128 -@item @code{STK600-RC064M-10} @tab @code{STK600-TQFP64} @tab ATmega165 ATmega165P ATmega169 ATmega169P ATmega169PA ATmega325 ATmega325P ATmega329 ATmega329P ATmega645 ATmega649 ATmega649P -@item @code{STK600-RC100M-11} @tab @code{STK600-TQFP100} @tab ATmega640 ATmega1280 ATmega2560 -@item @code{} @tab @code{STK600-ATMEGA2560} @tab ATmega2560 -@item @code{STK600-RC100M-18} @tab @code{STK600-TQFP100} @tab ATmega3250 ATmega3250P ATmega3290 ATmega3290P ATmega6450 ATmega6490 -@item @code{STK600-RC032U-20} @tab @code{STK600-TQFP32} @tab AT90USB82 AT90USB162 ATmega8U2 ATmega16U2 ATmega32U2 -@item @code{STK600-RC044U-25} @tab @code{STK600-TQFP44} @tab ATmega16U4 ATmega32U4 -@item @code{STK600-RC064U-17} @tab @code{STK600-TQFP64} @tab ATmega32U6 AT90USB646 AT90USB1286 AT90USB647 AT90USB1287 -@item @code{STK600-RCPWM-22} @tab @code{STK600-TQFP32} @tab ATmega32C1 ATmega64C1 ATmega16M1 ATmega32M1 ATmega64M1 -@item @code{STK600-RCPWM-19} @tab @code{STK600-SOIC} @tab AT90PWM2 AT90PWM3 AT90PWM2B AT90PWM3B AT90PWM216 AT90PWM316 -@item @code{STK600-RCPWM-26} @tab @code{STK600-SOIC} @tab AT90PWM81 -@item @code{STK600-RC044M-24} @tab @code{STK600-TSSOP44} @tab ATmega16HVB ATmega32HVB -@item @code{} @tab @code{STK600-HVE2} @tab ATmega64HVE -@item @code{} @tab @code{STK600-ATMEGA128RFA1} @tab ATmega128RFA1 -@item @code{STK600-RC100X-13} @tab @code{STK600-TQFP100} @tab ATxmega64A1 ATxmega128A1 ATxmega128A1_revD ATxmega128A1U -@item @code{} @tab @code{STK600-ATXMEGA1281A1} @tab ATxmega128A1 -@item @code{} @tab @code{QT600-ATXMEGA128A1-QT16} @tab ATxmega128A1 -@item @code{STK600-RC064X-14} @tab @code{STK600-TQFP64} @tab ATxmega64A3 ATxmega128A3 ATxmega256A3 ATxmega64D3 ATxmega128D3 ATxmega192D3 ATxmega256D3 -@item @code{STK600-RC064X-14} @tab @code{STK600-MLF64} @tab ATxmega256A3B -@item @code{STK600-RC044X-15} @tab @code{STK600-TQFP44} @tab ATxmega32A4 ATxmega16A4 ATxmega16D4 ATxmega32D4 -@item @code{} @tab @code{STK600-ATXMEGAT0} @tab ATxmega32T0 -@item @code{} @tab @code{STK600-uC3-144} @tab AT32UC3A0512 AT32UC3A0256 AT32UC3A0128 -@item @code{STK600-RCUC3A144-33} @tab @code{STK600-TQFP144} @tab AT32UC3A0512 AT32UC3A0256 AT32UC3A0128 -@item @code{STK600-RCuC3A100-28} @tab @code{STK600-TQFP100} @tab AT32UC3A1512 AT32UC3A1256 AT32UC3A1128 -@item @code{STK600-RCuC3B0-21} @tab @code{STK600-TQFP64-2} @tab AT32UC3B0256 AT32UC3B0512RevC AT32UC3B0512 AT32UC3B0128 AT32UC3B064 AT32UC3D1128 -@item @code{STK600-RCuC3B48-27} @tab @code{STK600-TQFP48} @tab AT32UC3B1256 AT32UC3B164 -@item @code{STK600-RCUC3A144-32} @tab @code{STK600-TQFP144} @tab AT32UC3A3512 AT32UC3A3256 AT32UC3A3128 AT32UC3A364 AT32UC3A3256S AT32UC3A3128S AT32UC3A364S -@item @code{STK600-RCUC3C0-36} @tab @code{STK600-TQFP144} @tab AT32UC3C0512 AT32UC3C0256 AT32UC3C0128 AT32UC3C064 -@item @code{STK600-RCUC3C1-38} @tab @code{STK600-TQFP100} @tab AT32UC3C1512 AT32UC3C1256 AT32UC3C1128 AT32UC3C164 -@item @code{STK600-RCUC3C2-40} @tab @code{STK600-TQFP64-2} @tab AT32UC3C2512 AT32UC3C2256 AT32UC3C2128 AT32UC3C264 -@item @code{STK600-RCUC3C0-37} @tab @code{STK600-TQFP144} @tab AT32UC3C0512 AT32UC3C0256 AT32UC3C0128 AT32UC3C064 -@item @code{STK600-RCUC3C1-39} @tab @code{STK600-TQFP100} @tab AT32UC3C1512 AT32UC3C1256 AT32UC3C1128 AT32UC3C164 -@item @code{STK600-RCUC3C2-41} @tab @code{STK600-TQFP64-2} @tab AT32UC3C2512 AT32UC3C2256 AT32UC3C2128 AT32UC3C264 -@item @code{STK600-RCUC3L0-34} @tab @code{STK600-TQFP48} @tab AT32UC3L064 AT32UC3L032 AT32UC3L016 -@item @code{} @tab @code{QT600-AT32UC3L-QM64} @tab AT32UC3L064 -@end multitable - -Ensure the correct socket and routing card are mounted @emph{before} -powering on the STK600. While the STK600 firmware ensures the socket -and routing card mounted match each other (using a table stored -internally in nonvolatile memory), it cannot handle the case where a -wrong routing card is used, e. g. the routing card -@code{STK600-RC040M-5} (which is meant for 40-pin DIP AVRs that have -an ADC, with the power supply pins in the center of the package) was -used but an ATmega8515 inserted (which uses the ``industry standard'' -pinout with Vcc and GND at opposite corners). - -Note that for devices that use the routing card @code{STK600-RC008T-2}, -in order to use ISP mode, the jumper for @code{AREF0} must be removed -as it would otherwise block one of the ISP signals. High-voltage -serial programming can be used even with that jumper installed. - -The ISP system of the STK600 contains a detection against shortcuts -and other wiring errors. AVRDUDE initiates a connection check before -trying to enter ISP programming mode, and display the result if the -target is not found ready to be ISP programmed. - -High-voltage programming requires the target voltage to be set to at -least 4.5 V in order to work. This can be done using -@emph{Terminal Mode}, see @ref{Terminal Mode Operation}. - -@c -@c Node -@c -@node Atmel DFU bootloader using FLIP version 1, , Atmel STK600, Programmer Specific Information -@section Atmel DFU bootloader using FLIP version 1 - -Bootloaders using the FLIP protocol version 1 experience some very -specific behaviour. - -These bootloaders have no option to access memory areas other than -Flash and EEPROM. - -When the bootloader is started, it enters a @emph{security mode} where -the only acceptable access is to query the device configuration -parameters (which are used for the signature on AVR devices). The -only way to leave this mode is a @emph{chip erase}. As a chip erase -is normally implied by the @option{-U} option when reprogramming the -flash, this peculiarity might not be very obvious immediately. - -Sometimes, a bootloader with security mode already disabled seems to -no longer respond with sensible configuration data, but only 0xFF for -all queries. As these queries are used to obtain the equivalent of a -signature, AVRDUDE can only continue in that situation by forcing the -signature check to be overridden with the @option{-F} option. - -A @emph{chip erase} might leave the EEPROM unerased, at least on some -versions of the bootloader. - -@c -@c Node -@c -@node Platform Dependent Information, Troubleshooting, Programmer Specific Information, Top -@appendix Platform Dependent Information - -@menu -* Unix:: -* Windows:: -@end menu - -@c -@c Node -@c -@node Unix, Windows, Platform Dependent Information, Platform Dependent Information -@section Unix - -@menu -* Unix Installation:: -* Unix Configuration Files:: -* Unix Port Names:: -* Unix Documentation:: -@end menu - -@c -@c Node -@c -@node Unix Installation, Unix Configuration Files, Unix, Unix -@subsection Unix Installation - -@noindent -To build and install from the source tarball on Unix like systems: - -@example -$ gunzip -c avrdude-@value{VERSION}.tar.gz | tar xf - -$ cd avrdude-@value{VERSION} -$ ./configure -$ make -$ su root -c 'make install' -@end example - -The default location of the install is into @code{/usr/local} so you -will need to be sure that @code{/usr/local/bin} is in your @code{PATH} -environment variable. - -If you do not have root access to your system, you can do the -following instead: - -@example -$ gunzip -c avrdude-@value{VERSION}.tar.gz | tar xf - -$ cd avrdude-@value{VERSION} -$ ./configure --prefix=$HOME/local -$ make -$ make install -@end example - -@menu -* FreeBSD Installation:: -* Linux Installation:: -@end menu - -@c -@c Node -@c -@node FreeBSD Installation, Linux Installation, Unix Installation, Unix Installation -@subsubsection FreeBSD Installation - -@noindent -AVRDUDE is installed via the FreeBSD Ports Tree as follows: - -@example -% su - root -# cd /usr/ports/devel/avrdude -# make install -@end example - -If you wish to install from a pre-built package instead of the source, -you can use the following instead: - -@example -% su - root -# pkg_add -r avrdude -@end example - -Of course, you must be connected to the Internet for these methods to -work, since that is where the source as well as the pre-built package is -obtained. - -@c -@c Node -@c -@node Linux Installation, , FreeBSD Installation, Unix Installation -@subsubsection Linux Installation - -@noindent -On rpm based Linux systems (such as RedHat, SUSE, Mandrake, etc.), you -can build and install the rpm binaries directly from the tarball: - -@example -$ su - root -# rpmbuild -tb avrdude-@value{VERSION}.tar.gz -# rpm -Uvh /usr/src/redhat/RPMS/i386/avrdude-@value{VERSION}-1.i386.rpm -@end example - -Note that the path to the resulting rpm package, differs from system -to system. The above example is specific to RedHat. - -@c -@c Node -@c -@node Unix Configuration Files, Unix Port Names, Unix Installation, Unix -@subsection Unix Configuration Files - -@noindent -When AVRDUDE is build using the default @option{--prefix} configure -option, the default configuration file for a Unix system is located at -@code{/usr/local/etc/avrdude.conf}. This can be overridden by using the -@option{-C} command line option. Additionally, the user's home directory -is searched for a file named @code{.avrduderc}, and if found, is used to -augment the system default configuration file. - -@menu -* FreeBSD Configuration Files:: -* Linux Configuration Files:: -@end menu - -@c -@c Node -@c -@node FreeBSD Configuration Files, Linux Configuration Files, Unix Configuration Files, Unix Configuration Files -@subsubsection FreeBSD Configuration Files - -@noindent -When AVRDUDE is installed using the FreeBSD ports system, the system -configuration file is always @code{/usr/local/etc/avrdude.conf}. - -@c -@c Node -@c -@node Linux Configuration Files, , FreeBSD Configuration Files, Unix Configuration Files -@subsubsection Linux Configuration Files - -@noindent -When AVRDUDE is installed using from an rpm package, the system -configuration file will be always be @code{/etc/avrdude.conf}. - -@c -@c Node -@c -@node Unix Port Names, Unix Documentation, Unix Configuration Files, Unix -@subsection Unix Port Names - -@noindent -The parallel and serial port device file names are system specific. -The following table lists the default names for a given system. - -@multitable @columnfractions .30 .30 .30 -@item @strong{System} - @tab @strong{Default Parallel Port} - @tab @strong{Default Serial Port} -@item FreeBSD - @tab @code{/dev/ppi0} - @tab @code{/dev/cuad0} -@item Linux - @tab @code{/dev/parport0} - @tab @code{/dev/ttyS0} -@item Solaris - @tab @code{/dev/printers/0} - @tab @code{/dev/term/a} -@end multitable - -On FreeBSD systems, AVRDUDE uses the ppi(4) interface for -accessing the parallel port and the sio(4) driver for serial port -access. - -On Linux systems, AVRDUDE uses the ppdev interface for -accessing the parallel port and the tty driver for serial port -access. - -On Solaris systems, AVRDUDE uses the ecpp(7D) driver for -accessing the parallel port and the asy(7D) driver for serial port -access. - -@c -@c Node -@c -@node Unix Documentation, , Unix Port Names, Unix -@subsection Unix Documentation - -@noindent -AVRDUDE installs a manual page as well as info, HTML and PDF -documentation. The manual page is installed in -@code{/usr/local/man/man1} area, while the HTML and PDF documentation -is installed in @code{/usr/local/share/doc/avrdude} directory. The -info manual is installed in @code{/usr/local/info/avrdude.info}. - -Note that these locations can be altered by various configure options -such as @option{--prefix}. - -@c -@c Node -@c -@node Windows, , Unix, Platform Dependent Information -@section Windows - -@menu -* Windows Installation:: -* Windows Configuration Files:: -* Windows Port Names:: -* Using the parallel port:: -* Documentation:: -* Credits.:: -@end menu - -@c -@c Node -@c -@node Windows Installation, Windows Configuration Files, Windows, Windows -@subsection Installation - -@noindent -A Windows executable of avrdude is included in WinAVR which can be found at -@url{http://sourceforge.net/projects/winavr}. WinAVR is a suite of executable, -open source software development tools for the AVR for the Windows platform. - -There are two options to build avrdude from source under Windows. -The first one is to use Cygwin (@url{http://www.cygwin.com/}). - -To build and install from the source tarball for Windows (using Cygwin): - -@example -$ set PREFIX=<your install directory path> -$ export PREFIX -$ gunzip -c avrdude-@value{VERSION}.tar.gz | tar xf - -$ cd avrdude-@value{VERSION} -$ ./configure LDFLAGS="-static" --prefix=$PREFIX --datadir=$PREFIX ---sysconfdir=$PREFIX/bin --enable-versioned-doc=no -$ make -$ make install -@end example - -Note that recent versions of Cygwin (starting with 1.7) removed the -MinGW support from the compiler that is needed in order to build a -native Win32 API binary that does not require to install the Cygwin -library @code{cygwin1.dll} at run-time. Either try using an older -compiler version that still supports MinGW builds, or use MinGW -(@url{http://www.mingw.org/}) directly. - -@c -@c XXX Please add more detailed instructions here. -@c - - -@c -@c Node -@c -@node Windows Configuration Files, Windows Port Names, Windows Installation, Windows -@subsection Configuration Files - -@menu -* Configuration file names:: -* How AVRDUDE finds the configuration files.:: -@end menu - -@c -@c Node -@c -@node Configuration file names, How AVRDUDE finds the configuration files., Windows Configuration Files, Windows Configuration Files -@subsubsection Configuration file names - -@noindent -AVRDUDE on Windows looks for a system configuration file name of -@code{avrdude.conf} and looks for a user override configuration file of -@code{avrdude.rc}. - -@c -@c Node -@c -@node How AVRDUDE finds the configuration files., , Configuration file names, Windows Configuration Files -@subsubsection How AVRDUDE finds the configuration files. - -@noindent -AVRDUDE on Windows has a different way of searching for the system and -user configuration files. Below is the search method for locating the -configuration files: - -@enumerate - -@item -The directory from which the application loaded. - -@item -The current directory. - -@item -The Windows system directory. On Windows NT, the name of this directory -is @code{SYSTEM32}. - -@item -Windows NT: The 16-bit Windows system directory. The name of this -directory is @code{SYSTEM}. - -@item -The Windows directory. - -@item -The directories that are listed in the PATH environment variable. - -@end enumerate - - -@c -@c Node -@c -@node Windows Port Names, Using the parallel port, Windows Configuration Files, Windows -@subsection Port Names - -@menu -* Serial Ports:: -* Parallel Ports:: -@end menu - -@c -@c Node -@c -@node Serial Ports, Parallel Ports, Windows Port Names, Windows Port Names -@subsubsection Serial Ports - -@noindent -When you select a serial port (i.e. when using an STK500) use the -Windows serial port device names such as: com1, com2, etc. - -@c -@c Node -@c -@node Parallel Ports, , Serial Ports, Windows Port Names -@subsubsection Parallel Ports - -@noindent -AVRDUDE will accept 3 Windows parallel port names: lpt1, lpt2, or -lpt3. Each of these names corresponds to a fixed parallel port base -address: - -@table @code -@item lpt1 -0x378 - -@item lpt2 -0x278 - -@item lpt3 -0x3BC - -@end table - -On your desktop PC, lpt1 will be the most common choice. If you are -using a laptop, you might have to use lpt3 instead of lpt1. Select the -name of the port the corresponds to the base address of the parallel -port that you want. - -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 @code{0x}). - -@c -@c Node -@c -@node Using the parallel port, Documentation, Windows Port Names, Windows -@subsection Using the parallel port - -@menu -* Windows NT/2K/XP:: -* Windows 95/98:: -@end menu - -@c -@c Node -@c -@node Windows NT/2K/XP, Windows 95/98, Using the parallel port, Using the parallel port -@subsubsection Windows NT/2K/XP - -@noindent -On Windows NT, 2000, and XP user applications cannot directly access the -parallel port. However, kernel mode drivers can access the parallel port. -giveio.sys is a driver that can allow user applications to set the state -of the parallel port pins. - -Before using AVRDUDE, the giveio.sys driver must be loaded. The -accompanying command-line program, loaddrv.exe, can do just that. - -To make things even easier there are 3 batch files that are also -included: - -@enumerate -@item install_giveio.bat -Install and start the giveio driver. - -@item status_giveio.bat -Check on the status of the giveio driver. - -@item remove_giveio.bat -Stop and remove the giveio driver from memory. -@end enumerate - -These 3 batch files calls the loaddrv program with various options to -install, start, stop, and remove the driver. - -When you first execute install_giveio.bat, loaddrv.exe and giveio.sys -must be in the current directory. When install_giveio.bat is executed it -will copy giveio.sys from your current directory to your Windows -directory. It will then load the driver from the Windows directory. This -means that after the first time install_giveio is executed, you should -be able to subsequently execute the batch file from any directory and have -it successfully start the driver. - -Note that you must have administrator privilege to load the giveio driver. - -@c -@c Node -@c -@node Windows 95/98, , Windows NT/2K/XP, Using the parallel port -@subsubsection Windows 95/98 - -@noindent -On Windows 95 and 98 the giveio.sys driver is not needed. - - -@c -@c Node -@c -@node Documentation, Credits., Using the parallel port, Windows -@subsection Documentation - -@noindent -AVRDUDE installs a manual page as well as info, HTML and PDF -documentation. The manual page is installed in -@code{/usr/local/man/man1} area, while the HTML and PDF documentation -is installed in @code{/usr/local/share/doc/avrdude} directory. The -info manual is installed in @code{/usr/local/info/avrdude.info}. - -Note that these locations can be altered by various configure options -such as @option{--prefix} and @option{--datadir}. - - -@c -@c Node -@c -@node Credits., , Documentation, Windows -@subsection Credits. - -@noindent -Thanks to: - -@itemize @bullet -@item -Dale Roberts for the giveio driver. - -@item -Paula Tomlinson for the loaddrv sources. - -@item -Chris Liechti <cliechti@@gmx.net> for modifying loaddrv to be command -line driven and for writing the batch files. - -@end itemize - -@c -@c Node -@c -@node Troubleshooting, ,Platform Dependent Information ,Top -@appendix Troubleshooting - -@noindent -In general, please report any bugs encountered via -@* -@url{http://savannah.nongnu.org/bugs/?group=avrdude}. - - -@itemize @bullet - -@item -Problem: I'm using a serial programmer under Windows and get the following -error: - -@code{avrdude: serial_open(): can't set attributes for device "com1"}, - -Solution: This problem seems to appear with certain versions of Cygwin. Specifying -@code{"/dev/com1"} instead of @code{"com1"} should help. - - -@item -Problem: I'm using Linux and my AVR910 programmer is really slow. - -Solution (short): @code{setserial @var{port} low_latency} - -Solution (long): -There are two problems here. First, the system may wait some time before it -passes data from the serial port to the program. Under Linux the following -command works around this (you may need root privileges for this). - -@code{setserial @var{port} low_latency} - -Secondly, the serial interface chip may delay the interrupt for some time. -This behaviour can be changed by setting the FIFO-threshold to one. Under Linux this -can only be done by changing the kernel source in @code{drivers/char/serial.c}. -Search the file for @code{UART_FCR_TRIGGER_8} and replace it with @code{UART_FCR_TRIGGER_1}. Note that overall performance might suffer if there -is high throughput on serial lines. Also note that you are modifying the kernel at -your own risk. - - -@item -Problem: I'm not using Linux and my AVR910 programmer is really slow. - -Solutions: The reasons for this are the same as above. -If you know how to work around this on your OS, please let us know. - -@item -Problem: Updating the flash ROM from terminal mode does not work with the -JTAG ICEs. - -Solution: None at this time. Currently, the JTAG ICE code cannot -write to the flash ROM one byte at a time. - -@item -Problem: Page-mode programming the EEPROM (using the -U option) does -not erase EEPROM cells before writing, and thus cannot overwrite any -previous value != 0xff. - -Solution: None. This is an inherent feature of the way JTAG EEPROM -programming works, and is documented that way in the Atmel AVR -datasheets. -In order to successfully program the EEPROM that way, a prior chip -erase (with the EESAVE fuse unprogrammed) is required. -This also applies to the STK500 and STK600 in high-voltage programming mode. - -@item -Problem: How do I turn off the @var{DWEN} fuse? - -Solution: If the @var{DWEN} (debugWire enable) fuse is activated, -the @var{/RESET} pin is not functional anymore, so normal ISP -communication cannot be established. -There are two options to deactivate that fuse again: high-voltage -programming, or getting the JTAG ICE mkII talk debugWire, and -prepare the target AVR to accept normal ISP communication again. - -The first option requires a programmer that is capable of high-voltage -programming (either serial or parallel, depending on the AVR device), -for example the STK500. In high-voltage programming mode, the -@var{/RESET} pin is activated initially using a 12 V pulse (thus the -name @emph{high voltage}), so the target AVR can subsequently be -reprogrammed, and the @var{DWEN} fuse can be cleared. Typically, this -operation cannot be performed while the AVR is located in the target -circuit though. - -The second option requires a JTAG ICE mkII that can talk the debugWire -protocol. The ICE needs to be connected to the target using the -JTAG-to-ISP adapter, so the JTAG ICE mkII can be used as a debugWire -initiator as well as an ISP programmer. AVRDUDE will then be activated -using the @var{jtag2isp} programmer type. The initial ISP -communication attempt will fail, but AVRDUDE then tries to initiate a -debugWire reset. When successful, this will leave the target AVR in a -state where it can accept standard ISP communication. The ICE is then -signed off (which will make it signing off from the USB as well), so -AVRDUDE has to be called again afterwards. This time, standard ISP -communication can work, so the @var{DWEN} fuse can be cleared. - -The pin mapping for the JTAG-to-ISP adapter is: - -@multitable @columnfractions .2 .2 -@item @strong{JTAG pin} @tab @strong{ISP pin} -@item 1 @tab 3 -@item 2 @tab 6 -@item 3 @tab 1 -@item 4 @tab 2 -@item 6 @tab 5 -@item 9 @tab 4 -@end multitable - -@item -Problem: Multiple USBasp or USBtinyISP programmers connected simultaneously are not -found. - -Solution: The USBtinyISP code supports distinguishing multiple -programmers based on their bus:device connection tuple that describes -their place in the USB hierarchy on a specific host. This tuple can -be added to the @var{-P usb} option, similar to adding a serial number -on other USB-based programmers. - -The actual naming convention for the bus and device names is -operating-system dependent; AVRDUDE will print out what it found -on the bus when running it with (at least) one @var{-v} option. -By specifying a string that cannot match any existing device -(for example, @var{-P usb:xxx}), the scan will list all possible -candidate devices found on the bus. - -Examples: -@example -avrdude -c usbtiny -p atmega8 -P usb:003:025 (Linux) -avrdude -c usbtiny -p atmega8 -P usb:/dev/usb:/dev/ugen1.3 (FreeBSD 8+) -avrdude -c usbtiny -p atmega8 \ - -P usb:bus-0:\\.\libusb0-0001--0x1781-0x0c9f (Windows) -@end example - -@item -Problem: I cannot do @dots{} when the target is in debugWire mode. - -Solution: debugWire mode imposes several limitations. - -The debugWire protocol is Atmel's proprietary one-wire (plus ground) -protocol to allow an in-circuit emulation of the smaller AVR devices, -using the @var{/RESET} line. -DebugWire mode is initiated by activating the @var{DWEN} -fuse, and then power-cycling the target. -While this mode is mainly intended for debugging/emulation, it -also offers limited programming capabilities. -Effectively, the only memory areas that can be read or programmed -in this mode are flash ROM and EEPROM. -It is also possible to read out the signature. -All other memory areas cannot be accessed. -There is no -@emph{chip erase} -functionality in debugWire mode; instead, while reprogramming the -flash ROM, each flash ROM page is erased right before updating it. -This is done transparently by the JTAG ICE mkII (or AVR Dragon). -The only way back from debugWire mode is to initiate a special -sequence of commands to the JTAG ICE mkII (or AVR Dragon), so the -debugWire mode will be temporarily disabled, and the target can -be accessed using normal ISP programming. -This sequence is automatically initiated by using the JTAG ICE mkII -or AVR Dragon in ISP mode, when they detect that ISP mode cannot be -entered. - -@item -Problem: I want to use my JTAG ICE mkII to program an -Xmega device through PDI. The documentation tells me to use the -@emph{XMEGA PDI adapter for JTAGICE mkII} that is supposed to ship -with the kit, yet I don't have it. - -Solution: Use the following pin mapping: - -@multitable @columnfractions .2 .2 .2 .2 -@item @strong{JTAGICE} @tab @strong{Target} @tab @strong{Squid cab-} @tab @strong{PDI} -@item @strong{mkII probe} @tab @strong{pins} @tab @strong{le colors} @tab @strong{header} -@item 1 (TCK) @tab @tab Black @tab -@item 2 (GND) @tab GND @tab White @tab 6 -@item 3 (TDO) @tab @tab Grey @tab -@item 4 (VTref) @tab VTref @tab Purple @tab 2 -@item 5 (TMS) @tab @tab Blue @tab -@item 6 (nSRST) @tab PDI_CLK @tab Green @tab 5 -@item 7 (N.C.) @tab @tab Yellow @tab -@item 8 (nTRST) @tab @tab Orange @tab -@item 9 (TDI) @tab PDI_DATA @tab Red @tab 1 -@item 10 (GND) @tab @tab Brown @tab -@end multitable - -@item -Problem: I want to use my AVR Dragon to program an -Xmega device through PDI. - -Solution: Use the 6 pin ISP header on the Dragon and the following pin mapping: - -@multitable @columnfractions .2 .2 -@item @strong{Dragon} @tab @strong{Target} -@item @strong{ISP Header} @tab @strong{pins} -@item 1 (MISO) @tab PDI_DATA -@item 2 (VCC) @tab VCC -@item 3 (SCK) @tab -@item 4 (MOSI) @tab -@item 5 (RESET) @tab PDI_CLK / RST -@item 6 (GND) @tab GND -@end multitable - -@item -Problem: I want to use my AVRISP mkII to program an -ATtiny4/5/9/10 device through TPI. How to connect the pins? - -Solution: Use the following pin mapping: - -@multitable @columnfractions .2 .2 .2 -@item @strong{AVRISP} @tab @strong{Target} @tab @strong{ATtiny} -@item @strong{connector} @tab @strong{pins} @tab @strong{pin #} -@item 1 (MISO) @tab TPIDATA @tab 1 -@item 2 (VTref) @tab Vcc @tab 5 -@item 3 (SCK) @tab TPICLK @tab 3 -@item 4 (MOSI) @tab @tab -@item 5 (RESET) @tab /RESET @tab 6 -@item 6 (GND) @tab GND @tab 2 -@end multitable - -@item -Problem: I want to program an ATtiny4/5/9/10 device using a serial/parallel -bitbang programmer. How to connect the pins? - -Solution: Since TPI has only 1 pin for bi-directional data transfer, both -@var{MISO} and @var{MOSI} pins should be connected to the @var{TPIDATA} pin -on the ATtiny device. -However, a 1K resistor should be placed between the @var{MOSI} and @var{TPIDATA}. -The @var{MISO} pin connects to @var{TPIDATA} directly. -The @var{SCK} pin is connected to @var{TPICLK}. - -In addition, the @var{Vcc}, @var{/RESET} and @var{GND} pins should -be connected to their respective ports on the ATtiny device. - -@item -Problem: How can I use a FTDI FT232R USB-to-Serial device for bitbang programming? - -Solution: When connecting the FT232 directly to the pins of the target Atmel device, -the polarity of the pins defined in the @code{programmer} definition should be -inverted by prefixing a tilde. For example, the @var{dasa} programmer would -look like this when connected via a FT232R device (notice the tildes in -front of pins 7, 4, 3 and 8): - -@example -programmer - id = "dasa_ftdi"; - desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; - type = serbb; - reset = ~7; - sck = ~4; - mosi = ~3; - miso = ~8; -; -@end example - -Note that this uses the FT232 device as a normal serial port, not using the -FTDI drivers in the special bitbang mode. - -@item -Problem: My ATtiny4/5/9/10 reads out fine, but any attempt to program -it (through TPI) fails. Instead, the memory retains the old contents. - -Solution: Mind the limited programming supply voltage range of these -devices. - -In-circuit programming through TPI is only guaranteed by the datasheet -at Vcc = 5 V. - -@item -Problem: My ATxmega@dots{}A1/A2/A3 cannot be programmed through PDI with -my AVR Dragon. Programming through a JTAG ICE mkII works though, as does -programming through JTAG. - -Solution: None by this time (2010 Q1). - -It is said that the AVR Dragon can only program devices from the A4 -Xmega sub-family. - -@item -Problem: when programming with an AVRISPmkII or STK600, AVRDUDE hangs -when programming files of a certain size (e.g. 246 bytes). Other -(larger or smaller) sizes work though. - -Solution: This is a bug caused by an incorrect handling of zero-length -packets (ZLPs) in some versions of the libusb 0.1 API wrapper that ships -with libusb 1.x in certain Linux distributions. All Linux systems with -kernel versions < 2.6.31 and libusb >= 1.0.0 < 1.0.3 are reported to be -affected by this. - -See also: @url{http://www.libusb.org/ticket/6} - -@item -Problem: after flashing a firmware that reduces the target's clock -speed (e.g. through the @code{CLKPR} register), further ISP connection -attempts fail. - -Solution: Even though ISP starts with pulling @var{/RESET} low, the -target continues to run at the internal clock speed as defined by the -firmware running before. Therefore, the ISP clock speed must be -reduced appropriately (to less than 1/4 of the internal clock speed) -using the -B option before the ISP initialization sequence will -succeed. - -As that slows down the entire subsequent ISP session, it might make -sense to just issue a @emph{chip erase} using the slow ISP clock -(option @code{-e}), and then start a new session at higher speed. -Option @code{-D} might be used there, to prevent another unneeded -erase cycle. - -@end itemize - - - -@bye - |