Bootloader mikrokontrolera.
Bootloader AVR i interfejs USB - jak to działa?
Bootloader AVR z interfejsem USB to niewielki program umieszczony w pamięci flash mikrokontrolera (w sekcji Boot), który umożliwia aktualizację oprogramowania głównego bezpośrednio przez kabel USB, bez potrzeby używania zewnętrznego programatora. To sposób na uproszczenie programowania mikrokontrolera i ograniczony dostęp do niego.
Jak to działa w praktyce?
1. Po włączeniu zasilania lub zresetowaniu (np. przyciskiem RESET), mikrokontroler uruchamia najpierw bootloader.
2. Sprawdzenie aktywności USB: Bootloader sprawdza, czy użytkownik chce wgrać nowy program.
3. Komunikacja: Jeśli jest aktywny, bootloader zgłasza się do komputera jako urządzenie USB (np. jako wirtualny port COM lub urządzenie HID).
4. Programowanie: Komputer (poprzez dodatkowe oprogramowanie np. avrdude) wysyła plik .hex, który bootloader zapisuje w głównej pamięci Flash.
5. Skok do programu lub aplikacji: Po zakończeniu, bootloader przekazuje kontrolę do wgranego programu lub resetuje się, by uruchomić go od nowa. Startuje wgrany program.
Zalety bootloadera:
Możliwość programowania mikrokontrolera za pomocą jego sprzętowych interfejsów,
Wygoda: aktualizacja programu za pomocą zwykłego kabla USB.
Brak konieczności posiadania programatora przez użytkownika końcowego.
Wady:
Zajmuje część pamięci Flash (kilkaset bajtów do kilku KB).
Nie pozwala na zmianę fusebitów i innych operacji dostępnych poprzez programator.
Ograniczony dostęp do mikrokontrolera. Coś za coś.
Aby to wszystko zadziałało - wcześniej trzeba:
1. Wgrać odpowiedni do mikrokontrolera, bootloader - za pomocą programatora i programu, który na to pozwala. Najczęściej powoduje to wyczyszczenie pamięci flash mikrokontrolera,
2. Ustawić dla mikrokontrolera odpowiednie fusebity, aby mikrokontroler widział i startował bootloader.
3. Podłaczyć mikrokontroler do komputera za pomocą odpowiedniego i obsługiwanego interfejsu (USB,Uart, I2C).
4. Jak to wszystko wykonamy poprawnie, teraz dopiero mamy ograniczony dostęp do mikrokontrolera.
Problemy i błędy napotkane podczas obsługi mikrokontrolera z bootloaderem:
1. Brak ustawionych odpowiednich fusebitów ( BOOTSZ1-0, BOOTRST) odpowiedzialnych za start bootloadera. W przeszłości, gdy program ładował program rozruchowy, ustawiał również wymagane bity bezpiecznika. Obecnie jest z tym różnie i konieczne bity bezpiecznika należy dostosować ręcznie.
2. Rozbieżności ustawienia bitów BOOTSZ dla różnych mikrokontrolerów.
3. Brak wspólpracy i obsługi odpowiedniego interfejsu pośredniczącego w komunikacji komputer- mikrokontroler.
4. Bootloader to uproszczona droga do programowania mikrokontrolerów, ale dla zawansowanego programowania, ma zbyt ograniczone możliwosci. Bez programatora ani rusz dalej.
Pojawiają się coraz nowsze bootloadery. Będziemy dodawać i pokazywać inne ich możliwości oraz opisywć użycie.