Bootloader-ul este o bucată de software care încarcă din diverse surse programul ce trebuie rulat de un procesor. Un bootloader USB este posibil pe plăcuța de PM datorită bibliotecii V-USB, care conține întreaga stivă USB în firmware (în codul bootloader-ului). Este o interfață “bit-banged” (se comută în mod direct de software transmisia fiecărui bit), nu foarte rapidă și care ocupă mult timp de procesare. Puteți folosi V-USB și în proiectele voastre.
V-USB are nevoie de conexiunile din figură cu mufa usb care ajunge la un host USB.
Bootloader-ul are două componente și nu necesită niciun driver (folosește driver-ele USB HID prezente în orice sistem de operare modern): firmware-ul de bootloader pe microcontroller și aplicația de pe PC.
Descărcați Arhiva:
firmware aveți binarul și codul sursă pentru bootloader.main.hex, trebuie scris în memoria program a microcontroller-ului cu ajutorul unui programator dedicat (ex: AVR ISP MKII)command line este utilitarul în linie de comandă pentru încărcarea fișierul binar pe microcontrollergui este un GUI pentru Windows care face același lucru.HIGH FUSE 0x92, LOW FUSE 0xDE, EXTENDED FUSE 0xFD, care practic descriu următoarele configurări:BOOTSZ de 1024 words (16biți) - 2K este dimensiunea maximă a bootloader-uluiBOOTRST, pentru ca microcontroller-ul să pornească la RESET direct în bootloader, nu în programul obișnuitCKSEL, pentru a selecta un ceas extern de frecvență mare (>8MHz)CKDIV8 dezactivat, pentru că microcontroller-ul să nu mai dividă ceasul prin 8 înainte de a-l folosiArhiva originală se găsește pe site-ul Bootload HID. Pașii necesari configurării V-USB sau BootloaderHID (care au fost deja făcuți în arhiva de pe această pagină) sunt următorii:
MakefileMakefile. Dacă la fuse bits adresa este 0x3c00 (în cuvinte), byte address este dublu, deci 0x7800bootloaderconfig.h, în cazul acesta trebuie specificat portul (D) și pinii (D+ este PD2, D- este PD3)bootloaderconfig.h: #define bootLoaderCondition() ((PIND & (1<<PD6)))
PD6). Pe calculator va apărea dispozitivul HID-compliant device. 
              <imgcaption find_devices | Butonul 'Find Devices'>
</imgcaption>
              <imgcaption open_hex | Butonul 'Open .hex file'>
</imgcaption>
              <imgcaption check_reboot | Checkbox-ul 'Reboot AVR'>
</imgcaption>
lsusb)software și rulați make$ sudo bootloadHID -r fisier.hex
# apt-get install gcc-avr avr-libc libusb-dev
pe Fedora
# yum install gcc-avr avr-libc libusb-devel
| Fuse | valoare | 
|---|---|
| Extended | 0xFF | 
| High | 0xDA | 
| Low | 0xFF | 
–> adresa pornire (in gcc) 0x7800
Pe Linux fuse-urile se vor seta cu comenzile
$ avrdude -c avrispmkii -P usb -p m324pa -U lfuse:w:0xff:m $ avrdude -c avrispmkii -P usb -p m324pa -U hfuse:w:0xda:m $ avrdude -c avrispmkii -P usb -p m324pa -U efuse:w:0xff:m $ avrdude -c avrispmkii -P usb -p m324pa -U lock:w:0x2f:m
| Fuse | valoare | 
|---|---|
| Extended | 0xFF | 
| High | 0xD8 | 
| Low | 0xFF | 
–> adresa pornire (in gcc) 0x7000
Identificare:
Rezolvare:
Identificare:
Rezolvare:
Identificare:
Rezolvare: