Vorteile des integrierten Testsystems (BIT)

Überblick

Das Built-In Test (BIT) -System ist ein umfassendes, modulares und erweiterbares Testframework für Linux-basierte eingebettete Systeme. Es bietet automatisierte Hardware- und Softwarediagnose über eine Plugin-basierte Architektur und gewährleistet so Systemzuverlässigkeit, -integrität und Betriebsbereitschaft.


Wichtigste Vorteile

🛡️ Verbesserte Systemzuverlässigkeit

  • Proaktive Fehlererkennung, bevor Ausfälle den Betrieb beeinträchtigen
  • Kontinuierliche Überwachung kritischer Systemressourcen
  • Frühwarnsystem für potenzielle Hardwarebeeinträchtigungen

⚡ Reduzierte Ausfallzeiten

  • Automatisierte Diagnoseverfahren eliminieren den Aufwand für manuelle Tests.
  • Die geplante Testausführung läuft im Hintergrund.
  • Die sofortige Fehlermeldung ermöglicht eine schnelle Reaktion

📊 Umfassende Berichterstattung

  • Hardwarevalidierung (PCI, USB, GPIO, seriell, CAN, Ethernet)
  • Systemressourcenüberwachung (CPU, Arbeitsspeicher, Festplatte)
  • Datenpfadprüfung (TCP, CAN-Bus, serielle Schnittstellen)

🔌 Plug-and-Play-Architektur

  • Dynamisches Laden von Plugins zur Laufzeit
  • Konfigurationsgesteuerte Testparameter
  • Für das Hinzufügen neuer Tests sind keine Änderungen am Kernsystem erforderlich.

📋 Systemintegration

  • Läuft als nativer Linux-Dienst
  • Automatischer Start beim Hochfahren
  • Standardmäßige Dienstverwaltung ( systemctl start/stop/status )

Testarten und Testabdeckung

Das BIT-System implementiert drei primäre Testkategorien, die auf branchenübliche Built-In Test-Methoden abgestimmt sind:

Power-On BIT (PBIT)

Es werden einmalig beim Systemstart Tests durchgeführt, um die Hardwareintegrität vor Beginn des normalen Betriebs zu überprüfen.

Kontinuierliches BIT (CBIT)

Tests, die während des normalen Betriebs regelmäßig ausgeführt werden, um Laufzeitfehler und Ressourcenerschöpfung zu erkennen.

Factory BIT (FBIT)

Umfassende Hardwaretests werden während der Fertigung und Wartung eingesetzt, um alle Systemschnittstellen zu validieren.


Testübersichtstabelle

Power-On BIT (PBIT) Tests

Testname Beschreibung Frequenz
pbit_bsp_version Prüft, ob die BSP-Version der erwarteten Konfiguration entspricht Sobald der Startvorgang abgeschlossen ist
pbit_can Prüft die Verfügbarkeit der CAN-Bus-Schnittstelle Sobald der Startvorgang abgeschlossen ist
pbit_checksum Überprüft die Dateiprüfsummen auf Integrität Sobald der Startvorgang abgeschlossen ist
pbit_cpu_cores Prüft die erwartete Anzahl der CPU-Kerne Sobald der Startvorgang abgeschlossen ist
pbit_cpu_usage Prüft, ob die anfängliche CPU-Auslastung innerhalb der Grenzwerte liegt. Sobald der Startvorgang abgeschlossen ist
pbit_disk_health Überprüft den SMART-Gesundheitsstatus der Festplatte Sobald der Startvorgang abgeschlossen ist
pbit_disk_usage Prüft beim Systemstart den verfügbaren Festplattenspeicher. Sobald der Startvorgang abgeschlossen ist
pbit_dmesg_check Durchsucht dmesg nach kritischen Fehlern Sobald der Startvorgang abgeschlossen ist
pbit_ethernet Prüft die Verfügbarkeit der Ethernet-Schnittstelle Sobald der Startvorgang abgeschlossen ist
pbit_file_checksum Überprüft die Integrität kritischer Systemdateien. Sobald der Startvorgang abgeschlossen ist
pbit_firewall_configuration Prüft, ob die Firewall-Regeln korrekt konfiguriert sind Sobald der Startvorgang abgeschlossen ist
pbit_gpio Prüft die Verfügbarkeit und den Status der GPIO-Pins. Sobald der Startvorgang abgeschlossen ist
pbit_gpu_loading Prüft GPU-Treiber und initiales Laden Sobald der Startvorgang abgeschlossen ist
pbit_memory_usage Prüft den verfügbaren Speicher beim Start Sobald der Startvorgang abgeschlossen ist
pbit_pci_whitelist Prüft PCI-Geräte anhand einer genehmigten Whitelist Sobald der Startvorgang abgeschlossen ist
pbit_permissions_verification Überprüft Datei-/Verzeichnisberechtigungen Sobald der Startvorgang abgeschlossen ist
pbit_power_test Überprüft den Zustand der Stromversorgung und die Spannungen. Sobald der Startvorgang abgeschlossen ist
pbit_selinux_apparmor_status Überprüft den Status des Sicherheitsmoduls Sobald der Startvorgang abgeschlossen ist
pbit_serial_ports Prüft die Verfügbarkeit der seriellen Schnittstelle Sobald der Startvorgang abgeschlossen ist
pbit_ssh_configuration Überprüft die SSH-Sicherheitskonfiguration Sobald der Startvorgang abgeschlossen ist
pbit_syslog_analysis Durchsucht das Syslog nach kritischen Startfehlern Sobald der Startvorgang abgeschlossen ist
pbit_temperature Prüft die anfänglichen Temperaturmesswerte Sobald der Startvorgang abgeschlossen ist
pbit_usb_whitelist Prüft USB-Geräte anhand einer genehmigten Whitelist Sobald der Startvorgang abgeschlossen ist

