NAME
avr-updi - communicate with an AVR microcontroller over UPDI
SYNOPSIS
$ avr-updi [--port PORT] [--part PART] COMMAND ARGS... [COMMAND ARGS ...]
DESCRIPTION
This program contains a number of sub-commands for interacting with an AVR microcontroller using a UPDI interface.
COMMON OPTIONS
--port, -P DEVICE
Optional. Provides the USB device where the UPDI adapter is connected. If absent a default of /dev/ttyUSB0 will apply.
--part, -p PART
Required. Gives the name of the ATmega or ATtiny chip that is expected. Parts may be specified in the following ways:
ATmega4809
atmega4809
m4809
ATtiny814
attiny814
t814
Specifically, these are the same forms as recognised by avr-gcc's -mmcu
option and avrdude's -p
option, for convenience in Makefiles and build scripts.
--baud, -B BAUD
Optional. Sets a different baud rate for communications. If not supplied, will default to 115200.
If communications are unreliable, try setting a slower speed.
--erase, -e
Send the CHIPERASE key as well as the NVMPROG key when enabling programming for the write-fuses
operation. Normally this flag is not required when writing fuses to a newly-programmed chip, but may be necessary to recover from a bad checksum or bad fuse value.
--binary
Files read from or written to will be in raw binary format, instead of Intel hex.
SUBCOMMANDS
Multiple commands may be specified simultaneously; they will be executed in the given sequence. This may be useful for writing flash and EEPROM at the same time
$ avr-updi -p t814 write-flash flash.hex write-eeprom eeprom.hex
reset
Sends a reset request.
$ avr-updi reset
Note that this command does not need the --part
to be specified.
read-sib
Reads the System Information Block
$ avr-updi read-sib
Note that this command does not need the --part
to be specified.
read-signature
Reads the 3-byte signature from the chip and prints it.
$ avr-updi read-signature -p t814
erase
Erases the entire chip. Normally not required because a write-flash
operation will do this anyway, but this command may be handy for erasing a chip to reset it back to factory state.
$ avr-updi erase -p t814
read-flash
Reads from the flash portion of non-volatile memory ("NVM").
$ avr-updi read-flash -p t814 flash-save.hex [LENGTH]
Optionally reads only the given length.
write-flash
Writes to the flash portion of non-volatile memory ("NVM").
$ avr-updi write-flash -p t814 firmware.hex
read-eeprom
Reads from the EEPROM portion of non-volatile memory ("NVM").
$ avr-updi read-eeprom -p t814 eeprom-save.hex
write-eeprom
Writes to the EEPROM portion of non-volatile memory ("NVM").
$ avr-updi write-eeprom -p t814 data.hex
read-fuses
Reads fuse values.
$ avr-updi read-fuses -p t814
WDTCFG : 00
WDTCFG.PERIOD : OFF
WDTCFG.WINDOW : OFF
BODCFG : 00
BODCFG.ACTIVE : DIS
BODCFG.LVL : BODLEVEL0
BODCFG.SAMPFREQ : 1KHz
BODCFG.SLEEP : DIS
OSCCFG : 02
...
Decoded values of fields are also printed.
write-fuses
Writes fuse values.
$ avr-updi write-fuses -p t814 BODCFG=02 SYSCFG0.RSTPINCFG=GPIO
Fuses may be specified as numerical values for entire registers, or symbolic names for individual fields.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>