Ochrona środowiska wodnego przy instalachach hydroelektrycznych

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

Ochrona środowiska wodnego przy instalachach hydroelektrycznych

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