Zalety wbudowanego systemu testowego (BIT)

Przegląd

System testów wbudowanych (BIT) to kompleksowe, modułowe i rozszerzalne środowisko testowe przeznaczone dla systemów wbudowanych opartych na systemie Linux. Zapewnia zautomatyzowaną diagnostykę sprzętu i oprogramowania poprzez architekturę opartą na wtyczkach, gwarantując niezawodność, integralność i gotowość operacyjną systemu.


Kluczowe korzyści

🛡️ Zwiększona niezawodność systemu

  • Proaktywne wykrywanie usterek, zanim wpłyną one na działanie
  • Ciągły monitoring krytycznych zasobów systemu
  • System wczesnego ostrzegania o potencjalnej degradacji sprzętu

⚡ Krótszy czas przestoju

  • Zautomatyzowana diagnostyka eliminuje konieczność ręcznego testowania
  • Zaplanowane wykonywanie testów odbywa się w tle
  • Natychmiastowe powiadomienie o usterce umożliwia szybką reakcję

📊 Kompleksowe ubezpieczenie

  • Walidacja sprzętu (PCI, USB, GPIO, szeregowy, CAN, Ethernet)
  • Monitorowanie zasobów systemu (procesor, pamięć, dysk)
  • Weryfikacja ścieżki danych (TCP, magistrala CAN, porty szeregowe)

🔌 Architektura typu „podłącz i graj”

  • Dynamiczne ładowanie wtyczek w czasie wykonywania
  • Parametry testu sterowane konfiguracją
  • Dodawanie nowych testów nie wymaga żadnych modyfikacji systemu podstawowego

📋 Integracja Systemd

  • Działa jako natywna usługa systemu Linux
  • Automatyczne uruchamianie przy rozruchu
  • Standardowe zarządzanie usługami ( systemctl start/stop/status )

Rodzaje testów i zakres

System BIT wdraża trzy podstawowe kategorie testów zgodne ze standardowymi w branży metodologiami wbudowanych testów:

BIT włączania zasilania (PBIT)

Testy wykonywane jednorazowo przy uruchomieniu systemu w celu sprawdzenia integralności sprzętu przed rozpoczęciem normalnej pracy.

Ciągły BIT (CBIT)

Testy przeprowadzane okresowo podczas normalnego działania systemu w celu wykrycia błędów w czasie wykonywania oraz wyczerpania zasobów.

Fabryczny BIT (FBIT)

Kompleksowe testy sprzętowe przeprowadzane w trakcie produkcji i konserwacji w celu sprawdzenia poprawności działania wszystkich interfejsów systemowych.


Tabela podsumowująca testy

Testy BIT po włączeniu zasilania (PBIT)

Nazwa testu Opis Częstotliwość
pbit_bsp_version Sprawdza, czy wersja BSP jest zgodna z oczekiwaną konfiguracją Po uruchomieniu
pbit_can Sprawdza dostępność interfejsu magistrali CAN Po uruchomieniu
pbit_checksum Weryfikuje sumy kontrolne plików pod kątem integralności Po uruchomieniu
pbit_cpu_cores Sprawdza oczekiwaną liczbę rdzeni procesora Po uruchomieniu
pbit_cpu_usage Sprawdza, czy początkowe wykorzystanie procesora mieści się w granicach Po uruchomieniu
pbit_disk_health Sprawdza stan dysku SMART Po uruchomieniu
pbit_disk_usage Sprawdza dostępność miejsca na dysku podczas rozruchu Po uruchomieniu
pbit_dmesg_check Skanuje dmesg w poszukiwaniu błędów krytycznych Po uruchomieniu
pbit_ethernet Sprawdza dostępność interfejsu Ethernet Po uruchomieniu
pbit_file_checksum Weryfikuje integralność krytycznych plików systemowych Po uruchomieniu
pbit_firewall_configuration Sprawdza, czy reguły zapory są poprawnie skonfigurowane Po uruchomieniu
pbit_gpio Sprawdza dostępność i stan pinów GPIO Po uruchomieniu
pbit_gpu_loading Sprawdza sterownik GPU i początkowe ładowanie Po uruchomieniu
pbit_memory_usage Sprawdza dostępność pamięci podczas uruchamiania Po uruchomieniu
pbit_pci_whitelist Sprawdza zgodność urządzeń PCI z zatwierdzoną białą listą Po uruchomieniu
pbit_permissions_verification Sprawdza uprawnienia plików/katalogów Po uruchomieniu
pbit_power_test Sprawdza stan i napięcia zasilania Po uruchomieniu
pbit_selinux_apparmor_status Sprawdza status modułu bezpieczeństwa Po uruchomieniu
pbit_serial_ports Sprawdza dostępność portu szeregowego Po uruchomieniu
pbit_ssh_configuration Sprawdza poprawność konfiguracji zabezpieczeń SSH Po uruchomieniu
pbit_syslog_analysis Skanuje syslog w poszukiwaniu krytycznych błędów uruchamiania Po uruchomieniu
pbit_temperature Sprawdza wstępne odczyty termiczne Po uruchomieniu
pbit_usb_whitelist Sprawdza urządzenia USB pod kątem zatwierdzonej białej listy Po uruchomieniu

