[KROK-PO-KROKU] Bootloader dla zestawu FREEboard – jak z niego korzystać
Zapis programu do pamięci Flash mikrokontrolera
Po zapisaniu bootloadera w pamięci Flash mikrokontrolera zestawu FREEboard możemy zacząć korzystać z jego dobrodziejstw. Do zapisywania w pamięci Flash własnych aplikacji będziemy używać złącza USB Con2 oraz programu KinetusUpdater.exe (do pobrania poniżej). Przy pierwszym uruchomieniu aplikacji KinetisUpdater, w jej głównym okienku (strona Home) znajdzie się informacja z prośbą wybrania układu oraz obrazu do zaprogramowania (rysunek 9).
Rys. 9. Główne okno aplikacji KinetisUpdater
Klikając przycisk Select Device przechodzimy na stronę Device Configuration i wybieramy dostępną formę komunikacji z bootloaderem. Jeżeli zestaw FREEboard został podłączony do portu USB komputera przez złącze CON2 to na liście rozwijanej powinien ukazać się wpis Urządzenie zgodne z HID (rysunek 10). Wybranie tej konfiguracji w przeciągu 5000 ms od podania zasilania dla układu (domyślny czas oczekiwania bootloadera) spowoduje przełączenie się bootloadera w stan oczekiwania na kolejne komendy; w przeciwnym wypadku bootloader przekaże sterowanie aplikacji użytkownika, jeśli takowa została wcześniej zapisana w pamięci.
Rys. 10. Wybór komunikacji z bootloaderem – USB-HID
Po każdym włączeniu zasilania zestawu FREEboard z aktywnym bootloaderem, automatycznie oczekuje on przez około 5 s na aktywność programu KinetisUpdater na złączu USB Con2. Jeżeli bootloader nie wykryje tego programu, automatycznie uruchamia program zapisany pod adresem 0x8000 (aplikację użytkownika). |
Alternatywnie, z bootloaderem można się skomunikować poprzez uniwersalny asynchroniczny port szeregowy (wykorzystując np. konwerter USB-UART widziany w systemie jako wirtualny port szeregowy; rysunek 11). Podobnie jak w powyższym przypadku tutaj również obowiązuje okno czasowe oczekiwania na połączenie się z bootloaderem – w ciągu 5000 ms od zasilenia układu musi zostać wysłany pakiet Ping, a odbiór pakietu PingResponse stanowi potwierdzenie wejścia bootloadera w stan oczekiwania na kolejne komendy (pakiet Ping jest również niezbędny do określenia prędkości transmisji przez bootloader). Po nawiązaniu połączenia możemy opcjonalnie zmienić prędkość transmisji i wrócić na stronę główną aplikacji (domyślnie bootloader pracuje z układem UART0, którego linie RX i TX są podłączone do wyprowadzeń PTA1 i PTA2 lub PTA15 i PTA14 odpowiednio).
Rys. 11. Wybór komunikacji z bootloaderem – UART
Obraz aplikacji, który chcemy przesłać do mikrokontrolera, wybieramy na stronie Image Configuration (obsługiwane są formaty plików z obrazem programu użytkownika takie jak binarny, SREC, Intel HEX oraz SB (strumień komend bootloadera) i bardzo ważnym jest wskazanie początkowego adresu w pamięci pod którym zostanie ona umieszczona (rysunek 12) – dla mikrokontrolerów serii MKL25Z4 jest to adres 0x8000 (można go zmienić w projekcie samego bootloadera).
Rys. 12. Wybór obrazu aplikacji użytkownika
Przykładową aplikację demonstracyjną można znaleźć na dole strony oraz w pakiecie KINETIS Bootloader w katalogu apps/led_demo/binaries/ pod nazwą led_demo_FRDM-KL25Z_8000.bin. W przypadku zapisu innej aplikacji użytkownik w swoim projekcie powinien wykorzystać plik startup_MKL25Z4.s znajdujący się w katalogu apps\led_demo\MKL25Z4\src i opisujący wektory w pamięci Flash mikrokontrolera (w innych środowiskach niż IAR Embedded Workbench konieczna jest drobna modyfikacja pliku pod wymagania używanego kompilatora).
Rys. 13. Skonfigurowany proces wymiany oprogramowania
Rys. 14. Programowanie układu przez bootloader
Mając skonfigurowany proces aktualizacji (rysunek 13) można przejść na stronę Update i zaprogramować układ wciśnięciem przycisku Update (rysunek 14). Jeżeli proces zakończył się pomyślnie to po kilku sekundach układ zacznie wykonywać nowy program; w przeciwnym wypadku pojawi się komunikat z błędem, który z grubsza wskaże przyczynę niepowodzenia.
Literatura
[1] Demo Application User’s Guide for the FRDM-KL25Z and TWR-KL25Z48 Freescale Platforms
[2] http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KBOOT