USB bootloaders for AVR microcontrollers
Probably most proper microcontroller programming method is using a bootloader program. Because you don’t need any special programming adapters or special knowledge - you just need to connect standard cable from your PC to target board and run special program on PC which communicates with MCU bootloader program. The idea is simple:
If microcontroller is preconfigured then after reset it starts running not from start memory location which is usually at 0×0000 address, but at some specific location, where usually bootloader lies.
All AVR ATmega family microcontrollers have ability to be programmed with bootloader. Program start address depends on AVR fuse settings. If settings says that program counter PC has to jump to bootloader section after reset, then first of all bootloader has to be executed. Bootloaders can be various sizes and can use different algorithms and interfaces from where program will be loaded. Sources can be Flash cards (MMC/SD), I2C, USART, SPI and USB.
Variety of AVR bootloaders
Most of AVR bootloaders are using COM port for connectivity with PC. This can be OK if USB-USART bridge is used. As a mater of fact it is not always to run somebody’s written bootlaoder at first time. Usually it may require some customizations, reading help documents. IN the list you can see a list of most popular bootloaders available (there may be more):
- Atmex, http://ladyada.net/techproj/Atmex/, COM, 19200bps, Assembler; JAvrProg(Java), ATtiny2313 (8-16Mhz);
- Bootloader Programmer, Peter Dannegger, http://www.mikrocontroller.net/topic/12181, COM, Assembler; ATmega8/16/32/128;
- AVRProg-compatible Bootloader, Martin Thomas, http://www.siwawi.arubi.uni-kl.de/avr_projects/, COM, WinAVR (C); AVRProg; Various AVRs and speeds;
- USBisp Bootloader, Matthias Weisser, http://www.matwei.de/doku.php?id=en:electronics:usbisp, USB, COM, AVR-GCC(C); AVRProg; STK-500; ATmega8, FT245BM;6MHz;
- DL5NEG, Herbert Dingfelder, http://www.herbert-dingfelder.de/bootloader/bootloader.html, COM, 19200bps, ASM, AVRProg;ATmega8 7.3728MHz;
- Chip45boot, Erik Lins, http://www.chip45.com/index.pl?page=chip45boot〈=en, COM, 11500bps, WinAVR; HyperTerminal; Various AVR
- STK500-Bootloader, Pascal Stang, http://hubbard.engr.scu.edu/embedded/avr/bootloader/, COM, Hex; AVRProg; STK500; ATmega8-128; 7.3 - 22.1MHz
- AVR109 (AVR Butterfly), Atmel, http://www.atmel.com, COM, IAR(C); ATmega series; 12MHz;
- AVRUSBBoot, Thomas Fischl, http://www.fischl.de/avrusbboot/, USB, AVR-GCC; ATmega8(other Megas); 12MHz;
- Megaload, Sylvain Bissonnette, http://www.microsyl.com/megaload/megaload.html, COM, 11500bps, ICCAVR(C); Megaload.NET; Various AVR;
- Bootload HID, http://www.obdev.at/products/avrusb/bootloadhid.html, USB, HID, WinAVR; ATmega8;
- Crypto_Boot, http://avrusb.wikidot.com/project:crypto-boot, USB, IAR(C); Crypted AES; ATmega32; 12MHz.
There are even more bootloaders but most of them are for COM port. These can be adapted to USB by using USART to USB bridges like FT245BM. But probably it is more convenient when USB is connected directly to MCU and communication part is done by firmware USB driver.
Blogsphere: TechnoratiFeedsterBloglines
Bookmark: Del.icio.usSpurlFurlSimpyBlinkDigg
RSS feed for comments on this post | TrackBack URI for this post
New on WinAVR Tutorial
Running TX433 and RX433 RF modules with AVR microcontrollers,Sometimes in embedded design you may want to go wireless. Might be you will want to log various readi …Programming AVR ADC module with WinAVR,Most of AVR microcontrollers have Analog to Digital Converter (ADC) integrated in to chip. Such solut … |
New on WinARM Tutorial
What are differences between WinARM and WinAVR,Everyone who is working with AVR microcontrollers knows this powerful tool – WinAVR (http://win …LPC2000 watchdog timer,As in all microcontrollers watchdog timers purpose isto reset microcontroller after reasonable amount … |


April 28th, 2008 at 10:16 am
[...] USB bootloaders for AVR microcontrollers - [Link] [...]
April 29th, 2008 at 10:42 am
Yes, the bootloaders are nice, but the problem is that you must put the bootloader program in the micro by normal programming…