diff --git a/src/avrdude.1 b/src/avrdude.1 index ffc3d51d..9e2a5ff6 100644 --- a/src/avrdude.1 +++ b/src/avrdude.1 @@ -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 diff --git a/src/doc/avrdude.texi b/src/doc/avrdude.texi index 83076b5d..2a98217e 100644 --- a/src/doc/avrdude.texi +++ b/src/doc/avrdude.texi @@ -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