westfw's picture
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0



Optiboot is a very small (512 byte) bootloader, written in C, that implements a subset of the STK500v1 protocol for communications (a big enough subset to communicate with AVRDude.) It is the bootloader used on the Arduino Uno, and currently supports the following AVRs: ATmega328p, ATmega168, ATmega88, ATmega8, ATmega32, ATmega644, ATmega1284, ATmega1280.

In addition to its utility as a bootloader, optiboot is a good illustration of how to minimize the size of an avr-gcc program. It uses gcc attributes "OS_main" and "naked", alternate sections (.init9 and .version), and link options to supress the standard startup code and libraries.

Optiboot is maintained under Mercurial version control at Google Code: