Za przykład posłuży nam elektroniczna jednostka sterująca (ECU) wykorzystującej tradycyjne statyczne oprogramowanie wbudowane. Program rozruchowy to komponent oprogramowania używany zarówno do inicjowania rozruchu głównego oprogramowania jednostki ECU, w tym kopiowania oprogramowania do pamięci RAM, jak i do wykonywania wszelkich kontroli oprogramowania przed jego uruchomieniem. Jest również odpowiedzialny za aktualizację oprogramowania, odbiór, sprawdzanie i zapisywanie zaktualizowanego oprogramowania w pamięci (zazwyczaj pamięci flash). W związku z tym powszechnie określa się go również mianem programu rozruchowego flash.
Czy te same programy rozruchowe są używane w procesie rozwoju oraz w produkcji?
Ten sam program rozruchowy jest zazwyczaj używany w procesie rozwoju pojazdów oraz w regularnej produkcji, z pewnymi zabezpieczeniami powodującymi dezaktywację wielu funkcji jednostek ECU stosowanych w procesie rozwoju lub inżynieryjnym. W procesie rozwoju usunięcie zabezpieczeń obecnych w produkcyjnych programach rozruchu jest niezbędne, aby umożliwić szybkie opracowywanie oprogramowania.
Bezpieczny program rozruchowy
Obecnie można zaobserwować tendencję do wymagania odpowiednich zabezpieczeń wszystkich programów rozruchowych. Tradycyjnie zabezpieczenia stanowiły cechę wyróżniającą określone programy rozruchowe i dotyczyły głównie funkcji związanych z bezpieczeństwem lub osiągami.
Programy rozruchowe zwykle sprawdzają pamięć oprogramowania jednostki ECU podczas uruchamiania oraz otrzymane aktualizacje oprogramowania przed ich zainstalowaniem oraz zapisane w pamięci po zainstalowaniu.
Mechanizmy zabezpieczeń obejmują zazwyczaj:
- Uwierzytelnianie oprogramowania otrzymanego i (lub) znajdującego się w pamięci podczas rozruchu, często przy użyciu skrótu pliku binarnego oprogramowania w celu sprawdzenia poprawności wygenerowanej w wyniku bezpiecznego procesu kompilacji oficjalnie wydanych wersji oprogramowania.
- Uwierzytelnianie nadawcy za pomocą algorytmu typu seed/key, zabezpieczanie danych zapisanych w jednostce ECU za pomocą zabezpieczonej pamięci i map pamięci w celu zdefiniowania obszarów dostępnych / wielokrotnego zapisu.
Podwójny program rozruchowy
Niektóre wdrożenia programów rozruchowych składają się z dwóch części i są w związku z tym określane mianem „podwójnego programu rozruchowego”. W takim przypadku podstawowy program rozruchowy nie może być aktualizowany w związku z bezpieczeństwem i w celu zapewnienia uruchomienia modułu i aktualizacji dodatkowego programu rozruchowego. Aktualizacja tego programu może przebiegać za pośrednictwem bezpiecznego procesu z możliwością zmodyfikowania przebiegu aktualizacji, na przykład mapowania pamięci, co pozwala jej zablokowanie. Ten typ programu rozruchowego jest obecnie mniej rozpowszechniony ze względu na nowe metody zabezpieczania procesu aktualizacji za pomocą wbudowanych zabezpieczeń sprzętowych, na przykład HSM (sprzętowego modułu bezpieczeństwa, ang. Hardware Secure Module).
Należy zwrócić uwagę, że przypomina to konfigurację z dwoma systemami operacyjnymi, w której dostępne są dwa bloki rozruchowe z pełną pamięcią, co umożliwia przeprowadzenie aktualizacji nieużywanej wersji i jednoczesną pracę z drugą wersją systemu. Wymaga to zapewnienia dodatkowej pamięci w każdej jednostce ECU obsługującej tę metodę aktualizacji.
Capital Embedded Bootloader
Rozwiązanie Capital Embedded Bootloader obsługuje niezawodne aktualizacje sterowników ECU podczas rozwoju, produkcji i eksploatacji pojazdu za pomocą połączonych narzędzi diagnostycznych lub metod łączności bezprzewodowej. Znormalizowany protokół UDS ISO 14229 jest używany w wielu popularnych magistralach sieciowych pojazdów, takich jak Ethernet, CAN/CAN-FD, LIN, FlexRay; można również używać innych metod, jak np. protokoły kalibracji ASAM. Cyberbezpieczeństwo jest kluczowym aspektem przepływu aktualizacji oprogramowania i funkcji, umożliwiając uwierzytelnianie oprogramowania i zapewnienie bezpiecznego rozruchu. Spełnienie wymagań producentów OEM (producentów oryginalnego wyposażenia) i MCU wymaga zapewnienia szerokiej obsługi wielu różnych projektów ECU.
Na czym polega różnica między aktualizacją OTA i FOTA
Aktualizacja OTA (aktualizacja bezprzewodowa, ang. over the air) lub FOTA (bezprzewodowa aktualizacja oprogramowania sprzętowego) to metoda otrzymywania nowej wersji oprogramowania dla urządzenia wbudowanego, na przykład samochodowej jednostki ECU, w sposób zdalny, bez użycia bezpośrednio podłączonego narzędzia serwisowego w warsztacie. Może to wymagać pewnych funkcji wbudowanego testera diagnostycznego w koordynującej jednostce ECU i (lub) funkcji odzyskiwania i przeprowadzania autotestów przez program rozruchowy.