AVRUSBBoot - USB bootloader for Atmel AVR controllers

AVRUSBBoot is a bootloader for the Atmel AVR controllers. It uses a firmware-only USB driver to transfer binary data from the PC to the flash of the controller. Once the AVR is flashed with the bootloader, no other ISP programmer is needed; then the microcontroller can be reprogrammed over USB.



Basically AVRUSBBoot can be used with all circuits which are supported by the AVR USB driver. To switch between the bootloader and the application, an aditional jumper is necessary. Here is an example (Here the levels on the data lines are 5V which doesn't meet the USB specification! The supply voltage should be regulated to 3,3V - 3,6V):

AVRUSBBoot circuit

Firmware and adaptation

The firmware has to be adapted to your hardware. All necessary changes has to be done in the following two files: Compile the firmware. You need avr-gcc, avr-binutils and avr-libc:
$ cd firmware
$ make
The bootloader firmware has to be written to the controller with a ISP programmer. Once the bootloader is flashed, you don't need a programmer and you can download the binary data over USB. Don't forget to set the fuses for the external clock source when flashing the bootloader for the first time!


A C++ tool for downloading hex files is provided. To compile the program, you need libusb.
$ cd software
$ make
When the device is connected and the bootloader is started (set the jumper before connecting the device), hex files can be written to the flash of the microcontroller:
$ ./avrusbboot test.hex


avrusbboot.2006-06-25.tar.gz (128 kB)


en http://www.obdev.at/products/avrusb/ Firmware-only AVR USB driver
en http://libusb.sourceforge.net/ libusb
en http://libusb-win32.sourceforge.net/ LibUsb-Win32