Merge pull request #2124 from stefanrueger/documentation

Improve Documentation
This commit is contained in:
Stefan Rueger
2026-06-14 16:25:41 +01:00
committed by GitHub
2 changed files with 43 additions and 52 deletions

View File

@@ -63,8 +63,8 @@ supports Atmel's STK500 programmer,
Atmel's AVRISP and AVRISP mkII devices,
Atmel's STK600,
Atmel's JTAG ICE (mkI, mkII and 3, the latter two also in ISP mode),
programmers complying to AppNote AVR910 and AVR109 (including the Butterfly),
as well as a simple hard-wired
programmers complying to AppNote AVR910 and AVR109 (including the Butterfly)
as well as, on Linux or BSD systems, a simple hard-wired
programmer connected directly to a
.Xr ppi 4
or
@@ -112,8 +112,7 @@ 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 https://kolev.info/blog/2013/01/06/avrdude-linuxgpio/ for a more
detailed tutorial about using this programmer type.
the 74HC244.
.Pp
Under a Linux installation with direct access to the SPI bus and GPIO
pins, such as would be found on a Raspberry Pi, the ``linuxspi''
@@ -521,7 +520,7 @@ auto-erased at the beginning. If
detects a
.Fl U
command that writes to flash then auto-erase will be carried out before
any other programming unless a -T erase commad has been detected
any other programming unless a -T erase command has been detected
beforehand and unless flash is read before writing to it. For the purpose
of this analysis any terminal command is considered to possibly read
flash.
@@ -598,14 +597,14 @@ Note that the result will be stored in the EEPROM cell at address 0.
Use
.Ar port
to identify the connection through which the programmer is attached. This
can be a parallel, serial, spi or linuxgpio connection. The programmer
normally specifies the connection type; in absence of a -P specification,
can be a serial, spi, linuxgpio or, on Linux or BSD systems, a parallel connection.
The programmer normally specifies the connection type; in absence of -P,
system-dependent default values
.Pa default_parallel ,
.Pa default_serial ,
.Pa default_spi ,
or
.Pa default_linuxgpio
or
.Pa default_parallel
from the configuration file are used. If you need to use a different port,
use this option to specify the alternate port name.
.Pp

View File

@@ -164,19 +164,17 @@ needing to have, or connect, a real physical programmer. Similarly,
without connecting an AVR part.
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), 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.
Atmel's AVRISP and AVRISP mkII devices, Atmel's STK600, Atmel's JTAG ICE
(the original one, mkII, and 3), appnote avr910, appnote avr109 (including
the AVR Butterfly), serial bit-bang adapters, and, on Linux and BSD
systems, 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
@@ -196,9 +194,7 @@ 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
@url{https://kolev.info/blog/2013/01/06/avrdude-linuxgpio/} for a more
detailed tutorial about using this programmer type.
the 74HC244.
Under a Linux installation with direct access to the SPI bus and GPIO
pins, such as would be found on a Raspberry Pi, the ``linuxspi''
@@ -206,7 +202,7 @@ programmer type can be used to directly connect to and program a chip
using the built in interfaces on the computer. The requirements to use
this type are that an SPI interface is exposed along with one GPIO
pin. The GPIO serves as the reset output since the Linux SPI drivers
do not hold chip select down when a transfer is not occuring and thus
do not hold chip select down when a transfer is not occurring and thus
it cannot be used as the reset pin. A readily available level
translator should be used between the SPI bus/reset GPIO and the chip
to avoid potentially damaging the computer's SPI controller in the
@@ -383,7 +379,7 @@ below for details.
@cindex CH341A programmer
The USBasp ISP, USBtinyISP and CH341A adapters are also supported, provided
AVRDUDE has been compiled with libusb support.
They former two feature simple firmware-only USB implementations, running on
The former two feature simple firmware-only USB implementations, running on
an ATmega8 (or ATmega88), or ATtiny2313, respectively.
CH341A programmers connect directly to the AVR target. Their SPI bit clock
is approximately 1.7@w{ }MHz and cannot be changed. As a consequence, the
@@ -460,7 +456,7 @@ name did not conflict with AVRPROG.EXE which is the name of Atmel's
Windows programming software.
For many years, the AVRDUDE source resided in public repositories on
savannah.nongnu.org,
the now read-only savannah.nongnu.org,
where it continued to be enhanced and ported to other systems. In
addition to FreeBSD, AVRDUDE now runs on Linux, macOS and Windows. The
developers behind the porting effort primarily were Ted Roth, Eric
@@ -727,7 +723,7 @@ In absence of an explicit @code{-e} or @code{-D} option avrdude tries to
augur from the command line whether or not the chip should be auto-erased
at the beginning. If avrdude detects a @code{-U} command that writes to
flash then auto-erase will be carried out before any other programming
unless a @code{-T} erase commad has been detected beforehand and unless
unless a @code{-T} erase command has been detected beforehand and unless
flash is read before writing to it. For the purpose of this analysis any
terminal command is considered to possibly read flash.
@@ -831,12 +827,13 @@ Note that the result will be stored in the EEPROM cell at address 0.
@cindex @code{-P} @var{port}
@cindex @code{--port} @var{port}
Use @var{port} to identify the connection through which the programmer is
attached. This can be a parallel, serial, spi or linuxgpio connection. The
programmer normally specifies the connection type; in absence of a @code{-P}
specification, system-dependent default values @code{default_parallel},
@code{default_serial}, @code{default_spi}, or @code{default_linuxgpio} from
the configuration file are used. If you need to use a different port, use this
option to specify the alternate port name.
attached. This can be a serial, spi, linuxgpio or, on a Linux or BSD
system, parallel connection. The programmer normally specifies the
connection type; in absence of a @code{-P} specification, system-dependent
default values @code{default_serial}, @code{default_spi},
@code{default_linuxgpio} or @code{default_parallel} from the configuration
file are used. If you need to use a different port, use this option to
specify the alternate port name.
USB-only programmers normally do not need the port option be specified as
they are automatically identified via their vendor and product IDs from
@@ -5337,8 +5334,16 @@ The directories that are listed in the PATH environment variable.
@cindex Windows 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.
When you select a serial port (i.e. when using an STK500) use the Windows
serial port device names such as: COM1, COM2, etc. If the board in
question uses an USB-serial adapter, or is connected via one, there
are several ways to identify the correct port name:
@itemize @bullet{}
@item In the Windows Device Manager under Ports, then COM & LPT
@item Enquiring @code{avrdude -P "?s"} if compiled with libserialport
@item Use the serial adapter name instead of COMx, e.g., @code{-P ft232r}
@end itemize
@c
@c Node
@@ -5349,7 +5354,7 @@ Windows serial port device names such as: com1, com2, etc.
@noindent
AVRDUDE does not support parallel port programming in Windows.
If you need to run AVRDUDE using programmer on a parallel port,
If you need to run AVRDUDE using a programmer on a parallel port,
you might want to try one of the BSDs or Linux.
@ignore
@@ -5664,24 +5669,11 @@ 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).
Solution: None (may be a firmware issue of the AVR Dragon).
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