Arduino 1K Bootloader

Some Background

Originally, the Arduino project centered around the ATmega8 with 8KB of flash, 1KB of RAM, and 512B of EEPROM, later this was upgraded to the ATmega168 with 16KB of flash, then finally the ATmega328P with 32KB of flash, 2KB of RAM, and 1KB of EEPROM. All of these chips use a common bootloader derived from the wiring project and further derived from the STK500 protocol.

About the bootloader

The official Arduino bootloader is 2KB, leaving 6, 14, or 30KB of available space for actual sketches and data. With some prompting, a group of developers was able to pair that down to just under 1KB, leaving a whole extra KB free. (Due to the design of the ATmegaxx8 platform, your choices for bootloader sizes are 4KB, 2KB, 1KB, and 512KB.) The new 1/2 size bootloader retains virtually all the features of the original but is smaller and does away with most if not all of the assembly code for pure C.