-
Notifications
You must be signed in to change notification settings - Fork 150
avrdude benchmark for Flash and EEPROM programming
mcuee edited this page Mar 1, 2024
·
25 revisions
- Speed is usually not the most important factor when choosing a programmer or bootloader. Stability may be more important. In terms of programmer, budget may play a key role in selecting the programmer. In terms of bootloaders, code size may be an important factor to consider.
- This page will focus on the programmers and bootloader mentioned in the FAQ. They are from either Microchip, or from the community (with hardware design and/or firmware source codes available).
tools/test-avrdude -b
generates an output for which benchmark tables can be filtered. For example,
./test-avrdude -e ./avrdude.exe -b -d 0 -t .\
-p "-c urclock -P COM20 -p ATmega328P -b 2000000" \
-p "-c urclock -P COM20 -p ATmega328P -b 1000000" \
-p "-c urclock -P COM20 -p ATmega328P -b 500000" \
-p "-c urclock -P COM20 -p ATmega328P -b 250000" \
-p "-c urclock -P COM20 -p ATmega328P -b 115200" | grep -v ^'[^T |]'
The benchmark shows the wall clock time of avrdude carrying out the following tasks
- Fl-ewv: erase flash, then write a sketch with three sections separated by holes to flash and verify
- Fl-r: read the full flash memory and write to file
- EE-wv: write data with two data sections separated by a hole to EEPROM and verify
- EE-r: read the full EEPROM memory and write to file
The sketch and data payload is roughly one sixth of the respective memory size
-c pgm |
-p part |
Fl-ewv | Fl-r | EE-wv | EE-r | Comments | |
---|---|---|---|---|---|---|---|
✅ | urclock | ATmega328P | 1.73 s | 0.62 s | 1.25 s | 0.45 s | -b 2000000 urboot u7.7 -eu-jPrac , ATmega16U2 |
✅ | urclock | ATmega328P | 1.79 s | 0.80 s | 1.25 s | 0.46 s | -b 1000000 urboot u7.7 -eu-jPrac , ATmega16U2 |
✅ | urclock | ATmega328P | 1.92 s | 1.15 s | 1.25 s | 0.50 s | -b 500000 urboot u7.7 -eu-jPrac , ATmega16U2 |
✅ | urclock | ATmega328P | 2.17 s | 1.86 s | 1.28 s | 0.58 s | -b 250000 urboot u7.7 -eu-jPrac , ATmega16U2 |
✅ | urclock | ATmega328P | 2.76 s | 3.49 s | 1.34 s | 0.81 s | -b 115200 urboot u7.7 -eu-jPrac , ATmega16U2 |
✅ | urclock | ATmega328P | 2.04 s | 0.90 s | 1.35 s | 0.71 s | -b 2000000 urboot u7.7 weu-jPrac , FT232RL |
✅ | urclock | ATmega328P | 2.09 s | 1.02 s | 1.35 s | 0.71 s | -b 1000000 urboot u7.7 weu-jPrac , FT232RL |
✅ | urclock | ATmega328P | 2.23 s | 1.47 s | 1.35 s | 0.73 s | -b 500000 urboot u7.7 weu-jPrac , FT232RL |
✅ | urclock | ATmega328P | 2.48 s | 2.08 s | 1.36 s | 0.74 s | -b 250000 urboot u7.7 weu-jPrac , FT232RL |
✅ | urclock | ATmega328P | 3.02 s | 3.68 s | 1.43 s | 0.97 s | -b 115200 urboot u7.7 weu-jPrac FT232RL |
✅ | urclock | ATmega2560 | 7.78 s | 4.83 s | 4.08 s | 1.44 s | -b 1000000 urboot u7.7 weu-jPrac , CH340 |
✅ | urclock | ATmega2560 | 8.68 s | 7.56 s | 4.11 s | 1.37 s | -b 500000 urboot u7.7 weu-jPrac , CH340 |
✅ | urclock | ATmega2560 | 10.51 s | 13.13 s | 4.13 s | 1.59 s | -b 250000 urboot u7.7 weu-jPrac , CH340 |
✅ | urclock | ATmega2560 | 14.73 s | 25.41 s | 4.25 s | 2.05 s | -b 115200 urboot u7.7 weu-jPrac , CH340 |
✅ | urclock | ATmega2560 | 8.36 s | 6.49 s | 4.42 s | 2.29 s | -b 1000000 urboot u7.7 wes-hprac , CH340, STK500v1 |
✅ | urclock | ATmega2560 | 9.31 s | 9.40 s | 4.41 s | 2.37 s | -b 500000 urboot u7.7 wes-hprac , CH340, STK500v1 |
✅ | urclock | ATmega2560 | 11.22 s | 14.94 s | 4.52 s | 2.56 s | -b 250000 urboot u7.7 wes-hprac , CH340, STK500v1 |
✅ | urclock | ATmega2560 | 15.49 s | 27.65 s | 4.79 s | 3.15 s | -b 115200 urboot u7.7 wes-hprac , CH340, STK500v1 |
✅ | wiring | ATmega2560 | 12.41 s | 31.17 s | 5.62 s | 4.37 s | -b 115200 -D, CH340, STK500v2 |
✅ | urclock | ATmega328P | 9.38 s | 4.60 s | -- | -- | -b 115200 old Optboot o4.4 --s-h-r-- , FT232RL, STK500v1 |
✅ | arduino | ATmega328P | 2.92 s | 5.08 s | -- | -- | -b 115200 old Optboot o4.4 --s-h-r-- , FT232RL, STK500v1 |
✅ | arduino | ATmega328P | 1.98 s | 2.07 s | -- | -- | -b 1000000 MiniCore Optiboot o8.0 -?s-?-r-- , FT232RL, STK500v1 |
Note: USBasp (ATmega8A based) and USBtinyISP (ATtiny2313A based)
-c pgm |
-p part |
Fl-ewv | Fl-r | EE-wv | EE-r | Comments | |
---|---|---|---|---|---|---|---|
✅ | usbasp | ATmega328P | 2.53 s | 5.43 s | 3.03 s | 0.69 s | -B 0.25 |
✅ | usbasp | ATmega328P | 2.49 s | 5.40 s | 3.03 s | 0.64 s | -B 0.5 |
✅ | usbasp | ATmega328P | 3.10 s | 6.72 s | 3.03 s | 0.68 s | -B 1 |
✅ | usbasp | ATmega328P | 3.81 s | 8.77 s | 3.10 s | 0.78 s | -B 2 |
✅ | usbasp | ATmega328P | 4.80 s | 9.82 s | 3.12 s | 0.85 s | -B 4 |
✅ | usbtiny | ATmega328P | 3.54 s | 8.97 s | 1.38 s | 0.56 s | -B 0.25 |
✅ | usbtiny | ATmega328P | 3.56 s | 8.73 s | 1.36 s | 0.56 s | -B 0.5 |
✅ | usbtiny | ATmega328P | 3.53 s | 8.98 s | 1.39 s | 0.57 s | -B 1 |