Ciągłe testy BIT (CBIT)

Nazwa testu Opis Częstotliwość
cbit_bsp_version Monitoruje spójność wersji BSP Konfigurowalny
cbit_can Monitoruje stan magistrali CAN i liczniki błędów Konfigurowalny
cbit_checksum Okresowa weryfikacja integralności plików Konfigurowalny
cbit_cpu_cores Monitoruje dostępność rdzeni procesora Konfigurowalny
cbit_cpu_usage Monitoruje wykorzystanie procesora w oknie ruchomym Co 1s
cbit_disk_health Monitoruje atrybuty SMART dysku Konfigurowalny
cbit_disk_usage Monitoruje wykorzystanie dysku w stosunku do progów Co 30 sekund
cbit_dmesg Monitoruje bufor komunikatów jądra Konfigurowalny
cbit_dmesg_check Ciągłe wykrywanie błędów dmesg Konfigurowalny
cbit_ethernet Monitoruje stan łącza Ethernet i błędy Konfigurowalny
cbit_ethernet_status Monitoruje stan połączenia Ethernet Konfigurowalny
cbit_firewall_configuration Monitoruje integralność reguł zapory sieciowej Konfigurowalny
cbit_gpio Monitoruje zmiany stanu GPIO Konfigurowalny
cbit_gpu_loading Monitoruje wykorzystanie GPU Konfigurowalny
cbit_memory_usage Śledzi wzorce zużycia pamięci Konfigurowalny
cbit_pci_whitelist Monitoruje zmiany w urządzeniach PCI Konfigurowalny
cbit_permissions Monitoruje zmiany uprawnień plików Konfigurowalny
cbit_permissions_verification Ciągła walidacja uprawnień Konfigurowalny
cbit_power_consumption Monitoruje pobór mocy i wydajność Konfigurowalny
cbit_selinux_apparmor_status Monitoruje stan modułu bezpieczeństwa Konfigurowalny
cbit_serial_ports Monitoruje dostępność portu szeregowego Konfigurowalny
cbit_ssh_configuration Monitoruje zmiany konfiguracji SSH Konfigurowalny
cbit_syslog_analysis Ciągłe monitorowanie błędów syslog Konfigurowalny
cbit_temperature Monitoruje odczyty i trendy termiczne Konfigurowalny
cbit_usb_whitelist Monitoruje zmiany w urządzeniu USB Konfigurowalny

Testy fabryczne BIT (FBIT)

Nazwa testu Opis Częstotliwość
fbit_can_data Testuje funkcjonalność nadawania/odbioru magistrali CAN Konfigurowalny
fbit_gpio_data Sprawdza funkcjonalność wejścia/wyjścia GPIO Konfigurowalny
fbit_pci Numeracja i weryfikacja urządzeń PCI Konfigurowalny
fbit_serial_data Sprawdza poprawność komunikacji pętli zwrotnej portu szeregowego Konfigurowalny
fbit_ssd Walidacja wydajności odczytu/zapisu dysku SSD Konfigurowalny
fbit_system_data Gromadzenie informacji systemowych Konfigurowalny
fbit_tcp_data Testuje ścieżki danych Ethernet za pomocą iPerf Konfigurowalny
fbit_usb Weryfikacja odczytu/zapisu urządzenia USB Konfigurowalny
fbit_video Weryfikacja wyjścia wideo Konfigurowalny

