Poinstruowano mnie, aby „wypalić bootloader” na moim Arduino, aby naprawić błąd, który się pojawiał. W jaki sposób mogę to zrobić? (A czym dokładnie jest bootloader?)
Poinstruowano mnie, aby „wypalić bootloader” na moim Arduino, aby naprawić błąd, który się pojawiał. W jaki sposób mogę to zrobić? (A czym dokładnie jest bootloader?)
Odpowiedzi:
Bootloader to mały program, który jest (prawie) zawsze na Arduino. Zarządza przesyłaniem i uruchamianiem wykonanych szkiców oraz miga diodą LED pin 13 za każdym razem, gdy płyta resetuje się.
Aby nagrać program ładujący:
Tools ► Board ►
w IDE wybrałeś odpowiednią płytę, do której chcesz nagrywać. Sprawdź to dwukrotnie, nawet jeśli możesz poprawnie wgrać programy; przesyłanie nie zawsze wymaga odpowiedniej tablicy.Tools ► Programmer ►
.Tools ► Burn Bootloader
i poczekaj. Nie powinno to zająć więcej niż minutę i często zajmuje tylko kilka sekund.Źródła:
{line 1} or other dedicated ISP programmer.
A czym dokładnie jest bootloader?
Program ładujący to niewielki fragment kodu znajdujący się w „wysokiej” części pamięci programu. Zwykle nie jest usuwany podczas przesyłania nowych szkiców. Jego celem jest aktywacja natychmiast po resecie (bezpieczniki są skonfigurowane do uruchamiania kodu pod adresem bootloadera zamiast adresu 0x0000). Program ładujący zaczeka krótko (na przykład jedną sekundę), aby sprawdzić, czy dane „programujące” docierają do portu szeregowego.
Jeśli tak, odczytuje te dane i dekoduje je, aby przeprogramować pozostałą część pamięci flash. Współpracując z programem do przesyłania (zwykle avrdude) nowy szkic jest wysył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.
Alternatywną metodą programowania programu ładującego jest użycie szkicu, który napisałem jakiś czas temu, który działa na:
Płytka „programująca” uruchamia szkic, który zawiera bootloadery dla wielu na stałe zakodowanych w nim kart. Podłączasz płytę programującą do płyty docelowej (płyty wymagającej bootloadera) za pomocą 6 przewodów do podłączenia, jak pokazano.
To konkretne zdjęcie ilustruje, że jeden program Uno programuje inny.
Uruchamiasz szkic (działając za pomocą Monitora szeregowego, aby wydawać mu polecenia). Najpierw identyfikuje docelowy układ:
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 ...
Naciśnięcie G powoduje zaprogramowanie.
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 ...
W przypadku Uno zajmuje to sekundę. Zaprogramowanie Mega2560 zajmuje 3 sekundy.
Szczegółowe instrukcje w programatorze rozruchowym Atmega
Kod można pobrać z Github: nickgammon / arduino_sketches