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:
Makefile
Makefile
. 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: