Ochrona środowiska wodnego przy instalachach hydroelektrycznych
Modyfikacja Bootloadera (MLO) dla systemu bezpieczeństwa krytycznego w ochronie środowiska wodnego

Project Details
- Zadanie : Modyfikacja MLO i U-Boot
- Zakończenie : Lipiec 2016
Klient
Polska firma zajmująca się produkcją urządzeń do ochrony środowiska
Wyzwanie
Klient opracował zaawansowany system odstraszania ryb dla hydroelektrowni, wykorzystujący pole elektryczne (sterowane elektrody) do kierowania fauny do przepławek. Podczas testów niestandardowego hardware’u opartego o procesor Sitara AM335, zidentyfikowano krytyczne ryzyko: po niekontrolowanym restarcie (np. zaniku zasilania), linie GPIO sterujące elektrodami wchodziły w stan nieustalony. Mogło to prowadzić do niezamierzonego włączenia elektrod i porażenia ryb na długo przed startem głównej aplikacji sterującej.
Rozwiązanie
Problem występował na najwcześniejszym etapie startu systemu – zanim jądro Linux i aplikacje user-space miały szansę przejąć kontrolę. Rozwiązanie wymagało interwencji na najniższym możliwym poziomie oprogramowania.
Moja rola polegała na głębokiej modyfikacji MLO (Memory Loader), czyli pierwszego etapu bootloadera procesora Sitara AM335. Wprowadziłem niestandardowy kod inicjalizacyjny, który był wykonywany natychmiast po kodzie ROM procesora. Ten kod:
Identyfikował specyficzną wersję hardware’u klienta.
Siłowo ustawiał wszystkie krytyczne linie GPIO (sterujące elektrodami) w bezpieczny, nieaktywny stan.
Przekazywał kontrolę do kolejnego etapu bootloadera (U-Boot) dopiero po zapewnieniu pełnego bezpieczeństwa warstwy sprzętowej.
Rezultat
Modyfikacja MLO w 100% wyeliminowała ryzyko przypadkowego aktywowania elektrod. System uzyskał deterministyczne i w pełni bezpieczne zachowanie podczas każdego cyklu startowego, co było kluczowym wymogiem dla dopuszczenia urządzenia do pracy w środowisku naturalnym.
Użyte technologie
Procesor: TI Sitara AM335 (Architektura ARM Cortex-A8)
Język: C, Asembler (dla niskopoziomowej inicjalizacji)
System: MLO (First-Stage Bootloader), U-Boot
Narzędzia: TI Code Composer Studio, JTAG Debugger, Toolchain ARM
Koncepty: Boot sequence, Low-level hardware initialization, GPIO pin multiplexing, System safety