Optiboot

From Steak Wiki
Jump to navigationJump to search

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)

quick guide:

set proper wiring on avr dragon (see image in pics) 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


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.

References