$ tools/test-avrdude -h
Syntax: test-avrdude {<opts>}
Function: test AVRDUDE for certain programmer and part combinations
Options:
-c <configuration spec> additional configuration options used for all runs
-d <sec> delay between test commands (default 4 seconds)
-e <avrdude path> set path of AVRDUDE executable (default avrdude)
-l list test commands but do not execute them
-p <programmer/part specs> can be used multiple times, overrides default tests
-s skip EEPROM tests for bootloaders
-v verbose: show AVRDUDE error and warning messages
-? or -h show this help text
Example:
$ test-avrdude -d 0 -p "-c dryrun -p t13" -p "-c dryrun -p m4809"
$ echo | tools/test-avrdude -p"-cdryrun -pm328p" -d0
Testing avrdude version 7.2-20240128 (09345002)
Prepare "-cdryrun -pm328p" and press 'enter' or 'space' to continue. Press any other key to skip
✅ 0.064 s: fuse access: clear, set and read eesave fuse bit
✅ 0.083 s: fuse access: set eesave fusebit to delete EEPROM on chip erase
✅ 0.066 s: chip erase
✅ 0.068 s: flash -U write/verify holes_rjmp_loops_32768B.hex
✅ 0.067 s: flash -T write/verify holes_rjmp_loops_32768B.hex
✅ 0.067 s: eeprom check whether programmer can flip 0s to 1s
✅ 0.067 s: eeprom -U write/verify holes_pack_my_box_1024B.hex
✅ 0.066 s: eeprom -T write/verify holes_{the_five_boxing_wizards,pack_my_box}_1024B.hex
✅ 0.069 s: chip erase and spot check flash is actually erased
✅ 0.067 s: spot check eeprom is erased, too
Previously, the code would limit the clock to 1Mhz. If a higher clock
was specified, it would be set to 1.024Mhz (0x400 khz).
This commit removes this artificial limit, while still preventing
overflowing the two bytes available in the command (effectively limiting
to 65535 kHz).
The original limit seems inappropriate, because the JTAGEICE3 and ATMEL
ICE actually support higher clocks than the old limit. For SPI, the
JTAGICE3 documents supporting up to 1.875Mhz and the ATMEL ICE up to
5Mhz. In practice the JTAGEICE3 (with the newer EDBG version where it
becomes pretty much identical to the ATMEL ICE) also works up to 5Mhz.
When trying to set higher values, the behaviour seems to depend on the
current value. The programmer seems to either keep the previous value
(e.g. from 3Mhz to 10Mhz), or use 8kHz / 125μs (e.g. from 5Mhz to
10Mhz). In any case, the value read back afterwards (and printed with
-v) reflects the actual value.
Also note that the code also applies a lower limit of 1kHz (to ensure
the raw value sent to the device, in kHz, is never zero), but in
practice sending a value of lower than 8kHz ends up setting 8kHz
(125μs). This is also the minimum value in the device documentation.
This commit was tested with:
Programmer Type : JTAG3_ISP
Description : Atmel AVR JTAGICE3 in ISP mode
ICE HW version : 2
ICE FW version : 3.55 (rel. 130)
Update the GPL version 2 text to the current text as published at
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
The changes are
* the updated mailing address of the FSF
* reference to LGPL with name change ("Library" -> "Lesser")
* whitespace formatting
* "write to" new FSF address to get a copy of the license
instead of "seeing http://www.gnu.org/licenses/"