Table of Contents

Ghid folosire Bootloader USB

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:

Etape necesare:

Arhiva 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:

#define bootLoaderCondition() ((PIND & (1<<PD6)))

Folosire

<imgcaption find_devices | Butonul 'Find Devices'></imgcaption>

<imgcaption open_hex | Butonul 'Open .hex file'></imgcaption>

<imgcaption check_reboot | Checkbox-ul 'Reboot AVR'></imgcaption>

Folosire pe Linux

$ 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-uri

Bootloader 1024 words

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

Bootloader 2048 words

Fuse valoare
Extended 0xFF
High 0xD8
Low 0xFF

–> adresa pornire (in gcc) 0x7000

Troubleshooting

Tensiunea care indică prezența unui device USB low-speed este prea mică

Identificare:

  1. Se încărcă un program care pune pinii de comunicație cu USB-ul (PD2 și PD3) în impedanță mărită.
  2. Se măsoară tensiunea pe linia D- a USB-ului (catodul/minusul diodei Zener cea mai apropiată de mufa USB).
  3. Tensiunea trebuie să fie 3.3V. Experimental, funcționează și până la ~3V, dar depinde de îngăduința host-ului USB (PC-ul).

Rezolvare:

  1. Se reduce rezistența de pull-up prin lipirea în paralel a unei alte rezistențe de valoare apropiată.

Tensiunea liniilor de date USB este prea mică

Identificare:

  1. Se încărcă un program care pune pinii de comunicație cu USB-ul (PD2 și PD3) în starea 1.
  2. Se măsoară tensiunea pe liniile D+ și D- ale USB-ului (catozii/minusurile diodelor Zener).
  3. Tensiunea trebuie să fie mai mare de 2.8V.

Rezolvare:

  1. Se reduc rezistențele serie prin lipirea în paralel a unor rezistențe de valoare apropiată.

DLL-urile necesare pentru rularea GUI-ului nu sunt instalate

Identificare:

  1. Se pornește GUI-ul, dar Windows aruncă un mesaj de eroare asemănător cu: “The application has failed to start because its side by side configuration is incorrect.”

Rezolvare:

  1. Se instalează runtime-ul necesar pentru rularea programelor compilate cu Visual C++ 2005 de aici.

Alte fișiere

Bootloader 20MHz cu pornire pe buton PD6