Jak wypalić bootloader?

Poinstruowano mnie, aby „wypalić bootloader” na moim Arduino, aby naprawić otrzymywany błąd. W jaki sposób mogę to zrobić? (A czym właściwie jest bootloader?)

Komentarze

Odpowiedź

Program ładujący to mały program, który (prawie) zawsze na Arduino. Zarządza przesyłaniem i uruchamianiem szkiców, które robisz, i miga diodą pin 13 przy każdym resetowaniu płyty.


Aby nagrać bootloader:

  1. Uzyskaj AVR ISP, USBtinyISP , ParallelProgrammer lub podobny; lub użyj innej płyty Arduino . To będzie Twój dostawca usług internetowych.
  2. Jeśli nie podano inaczej, podłącz dostawcę usług internetowych do styków ICSP na płycie.
  3. Zasil swoją kartę za pomocą kabla USB lub zewnętrznego zasilacza.
  4. Otwórz Arduino IDE.
  5. Upewnij się, że wybrałeś właściwą płytę, na której nagrywasz w Tools ► Board ► w IDE. Sprawdź to dwukrotnie, nawet jeśli możesz poprawnie załadować programy; przesyłanie nie zawsze wymaga odpowiedniej płyty.
  6. Wybierz odpowiedniego programistę w Tools ► Programmer ►.
  7. Kliknij Tools ► Burn Bootloader i poczekaj. Nie powinno to zająć więcej niż minutę, a często tylko kilka sekund.

Źródła:

Komentarze

  • AVRISP jest prawie EOL (koniec życia) w tym momencie. Przynajmniej chcesz mieć AVRISPmk2. Istnieje również wiele innych, bardziej wyszukanych narzędzi (na przykład AVR One!). Prawdopodobnie powinieneś po prostu powiedzieć {line 1} or other dedicated ISP programmer.
  • Na płytach takich jak Arduino Yun, za każdym razem, gdy " przesyłasz przez Wi-Fi ", ' nagrywasz bootloader połączony ze szkicem. Dzieje się tak dzięki temu, że procesor Linuksa jest podłączony do mikrokontrolera AVR przez SPI, dzięki czemu można naśladować dostawcę usług internetowych za pomocą oprogramowania.
  • @FedericoFissore – czy dlatego zajmuje to tak dużo czasu?
  • Tak, i fakt, że bitbanging GPIO jest wolniejszy. Nieustannie staramy się to przyspieszyć.

Odpowiedź

Co to jest program ładujący?

A czym właściwie jest program ładujący?

Program ładujący to mały fragment kodu znajdujący się w „wysokiej” części pamięci programu. Zwykle nie jest on usuwany podczas przesyłania nowych szkiców. Jego celem jest aktywacja natychmiast po resecie (bezpieczniki są skonfigurowane tak, aby uruchamiać kod pod adresem bootloadera, a nie adres 0x0000). Program ładujący odczeka krótki czas (na przykład jedną sekundę), aby sprawdzić, czy dane „programowania” docierają do portu szeregowego.

  • Jeśli tak, odczytuje te dane i dekoduje aby przeprogramować pozostałą część pamięci flash. Pracując w połączeniu z programem do wczytywania (zwykle avrdude), nowy szkic jest przesyłany przez port szeregowy. Program ładujący usuwa strony pamięci flash i zastępuje je nowym kodem. Po zakończeniu wykonuje nowy kod.

  • Jeśli nie otrzymają żadnych instrukcji, program ładujący przeskakuje na adres 0x0000, aby wykonać istniejący szkic na płycie.


Jak wymienić bootloader

Alternatywną metodą zaprogramowania bootloadera jest użycie szkicu, który napisałem jakiś czas temu, który działa na:

  • Uno (lub podobny, taki jak Duemilanove)
  • Leonardo
  • Mega2560

Tablica „programowania” uruchamia szkic, który ma zakodowane na stałe programy ładujące dla wielu płyt. Podłączasz płytkę programowania do płytki docelowej (płytka obsługująca bootloader) za pomocą 6 przewodów połączeniowych, jak pokazano.

Programator bootloadera dla Uno

To konkretne zdjęcie ilustruje programowanie jednego Uno.

Uruchamiasz szkic (działając przez Serial Monitor, aby wydawać mu polecenia). Najpierw identyfikuje układ docelowy:

Atmega chip programmer. Written by Nick Gammon. Entered programming mode OK. Signature = 0x1E 0x95 0x0F Processor = ATmega328P Flash memory size = 32768 bytes. LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Bootloader address = 0x7E00 Bootloader length = 512 bytes. Type "L" to use Lilypad (8 MHz) loader, or "U" for Uno (16 MHz) loader ... Type "G" to program the chip with the bootloader ... 

Naciskasz G aby go zaprogramować.

Erasing chip ... Writing bootloader ... Committing page starting at 0x7E00 Committing page starting at 0x7E80 Committing page starting at 0x7F00 Committing page starting at 0x7F80 Written. Verifying ... No errors found. Writing fuses ... LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Done. Type "C" when ready to continue with another chip ... 

Uno zajmuje to jedną sekundę. Programowanie Mega2560 zajmuje 3 sekundy.

Szczegółowe instrukcje pod adresem Programator bootloadera Atmega

Kod można pobrać ze strony Github: nickgammon / arduino_sketches

Komentarze

  • Czy musisz wybrać typ chipa, na który nagrywasz (Narzędzia- > Płyta ..)?Jaką płytę mam wybrać, kiedy nagrywam bootloader do samodzielnego układu?
  • Wybierasz typ płyty , której używasz do nagrywania bootloadera w IDE. Szkic programu ładującego automatycznie wykrywa typ płyty docelowej.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *