Znasz bajkę o żabie i skorpionie?
Pewnego razu skorpion podczas swojej wędrówki natknął się na rzekę. Zastanawiał się jak ją przekroczyć. Nie było mostu, a on nie umiał pływać. Myśląc chwilę postanowił poprosić o pomoc któregoś z mieszkańców rzeki. Idąc wzdłuż brzegu natknął się na żabę, która wspaniale pływała pomiędzy liliami.
– Żabko, czy byłabyś tak miła i przewiozłabyś mnie na drugi brzeg rzeki?
Żaba przeraziła się:
– Ale przecież ty jesteś skorpionem! Jeśli tylko zbliżę się do Ciebie to ty mnie ukąsisz i zginę!
– Nie bój się – odpowiedział skorpion – przecież jeśli Ciebie zabiję, to oboje utoniemy, prawda? Ja tylko chcę przedostać się na drugą stronę rzeki.
Tłumaczenie skorpiona wydawało się logiczne i uspokoiło żabę. Postanowiła więc, że pomoże mu pokonać rzekę i przewiezie go na swoim grzbiecie. Jednak kiedy byli już w połowie drogi, na samym środku rzeki, skorpion ukąsił żabkę. Ta natychmiast zaczęła tracić przytomność i topić się, a razem z nią zaczął tonąć skorpion. Resztkami sił żaba zapytała skorpiona:
– Dlaczego to zrobiłeś? Przecież teraz oboje zginiemy!
– Bo taka jest moja natura – odpowiedział skorpion – taka jest moja natura.

Bardzo lubię tą historyjkę, ale dlaczego Ci ją opowiadam?
Aby zrozumieć czym jest bootloader, wyobraź sobie, że masz oprogramowanie, które pracuje na systemie wbudowanym, schowanym głęboko w samochodzie. Aby mieć możliwość uaktualnienia oprogramowania podczas wizyty w serwisie producent przewiduje możliwość wysłania nowego software’u przez magistralę, np. CAN, czyli serwisant wygodnie podpina się pod złączę ODBC i już po kilku minutach na urządzeniu hula nowy soft.
Jak to się jednak stało, że program pracujący na urządzeniu odebrał nową wersję oprogramowania i podmienił sam siebie? Podobnie jak człowiek nie może podnieść się sam ciągnąc swe włosy, potrzebna była pomoc kogoś z zewnątrz – bootloadera.
Bootloader jest to pewna aplikacja, która uruchamia inną aplikację. To trochę jak system operacyjny, środowisko w którym odpalamy jakiś program.
Choć podobieństwo nie jest aż tak duże, ponieważ bootloader ma najczęściej dużo mniejszą funkcjonalność niż sama aplikacja. Musi mieć zaimplementowaną co najmniej komunikację na magistrali, serwisy diagnostyczne służące do transmisji i odbioru danych i zapisu ich do pamięci. Czasami również bardzo podstawową obsługę wejść/wyjść.
Jak to działa w praktyce?
System wbudowany po tym jak dostanie zasilanie od razu uruchamia bootloader. Ten odnajduje w pamięci kod aplikacji a następnie ją uruchamia w “swoim” środowisku.
Dlatego często w projekcie opartym na systemie wbudowanym prace nad aplikacją i nad bootloaderem trwają równolegle, częsciowo od siebie niezależnie i mogą być prowadzone przez innych inżynierów.
Bootloader posiada swoje własne wymagania i specyfikacje. Dlatego urządzenia mające możliwość “przeflaszowania softu po magistrali” muszą być też droższe – wymagają o wiele więcej pracy w programowaniu i testach, a także często większych zasobów sprzętowych.
Jak można się skomunikować z bootloaderem?
Aby wysyłać polecenia diagnostyczne (UDS), wprost do bootloadera, należy przejść do sesji programistycznej, czyli wydać odpowiednie polecenie diagnostyczne, po którym uaktywania się bootloader i to on jest od tej pory odbiorcą poleceń diagnostycznych. Po zakończeniu komunikacji z bootloaderem należy przejść do sesji domyślnej, lub zrobić restart urządzenia, po którym automatycznie przejdzie ono do sesji domyślnej.
Dodaj komentarz