Skip to content
Simple bootloader for the tiniest AVR microcontrollers with single wire software UART communication
Assembly Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Description [PL]:
Description [EN]:

Simple bootloader for tiniest AVR microcontrollers (like ATtiny13, etc). Without EEPROM programming capabilities, it takes only 160 bytes (80 words!). For communication it uses software UART fed through single wire (half-duplex).

Bootloader is provided in two versions:

  • flash read/write,
  • flash and eeprom read/write.

I guess that asm files are commented well enough to be understood. I've also provided simple Python script to make use of bootloader.

Software UART functions are placed at the end of flash memory, and they can be reused by user application if needed.

Bootloader and examples are compiled to use with 1.2MHz oscillator! If you want to use different speed, consider modifying baud constant at the beginning of bootloader code according to AVR305 note

One important thing to remember: You have to enable self-programming in fuse bits!

Files in bin directory:

  • hex2bin.exe - application to convert hex files to binary (not mine)
  • - script to use with EEPROM + FLASH version of bootloader
  • - script to use with FLASH only version of bootloader
  • TestBlink1.bin - user application that blinks LED
  • TestBlink2.bin - user application that blinks LED, but slower
  • UartExample.bin - user application that uses UART routines from bootloader
  • uBoot-flash-and-eeprom.bin - EEPROM + FLASH version of bootloader, 9600 baud/s @ 1.2MHz
  • uBoot-flash-only.bin - FLASH only version of bootloader, 9600 baud/s @ 1.2MHz
You can’t perform that action at this time.