Vantaggi del sistema di test integrato (BIT)
Panoramica
Il sistema Built-In Test (BIT) è un framework di test completo, modulare ed estensibile, progettato per sistemi embedded basati su Linux. Fornisce diagnostica hardware e software automatizzata attraverso un'architettura basata su plugin, garantendo affidabilità, integrità e prontezza operativa del sistema.
Vantaggi principali
🛡️ Affidabilità del sistema migliorata
- Rilevamento proattivo dei guasti prima che i guasti influiscano sulle operazioni
- Monitoraggio continuo delle risorse critiche del sistema
- Sistema di allerta precoce per il potenziale degrado dell'hardware
⚡ Tempi di inattività ridotti
- La diagnostica automatizzata elimina i costi generali dei test manuali
- L'esecuzione pianificata del test viene eseguita in background
- La notifica immediata dei guasti consente una risposta rapida
📊 Copertura completa
- Validazione hardware (PCI, USB, GPIO, seriale, CAN, Ethernet)
- Monitoraggio delle risorse di sistema (CPU, memoria, disco)
- Verifica del percorso dati (TCP, bus CAN, porte seriali)
🔌 Architettura Plug-and-Play
- Caricamento dinamico dei plugin in fase di esecuzione
- Parametri di test basati sulla configurazione
- Non sono necessarie modifiche al sistema principale per aggiungere nuovi test
📋 Integrazione Systemd
- Funziona come un servizio Linux nativo
- Avvio automatico all'avvio
- Gestione del servizio standard (
systemctl start/stop/status)
Tipi di test e copertura
Il sistema BIT implementa tre categorie di test principali allineate alle metodologie di test integrati standard del settore:
BIT di accensione (PBIT)
Test eseguiti una volta all'avvio del sistema per verificare l'integrità dell'hardware prima dell'inizio delle normali operazioni.
BIT continuo (CBIT)
Test eseguiti periodicamente durante le normali operazioni per rilevare errori di runtime ed esaurimento delle risorse.
BIT di fabbrica (FBIT)
Test hardware completi utilizzati durante la produzione e la manutenzione per convalidare tutte le interfacce del sistema.
Tabella riepilogativa dei test
Test Power-On BIT (PBIT)
| Nome del test | Descrizione | Frequenza |
|---|---|---|
pbit_bsp_version | Convalida che la versione BSP corrisponda alla configurazione prevista | Una volta all'avvio |
pbit_can | Convalida la disponibilità dell'interfaccia CAN bus | Una volta all'avvio |
pbit_checksum | Verifica l'integrità dei checksum dei file | Una volta all'avvio |
pbit_cpu_cores | Convalida il numero previsto di core della CPU | Una volta all'avvio |
pbit_cpu_usage | Controlla che l'utilizzo iniziale della CPU sia entro i limiti | Una volta all'avvio |
pbit_disk_health | Convalida lo stato di integrità SMART del disco | Una volta all'avvio |
pbit_disk_usage | Controlla la disponibilità di spazio su disco all'avvio | Una volta all'avvio |
pbit_dmesg_check | Esegue la scansione di dmesg per errori critici | Una volta all'avvio |
pbit_ethernet | Convalida la disponibilità dell'interfaccia Ethernet | Una volta all'avvio |
pbit_file_checksum | Verifica l'integrità dei file di sistema critici | Una volta all'avvio |
pbit_firewall_configuration | Convalida che le regole del firewall siano configurate correttamente | Una volta all'avvio |
pbit_gpio | Convalida la disponibilità e lo stato del pin GPIO | Una volta all'avvio |
pbit_gpu_loading | Controlla il driver GPU e il caricamento iniziale | Una volta all'avvio |
pbit_memory_usage | Convalida la memoria disponibile all'avvio | Una volta all'avvio |
pbit_pci_whitelist | Convalida i dispositivi PCI rispetto alla whitelist approvata | Una volta all'avvio |
pbit_permissions_verification | Convalida i permessi di file/directory | Una volta all'avvio |
pbit_power_test | Controlla lo stato e le tensioni dell'alimentazione | Una volta all'avvio |
pbit_selinux_apparmor_status | Convalida lo stato del modulo di sicurezza | Una volta all'avvio |
pbit_serial_ports | Convalida la disponibilità della porta seriale | Una volta all'avvio |
pbit_ssh_configuration | Convalida la configurazione di sicurezza SSH | Una volta all'avvio |
pbit_syslog_analysis | Esegue la scansione di syslog per errori di avvio critici | Una volta all'avvio |
pbit_temperature | Controlla le letture termiche iniziali | Una volta all'avvio |
pbit_usb_whitelist | Convalida i dispositivi USB rispetto alla whitelist approvata | Una volta all'avvio |
Test BIT continui (CBIT)
| Nome del test | Descrizione | Frequenza |
|---|---|---|
cbit_bsp_version | Monitora la coerenza della versione BSP | Configurabile |
cbit_can | Monitora lo stato del bus CAN e i contatori di errore | Configurabile |
cbit_checksum | Verifica periodica dell'integrità dei file | Configurabile |
cbit_cpu_cores | Monitora la disponibilità dei core della CPU | Configurabile |
cbit_cpu_usage | Monitora l'utilizzo della CPU su una finestra mobile | Ogni 1s |
cbit_disk_health | Monitora gli attributi SMART del disco | Configurabile |
cbit_disk_usage | Monitora l'utilizzo del disco rispetto alle soglie | Ogni 30 secondi |
cbit_dmesg | Monitora il buffer dei messaggi del kernel | Configurabile |
cbit_dmesg_check | Rilevamento continuo degli errori dmesg | Configurabile |
cbit_ethernet | Monitora lo stato e gli errori del collegamento Ethernet | Configurabile |
cbit_ethernet_status | Monitora lo stato della connessione Ethernet | Configurabile |
cbit_firewall_configuration | Monitora l'integrità delle regole del firewall | Configurabile |
cbit_gpio | Monitora le modifiche dello stato GPIO | Configurabile |
cbit_gpu_loading | Monitora l'utilizzo della GPU | Configurabile |
cbit_memory_usage | Traccia i modelli di consumo della memoria | Configurabile |
cbit_pci_whitelist | Monitora le modifiche del dispositivo PCI | Configurabile |
cbit_permissions | Monitora le modifiche ai permessi dei file | Configurabile |
cbit_permissions_verification | Validazione continua dei permessi | Configurabile |
cbit_power_consumption | Monitora il consumo energetico e l'efficienza | Configurabile |
cbit_selinux_apparmor_status | Monitora lo stato del modulo di sicurezza | Configurabile |
cbit_serial_ports | Monitora la disponibilità della porta seriale | Configurabile |
cbit_ssh_configuration | Monitora le modifiche alla configurazione SSH | Configurabile |
cbit_syslog_analysis | Monitoraggio continuo degli errori syslog | Configurabile |
cbit_temperature | Monitora le letture e le tendenze termiche | Configurabile |
cbit_usb_whitelist | Monitora le modifiche del dispositivo USB | Configurabile |
Test BIT di fabbrica (FBIT)
| Nome del test | Descrizione | Frequenza |
|---|---|---|
fbit_can_data | Testa la funzionalità di trasmissione/ricezione del bus CAN | Configurabile |
fbit_gpio_data | Convalida la funzionalità di input/output GPIO | Configurabile |
fbit_pci | Enumerazione e verifica dei dispositivi PCI | Configurabile |
fbit_serial_data | Convalida la comunicazione loopback della porta seriale | Configurabile |
fbit_ssd | Validazione delle prestazioni di lettura/scrittura SSD | Configurabile |
fbit_system_data | Raccolta di informazioni di sistema | Configurabile |
fbit_tcp_data | Testa i percorsi dati Ethernet utilizzando iPerf | Configurabile |
fbit_usb | Verifica di lettura/scrittura del dispositivo USB | Configurabile |
fbit_video | Verifica dell'uscita video | Configurabile |
Totale: 57 test integrati che coprono la convalida dell'hardware, il monitoraggio del sistema e la verifica della sicurezza.
Architettura del plugin
Il sistema BIT è basato su una potente architettura a plugin che consente un'estendibilità fluida senza modificare il codice del sistema principale.
Come funziona
Il sistema BIT utilizza Zenoh come middleware di messaggistica, consentendo la distribuzione dei risultati dei test in tempo reale ai client di monitoraggio e l'integrazione perfetta con i sistemi GVA (Generic Vehicle Architecture) tramite il bridging dei protocolli.
Architettura del flusso dei messaggi
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
Sequenza dettagliata dei messaggi
Dettagli del bridge di protocollo
| Componente | Protocollo in | Protocollo fuori | Scopo |
|---|---|---|---|
| Responsabile BIT | Interno | Zenoh | Pubblica i risultati dei test |
| Interfaccia grafica utente BIT | Zenoh | — | Visualizza i risultati in tempo reale |
| BIT CLI | Zenoh | — | Monitoraggio della riga di comando |
| Portale BIT | Zenoh | DDS (GVA) | Ponti verso i sistemi dei veicoli |
| GVA HUMS | DDS | — | Monitoraggio della salute e dell'utilizzo |
Caratteristiche del plugin
| Caratteristica | Descrizione |
|---|---|
| Caricamento dinamico | I plugin vengono caricati come librerie condivise ( .so ) in fase di esecuzione |
| Interfaccia basata sui tratti | Caratteristiche TestRun e TestDetails coerenti per tutti i plugin |
| File di configurazione | Configurazione basata su TOML per test ( /etc/bit/*.toml ) |
| Monitoraggio della versione | Ogni plugin riporta la versione e il timestamp di build |
| Registrazione dei callback | Infrastruttura di registrazione unificata per tutti i test |
| Contatori di corse | Monitoraggio automatico delle statistiche di superamento/fallimento |
Creazione di un nuovo plugin
Creare un plugin BIT personalizzato è semplice:
- Implementare la caratteristica
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Esporta l'interfaccia del plugin:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Creare un file di configurazione (facoltativo):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- Compila e distribuisci la libreria condivisa in
/usr/local/lib/bit_manager/
Funzionalità di sicurezza del linguaggio Rust
Il sistema BIT è implementato in Rust , offrendo garanzie di sicurezza senza pari, fondamentali per i sistemi embedded e safety-critical.
Sicurezza della memoria
| Caratteristica | Beneficio |
|---|---|
| Nessun puntatore nullo | Option i tipi impediscono la dereferenziazione dei puntatori nulli |
| Nessun buffer overflow | Controllo dei limiti su tutti gli accessi array/vettori |
| Nessun uso successivo gratuito | Il sistema di proprietà garantisce la validità della memoria |
| Nessuna gara di dati | Prevenzione in fase di compilazione dei bug di accesso simultaneo |
Perché Rust per BIT?
🔒 Sicurezza in fase di compilazione
Rust rileva intere categorie di bug in fase di compilazione che causerebbero errori di runtime in C/C++:
- perdite di memoria
- buffer overflow
- Condizioni di gara
- Dereferenziazione dei puntatori nulli
⚡ Astrazioni a costo zero
Le funzionalità di sicurezza di alto livello vengono compilate in codice macchina efficiente senza alcun sovraccarico di runtime , eguagliando le prestazioni C/C++.
🔧 Concorrenza senza paura
Il modello di proprietà consente l'esecuzione sicura di test multi-thread senza conflitti di dati:
// Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new())); 📦 Gestione moderna delle dipendenze
- Il gestore dei pacchetti di carico garantisce build riproducibili
- Risoluzione automatizzata delle dipendenze
- Framework di test integrato
🛡️ Configurazione Type-Safe
L'analisi della configurazione sfrutta il sistema di tipi di Rust per rilevare tempestivamente gli errori:
let threshold: f32 = config.get("threshold")?; // Type-checked at compile timeStatistiche sulla sicurezza
| Metrico | Rust contro C/C++ |
|---|---|
| Bug di sicurezza della memoria | Eliminato in fase di compilazione |
| Classi di vulnerabilità CVE prevenute | ~70% delle vulnerabilità comuni |
| Arresti anomali del puntatore nullo in fase di esecuzione | Impossibile |
| Violazioni della sicurezza dei thread | Rilevato in fase di compilazione |
Integrazione e distribuzione
Servizio Systemd
# Enable automatic startup
sudo systemctl enable bit_manager
# Start the service
sudo systemctl start bit_manager
# Check status
sudo systemctl status bit_managerInstallazione del pacchetto Debian
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debPercorsi di configurazione
| Sentiero | Scopo |
|---|---|
/etc/bit/ | File di configurazione di prova (TOML) |
/usr/local/lib/bit_manager/ | Librerie condivise dei plugin |
/var/log/bit_manager/ | File di registro |
Ispezione e monitoraggio
L'utilità bit_inspect fornisce informazioni dettagliate sui test caricati:
# List all available tests
bit_inspect
# Get detailed information about a specific test
bit_inspect cbit_disk_usageEsempio di output:
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) Riepilogo
Il sistema BIT offre:
✅ Diagnostica completa hardware e software
✅ Architettura estensibile dei plugin per test personalizzati
✅ Implementazione sicura della memoria in Rust
✅ Metodologia PBIT/CBIT/FBIT standard del settore
✅ Integrazione nativa Linux/systemd
✅ Parametri di test basati sulla configurazione
✅ Monitoraggio e registrazione in tempo reale