Kontinuierliche BIT-Tests (CBIT)

Testname Beschreibung Frequenz
cbit_bsp_version Überwacht die Konsistenz der BSP-Version. Konfigurierbar
cbit_can Überwacht den Zustand und die Fehlerzähler des CAN-Busses Konfigurierbar
cbit_checksum Regelmäßige Überprüfung der Dateiintegrität Konfigurierbar
cbit_cpu_cores Überwacht die Verfügbarkeit der CPU-Kerne Konfigurierbar
cbit_cpu_usage Überwacht die CPU-Auslastung über ein gleitendes Fenster Jede 1 Sekunde
cbit_disk_health Überwacht die SMART-Attribute der Festplatte Konfigurierbar
cbit_disk_usage Überwacht die Festplattennutzung anhand von Schwellenwerten Alle 30 Sekunden
cbit_dmesg Überwacht den Kernel-Nachrichtenpuffer Konfigurierbar
cbit_dmesg_check Kontinuierliche dmesg-Fehlererkennung Konfigurierbar
cbit_ethernet Überwacht den Status und die Fehler der Ethernet-Verbindung. Konfigurierbar
cbit_ethernet_status Überwacht den Ethernet-Verbindungsstatus Konfigurierbar
cbit_firewall_configuration Überwacht die Integrität der Firewall-Regeln Konfigurierbar
cbit_gpio Überwacht GPIO-Statusänderungen Konfigurierbar
cbit_gpu_loading Überwacht die GPU-Auslastung Konfigurierbar
cbit_memory_usage Erfasst Speicherverbrauchsmuster Konfigurierbar
cbit_pci_whitelist Überwacht Änderungen an PCI-Geräten Konfigurierbar
cbit_permissions Überwacht Änderungen der Dateiberechtigungen Konfigurierbar
cbit_permissions_verification Kontinuierliche Berechtigungsprüfung Konfigurierbar
cbit_power_consumption Überwacht Stromverbrauch und Effizienz Konfigurierbar
cbit_selinux_apparmor_status Überwacht den Status des Sicherheitsmoduls Konfigurierbar
cbit_serial_ports Überwacht die Verfügbarkeit der seriellen Schnittstelle Konfigurierbar
cbit_ssh_configuration Überwacht Änderungen der SSH-Konfiguration Konfigurierbar
cbit_syslog_analysis Kontinuierliche Überwachung von Syslog-Fehlern Konfigurierbar
cbit_temperature Überwacht thermische Messwerte und Trends Konfigurierbar
cbit_usb_whitelist Überwacht Änderungen an USB-Geräten Konfigurierbar

Factory BIT (FBIT) Tests

Testname Beschreibung Frequenz
fbit_can_data Testet die Sende-/Empfangsfunktionalität des CAN-Busses. Konfigurierbar
fbit_gpio_data Prüft die GPIO-Ein-/Ausgabefunktionalität Konfigurierbar
fbit_pci PCI-Geräteaufzählung und -Verifizierung Konfigurierbar
fbit_serial_data Prüft die Loopback-Kommunikation über die serielle Schnittstelle Konfigurierbar
fbit_ssd SSD-Lese-/Schreibleistungsvalidierung Konfigurierbar
fbit_system_data Systeminformationserfassung Konfigurierbar
fbit_tcp_data Testet Ethernet-Datenpfade mit iPerf Konfigurierbar
fbit_usb USB-Geräte-Lese-/Schreibprüfung Konfigurierbar
fbit_video Überprüfung der Videoausgabe Konfigurierbar

Insgesamt: 57 integrierte Tests, die Hardwarevalidierung, Systemüberwachung und Sicherheitsprüfung abdecken.


Plugin-Architektur

Das BIT-System basiert auf einer leistungsstarken Plugin-Architektur , die eine nahtlose Erweiterbarkeit ermöglicht, ohne den Kernsystemcode zu verändern.

So funktioniert es

Das BIT-System nutzt Zenoh als Messaging-Middleware, wodurch die Verteilung von Testergebnissen in Echtzeit an Überwachungsclients und die nahtlose Integration mit GVA-Systemen (Generic Vehicle Architecture) über Protokollbrücken ermöglicht werden.