Łącznie: 57 wbudowanych testów obejmujących walidację sprzętu, monitorowanie systemu i weryfikację zabezpieczeń.


Architektura wtyczek

System BIT opiera się na wydajnej architekturze wtyczek , która umożliwia bezproblemową rozbudowę bez konieczności modyfikowania podstawowego kodu systemu.

Jak to działa

System BIT wykorzystuje Zenoh jako oprogramowanie pośredniczące do przesyłania wiadomości, co pozwala na przesyłanie wyników testów w czasie rzeczywistym do klientów monitorujących oraz na bezproblemową integrację z systemami GVA (Generic Vehicle Architecture) za pośrednictwem mostkowania protokołów.

Architektura przepływu wiadomości

flowchart LR subgraph Server["🖥️ BIT Server"] BM["BIT Manager"] PBIT["PBIT Plugins"] CBIT["CBIT Plugins"] FBIT["FBIT Plugins"] end subgraph Zenoh["🌐 Zenoh Network"] ZS["Zenoh Session"] end subgraph Clients["📱 BIT Clients"] GUI["BIT GUI"] CLI["BIT CLI"] end subgraph Gateway["🔗 BIT Gateway"] ZDG["Zenoh-DDS Bridge"] end subgraph GVA["🎖️ GVA Domain (DDS)"] HUMS["Health & Usage
Monitoring Service"] end PBIT -->|TestResult| BM CBIT -->|TestResult| BM FBIT -->|TestResult| BM BM -->|"Zenoh Publish
bit/{hostname}/PBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/CBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/FBIT"| ZS ZS -->|"Subscribe
bit/+/+"| GUI ZS -->|"Subscribe
bit/+/+"| CLI ZS -->|"Subscribe
bit/+/+"| ZDG ZDG -->|"DDS Publish
GVA::HealthStatus"| HUMS

Szczegółowa sekwencja wiadomości

sequenceDiagram participant Plugin as Test Plugin participant BM as BIT Manager participant Zenoh as Zenoh Router participant GUI as BIT GUI participant Gateway as BIT Gateway participant HUMS as GVA HUMS (DDS) Note over Plugin,HUMS: Test Execution & Result Distribution Plugin->>BM: Execute Test BM->>BM: Encode BuiltInTestResult (Protobuf) BM->>Zenoh: Publish to bit/{hostname}/CBIT par Parallel Distribution Zenoh-->>GUI: Forward Result GUI->>GUI: Display in Dashboard and Zenoh-->>Gateway: Forward Result Gateway->>Gateway: Zenoh → DDS Transform Gateway->>HUMS: Publish GVA::HealthStatus HUMS->>HUMS: Update Vehicle Health Record end Note over GUI,HUMS: Real-time monitoring on both systems

Szczegóły mostu protokołu

Część Protokół w Protokół wyjściowy Zamiar
Menedżer BIT Wewnętrzny Zenoh Publikuje wyniki testów
Interfejs graficzny BIT Zenoh Wyświetla wyniki w czasie rzeczywistym
BIT CLI Zenoh Monitorowanie wiersza poleceń
Brama BIT Zenoh DDS (GVA) Mosty do systemów pojazdów
GVA SZUMI DDS Monitorowanie stanu zdrowia i użytkowania

Funkcje wtyczki

Funkcja Opis
Dynamiczne ładowanie Wtyczki są ładowane jako biblioteki współdzielone ( .so ) w czasie wykonywania
Interfejs oparty na cechach Spójne cechy TestRun i TestDetails dla wszystkich wtyczek
Pliki konfiguracyjne Konfiguracja oparta na TOML dla każdego testu ( /etc/bit/*.toml )
Śledzenie wersji Każda wtyczka raportuje wersję i znacznik czasu kompilacji
Rejestrowanie wywołań zwrotnych Ujednolicona infrastruktura rejestrowania we wszystkich testach
Liczniki biegów Automatyczne śledzenie statystyk zaliczeń/niezaliczeń

Tworzenie nowej wtyczki

Utworzenie własnej wtyczki BIT jest proste:

  1. Wdrożenie cechy TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Eksportuj interfejs wtyczki:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Utwórz plik konfiguracyjny (opcjonalnie):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Zbuduj i wdróż bibliotekę współdzieloną w /usr/local/lib/bit_manager/

Funkcje bezpieczeństwa języka Rust

System BIT wdrożono w języku Rust , co zapewnia bezkonkurencyjne gwarancje bezpieczeństwa, mające kluczowe znaczenie dla systemów wbudowanych i systemów o krytycznym znaczeniu dla bezpieczeństwa.

Bezpieczeństwo pamięci

Funkcja Korzyść
Brak wskaźników zerowych Option typy zapobiegają dereferencjom wskaźników zerowych
Brak przepełnień bufora Sprawdzanie granic przy każdym dostępie do tablic/wektorów
Nieużywany po zwolnieniu System własności gwarantuje ważność pamięci
Brak wyścigów danych Zapobieganie błędom dostępu współbieżnego w czasie kompilacji

Dlaczego Rust dla BIT?

🔒 Bezpieczeństwo w czasie kompilacji

Rust wychwytuje całe kategorie błędów w czasie kompilacji , które mogłyby spowodować błędy w czasie wykonywania w C/C++:

  • Wycieki pamięci
  • Przepełnienia bufora
  • Warunki wyścigu
  • Dereferencje wskaźnika zerowego

⚡ Abstrakcje o zerowym koszcie

Funkcje bezpieczeństwa wysokiego poziomu kompilują się do wydajnego kodu maszynowego bez obciążenia czasem wykonania , dorównując wydajnością językowi C/C++.

🔧 Bezstraszna współbieżność

Model własności umożliwia bezpieczne wykonywanie testów wielowątkowych bez wyścigów danych:

 // Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new()));

📦 Nowoczesne zarządzanie zależnościami

  • Menedżer pakietów Cargo zapewnia powtarzalność kompilacji
  • Automatyczne rozwiązywanie zależności
  • Wbudowane środowisko testowe

🛡️ Konfiguracja bezpieczna pod względem typu

Analiza konfiguracji wykorzystuje system typów Rust do wczesnego wykrywania błędów:

 let threshold: f32 = config.get("threshold")?;  // Type-checked at compile time

Statystyki bezpieczeństwa

Metryczny Rust kontra C/C++
Błędy bezpieczeństwa pamięci Wyeliminowano w czasie kompilacji
Zapobiegnięto klasom luk CVE ~70% typowych luk w zabezpieczeniach
Awarie wskaźnika zerowego w czasie wykonywania Niemożliwe
Naruszenia bezpieczeństwa wątków Wychwycono w czasie kompilacji

Integracja i wdrażanie

Usługa Systemd

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Instalacja pakietu Debiana

 cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.deb

Ścieżki konfiguracji

Ścieżka Zamiar
/etc/bit/ Pliki konfiguracji testów (TOML)
/usr/local/lib/bit_manager/ Biblioteki współdzielone wtyczek
/var/log/bit_manager/ Pliki dziennika

Inspekcja i monitorowanie

Narzędzie bit_inspect zapewnia szczegółowe informacje o załadowanych testach:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Przykładowy wynik:

 Details:
  Long-Name              Disk utilization test
  Author                 Ross Newman 
  Description            Check the disk is not nearing full
  Status                 NotRun

Plugin Details:
  Plugin Name            cbit_disk_usage
  Version                1.0.0
  Date Built             2025-03-09 01:42:11
  Run Frequency          Periodic(30s)

Streszczenie

System BIT zapewnia:

Kompleksowa diagnostyka sprzętu i oprogramowania
Rozszerzalna architektura wtyczek do niestandardowych testów
Implementacja bezpieczna dla pamięci w Rust
Standardowa w branży metodologia PBIT/CBIT/FBIT
Natywna integracja Linux/systemd
Parametry testów sterowane konfiguracją
Monitorowanie i rejestrowanie w czasie rzeczywistym