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
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
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:
- Wdrożenie cechy
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Eksportuj interfejs wtyczki:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Utwórz plik konfiguracyjny (opcjonalnie):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- 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 timeStatystyki 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_managerInstalacja 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_usagePrzykł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