V-USB Projects

USBaspLoader

USBaspLoader is a USB boot loader for AVR microcontrollers. Instead of requiring a separate downloader tool on the host, it emulates the popular USBasp programmer so that it can be controlled by AVRDUDE.

USBaspLoader is a USB boot loader for AVR microcontrollers. It can be used on all AVRs with at least 2 kB of boot loader section, e.g. the popular ATMega8. The firmware is flashed into the upper 2 kB of the flash memory and takes control immediately after reset. If a certain hardware condition is met (this condition can be configured, e.g. a jumper), the boot loader waits for data on the USB interface and loads it into the remaining part of the flash memory. If the condition is not met, control is passed to the loaded firmware.

Nothing new so far, that’s the same as other boot loaders like AVRUSBBoot or bootloadHID do. The difference is that USBaspLoader presents itself as USBasp programmer to the host. USBasp is a simple USB based AVR programmer which is supported by AVRDUDE. You therefore don’t need a special procedure for uploading, just pretend you use USBasp to flash your device.

USBaspLoader requires a chip with a boot code section in the flash memory. For ATTiny devices, which don’t have a boot code section, check out Micronucleus.

Arduino Compatible Boards with V-USB

One of the main advantages of this boot loader is that it can be integrated into the Arduino IDE. Just edit Arduino’s hardware/boards.txt configuration and add another board where you set the upload protocol to "usbasp". Metaboard is an example of an Arduino compatible prototyping board based on USBaspLoader. Since no FTDI chip is needed, it is substantially cheaper than e.g. the Arduino Diecimila. The single sided design and the integrated breadboard area make it an ideal choice for prototyping.

Download

Stephan Bärwolf maintains a fork of USBaspLoader on Github which is actively maintained.

Release Notes

Release 2012-12-08

  • Updated to latest driver, using gcc 4.6.2. This saves a couple of bytes, so that we can include EEPROM support in more configurations.