Nachrichtenflussarchitektur

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

Detaillierter Nachrichtenablauf

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

Details zur Protokollbrücke

Komponente Protokoll in Protokoll Ausgang Zweck
BIT-Manager Intern Zenoh Veröffentlicht Testergebnisse
BIT GUI Zenoh Zeigt Echtzeitergebnisse an
BIT CLI Zenoh Überwachung der Befehlszeile
BIT Gateway Zenoh DDS (GVA) Brücken zu Fahrzeugsystemen
GVA HUMS DDS Gesundheits- und Nutzungsüberwachung

Plugin-Funktionen

Besonderheit Beschreibung
Dynamische Belastung Plugins werden zur Laufzeit als gemeinsam genutzte Bibliotheken ( .so ) geladen.
Merkmalsbasierte Schnittstelle Einheitliche TestRun und TestDetails Traits für alle Plugins
Konfigurationsdateien TOML-basierte Konfiguration pro Test ( /etc/bit/*.toml )
Versionsverfolgung Jedes Plugin meldet Version und Build-Zeitstempel.
Protokollierung von Rückrufen Einheitliche Protokollierungsinfrastruktur für alle Tests
Laufzähler Automatische Erfassung von Bestehens-/Nichtbestehensstatistiken

Erstellen eines neuen Plugins

Das Erstellen eines benutzerdefinierten BIT-Plugins ist unkompliziert:

  1. Implementieren Sie das TestRun Trait:
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Plugin-Schnittstelle exportieren:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Erstellen Sie eine Konfigurationsdatei (optional):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Erstellen und bereitstellen Sie die gemeinsam genutzte Bibliothek unter /usr/local/lib/bit_manager/

Sicherheitsfunktionen der Rust-Sprache

Das BIT-System ist in Rust implementiert und bietet beispiellose Sicherheitsgarantien, die für eingebettete und sicherheitskritische Systeme unerlässlich sind.

Speichersicherheit

Besonderheit Nutzen
Keine Nullzeiger Option Typen verhindern Nullzeiger-Dereferenzierungen
Keine Pufferüberläufe Bereichsprüfung bei allen Array-/Vektorzugriffen
Keine Nutzung nach der Gratis-Aktion Das Eigentumssystem garantiert die Gültigkeit der Erinnerungen.
Keine Datenrennen Kompilierzeitverhinderung von Fehlern durch gleichzeitigen Zugriff

Warum Rust für BIT?

🔒 Sicherheit zur Kompilierzeit

Rust erkennt ganze Kategorien von Fehlern bereits zur Kompilierzeit , die in C/C++ zu Laufzeitfehlern führen würden:

  • Speicherlecks
  • Pufferüberläufe
  • Rennbedingungen
  • Nullzeiger-Dereferenzierungen

⚡ Kostenlose Abstraktionen

Hochwertige Sicherheitsfunktionen werden in effizienten Maschinencode kompiliert , ohne Laufzeit-Overhead , und erreichen die Leistung von C/C++.

🔧 Furchtlose Gleichzeitigkeit

Das Eigentumsmodell ermöglicht eine sichere, multithreadfähige Testausführung ohne Datenkonflikte:

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

📦 Modernes Abhängigkeitsmanagement

  • Der Cargo Package Manager gewährleistet reproduzierbare Builds.
  • Automatisierte Auflösung von Abhängigkeiten
  • Integriertes Testframework

🛡️ Typsichere Konfiguration

Die Konfigurationsanalyse nutzt das Typsystem von Rust, um Fehler frühzeitig zu erkennen:

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

Sicherheitsstatistik

Metrisch Rust vs. C/C++
Speichersicherheitslücken Zur Kompilierzeit eliminiert
CVE-Schwachstellenklassen verhindert ~70% der häufigsten Schwachstellen
Laufzeitfehler aufgrund von Nullzeigerfehlern Unmöglich
Verstöße gegen die Gewindesicherheit Beim Kompilierzeitpunkt erkannt

Integration & Bereitstellung

Systemd-Dienst

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Debian-Paketinstallation

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

Konfigurationspfade

Weg Zweck
/etc/bit/ Testkonfigurationsdateien (TOML)
/usr/local/lib/bit_manager/ Plugin-Bibliotheken
/var/log/bit_manager/ Protokolldateien

Inspektion und Überwachung

Das Dienstprogramm bit_inspect liefert detaillierte Informationen über geladene Tests:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Beispielausgabe:

 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)

Zusammenfassung

Das BIT-System bietet folgende Leistungen:

Umfassende Hardware- und Software-Diagnose
Erweiterbare Plugin-Architektur für benutzerdefinierte Tests
Speichersichere Implementierung in Rust
Industriestandardisierte PBIT/CBIT/FBIT-Methodik
Native Linux/systemd-Integration
Konfigurationsgesteuerte Testparameter
Echtzeitüberwachung und -protokollierung