Optiboot
From Steak Wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Guide for AVRDragon, atmega328p, and optiboot bootloader.
gotchas:
- wrong atmega328 (need atmega328p-pu, not atmega328-pu) (though this can still be used)
- need fuse bits set separate from programming hex (pickit w/pics on the other hand handle this all in one)
- need lock bits set
- need 16MHz crystal when programming hex and lock bits (can use one from uno board)
- avrdragon needs disconnect / reconnect
quick guide:
set proper wiring on avr dragon (see image on right)
set fuse bits
avrdude -b 19200 -c dragon_isp -p m328p -v -e -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m
add crystal (pins 9 and 10 on atmega328p, see datasheet) , load hex, and program lock fuse
avrdude -b 19200 -c dragon_isp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
hexfilename.hex - the optiboot loader is included in e.g. arduino-1.8.5/hardware/arduino/avr/bootloaders/optiboot_atmega328.hex
If everything is done correctly, you should now be able to upload from Arduino IDE.
tips/troubleshooting
- use another Uno's crystal if you don't have one on hand. Solder wires and jump to dragon ziff socket.
- efuse verifies as 0xFD, though some guides write 0x05. High bits are unused, so they are set to 1. Ends up as 0xFD if written with either 0xFD or 0x05.
- atmega328 (not atmega328p), use -F with avrdragon.
- board.txt somewhere in arduino folder also has proper fuse settings (search for uno)
- first breakout on dragon is gnd/vcc header. Obviously, multiple of these can be used.
- if it errors out, disconnect / reconnect dragon. e.g.
avrdude: usbdev_open(): Found AVRDRAGON, serno: 00######### avrdude: jtagmkII_getsync(): sign-on command: status -1
References
- https://forum.arduino.cc/index.php?topic=125622.0 - where is optiboot hex file in arduino download folder
- https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader - fuse and lock bit information (seems to be incorrect)
- http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/ - general info on atmega328p fuse settings.