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
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
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:
- Implementieren Sie das
TestRunTrait:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Plugin-Schnittstelle exportieren:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Erstellen Sie eine Konfigurationsdatei (optional):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- 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 timeSicherheitsstatistik
| 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_managerDebian-Paketinstallation
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debKonfigurationspfade
| 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_usageBeispielausgabe:
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