3. Terminal Mode Operation

AVRDUDE has an interactive mode called terminal mode that is enabled by the -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.

3.1. Terminal Mode Commands

The following commands are implemented:

dump `memtype` `addr` `nbytes`

Read nbytes from the specified memory area, and display them in the usual hexadecimal and ASCII form.

dump

Continue dumping the memory contents for another nbytes where the previous dump command left off.

write `memtype` `addr` `byte1` … `byteN`

Manually program the respective memory cells, starting at address addr, using the values byte1 through byteN. This feature is not implemented for bank-addressed memories such as the flash memory of ATMega devices.

erase

Perform a chip erase.

send `b1` `b2` `b3` `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.

sig

Display the device signature bytes.

spi

Enter direct SPI mode. The pgmled pin acts as slave select. Only supported on parallel bitbang programmers.

part

Display the current part settings and parameters. Includes chip specific information including all memory types supported by the device, read/write timing, etc.

pgm

Return to programming mode (from direct SPI mode).

verbose [`level`]

Change (when level is provided), or display the verbosity level. The initial verbosity level is controlled by the number of -v options given on the command line.

?

help

Give a short on-line summary of the available commands.

quit

Leave terminal mode and thus AVRDUDE.

In addition, the following commands are supported on the STK500 and STK600 programmer:

vtarg `voltage`

Set the target’s supply voltage to voltage Volts.

varef [`channel`] `voltage`

Set the adjustable voltage source to voltage Volts. This voltage is normally used to drive the target’s Aref input on the STK500 and STK600. The STK600 offers two reference voltages, which can be selected by the optional parameter channel (either 0 or 1).

fosc `freq`[`M`|`k`]

Set the master oscillator to freq Hz. An optional trailing letter M multiplies by 1E6, a trailing letter k by 1E3.

fosc off

Turn the master oscillator off.

sck `period`

STK500 and STK600 only: Set the SCK clock period to period microseconds.

JTAG ICE only: Set the JTAG ICE bit clock period to 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.

parms

STK500 and STK600 only: Display the current voltage and master oscillator parameters.

JTAG ICE only: Display the current target supply voltage and JTAG bit clock rate/period.

3.2. Terminal Mode Examples

Display part parameters, modify eeprom cells, perform a chip erase:

@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

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:

@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