Fördelar med inbyggt testsystem (BIT)

Översikt

BIT-systemet (Built-In Test) är ett omfattande, modulärt och utökningsbart testramverk utformat för Linux-baserade inbyggda system. Det tillhandahåller automatiserad hårdvaru- och mjukvarudiagnostik genom en plugin-baserad arkitektur, vilket säkerställer systemets tillförlitlighet, integritet och driftberedskap.


Viktiga fördelar

🛡️ Förbättrad systemtillförlitlighet

  • Proaktiv feldetektering innan fel påverkar driften
  • Kontinuerlig övervakning av kritiska systemresurser
  • Tidigt varningssystem för potentiell hårdvaruförsämring

⚡ Minskad driftstopp

  • Automatiserad diagnostik eliminerar manuell testningsomkostnad
  • Schemalagd testkörning körs i bakgrunden
  • Omedelbar felmeddelande möjliggör snabb respons

📊 Omfattande täckning

  • Hårdvaruvalidering (PCI, USB, GPIO, seriell, CAN, Ethernet)
  • Övervakning av systemresurser (CPU, minne, disk)
  • Verifiering av dataväg (TCP, CAN-buss, seriella portar)

🔌 Plug-and-Play-arkitektur

  • Dynamisk plugin-laddning vid körning
  • Konfigurationsdrivna testparametrar
  • Inga modifieringar av kärnsystemet krävs för att lägga till nya tester

📋 Systemd-integration

  • Körs som en inbyggd Linux-tjänst
  • Automatisk uppstart vid uppstart
  • Standardtjänsthantering ( systemctl start/stop/status )

Testtyper och täckning

BIT-systemet implementerar tre primära testkategorier i linje med branschstandardmetoder för inbyggda test:

Påslagningsbit (PBIT)

Tester körs en gång vid systemstart för att verifiera hårdvarans integritet innan normal drift påbörjas.

Kontinuerlig BIT (CBIT)

Tester som körs regelbundet under normal drift för att upptäcka körtidsfel och resursutmattning.

Fabriksbit (FBIT)

Omfattande hårdvarutester som används under tillverkning och underhåll för att validera alla systemgränssnitt.


Testsammanfattningstabell

Power-On BIT (PBIT)-tester

Testnamn Beskrivning Frekvens
pbit_bsp_version Validerar att BSP-versionen matchar förväntad konfiguration En gång vid uppstart
pbit_can Validerar tillgängligheten av CAN-bussgränssnittet En gång vid uppstart
pbit_checksum Verifierar filkontrollsummor för integritet En gång vid uppstart
pbit_cpu_cores Validerar förväntat antal CPU-kärnor En gång vid uppstart
pbit_cpu_usage Kontrollerar att den initiala CPU-användningen är inom gränserna En gång vid uppstart
pbit_disk_health Validerar diskens SMART-hälsostatus En gång vid uppstart
pbit_disk_usage Kontrollerar tillgängligt diskutrymme vid start En gång vid uppstart
pbit_dmesg_check Skannar dmesg efter kritiska fel En gång vid uppstart
pbit_ethernet Validerar Ethernet-gränssnittets tillgänglighet En gång vid uppstart
pbit_file_checksum Verifierar integriteten för kritiska systemfiler En gång vid uppstart
pbit_firewall_configuration Validerar att brandväggsreglerna är korrekt konfigurerade En gång vid uppstart
pbit_gpio Validerar GPIO-pinens tillgänglighet och status En gång vid uppstart
pbit_gpu_loading Kontrollerar GPU-drivrutinen och initial laddning En gång vid uppstart
pbit_memory_usage Validerar tillgängligt minne vid start En gång vid uppstart
pbit_pci_whitelist Validerar PCI-enheter mot godkänd vitlista En gång vid uppstart
pbit_permissions_verification Validerar fil-/katalogbehörigheter En gång vid uppstart
pbit_power_test Kontrollerar strömförsörjningens status och spänningar En gång vid uppstart
pbit_selinux_apparmor_status Validerar säkerhetsmodulens status En gång vid uppstart
pbit_serial_ports Validerar tillgängligheten av serieporten En gång vid uppstart
pbit_ssh_configuration Validerar SSH-säkerhetskonfigurationen En gång vid uppstart
pbit_syslog_analysis Skannar sysloggen efter kritiska startfel En gång vid uppstart
pbit_temperature Kontrollerar initiala termiska avläsningar En gång vid uppstart
pbit_usb_whitelist Validerar USB-enheter mot godkänd vitlista En gång vid uppstart

Kontinuerliga BIT-tester (CBIT)

Testnamn Beskrivning Frekvens
cbit_bsp_version Övervakar BSP-versionskonsistens Konfigurerbar
cbit_can Övervakar CAN-bussens hälsa och felräknare Konfigurerbar
cbit_checksum Periodisk verifiering av filintegritet Konfigurerbar
cbit_cpu_cores Övervakar CPU-kärnans tillgänglighet Konfigurerbar
cbit_cpu_usage Övervakar CPU-användning över rullande fönster Var 1:a sekund
cbit_disk_health Övervakar diskens SMART-attribut Konfigurerbar
cbit_disk_usage Övervakar diskanvändning mot tröskelvärden Var 30:e sekund
cbit_dmesg Övervakar kärnmeddelandebufferten Konfigurerbar
cbit_dmesg_check Kontinuerlig detektering av dmesg-fel Konfigurerbar
cbit_ethernet Övervakar Ethernet-länkens status och fel Konfigurerbar
cbit_ethernet_status Övervakar Ethernet-anslutningens tillstånd Konfigurerbar
cbit_firewall_configuration Övervakar brandväggsreglernas integritet Konfigurerbar
cbit_gpio Övervakar GPIO-tillståndsförändringar Konfigurerbar
cbit_gpu_loading Övervakar GPU-användning Konfigurerbar
cbit_memory_usage Spårar minnesförbrukningsmönster Konfigurerbar
cbit_pci_whitelist Övervakar PCI-enhetsändringar Konfigurerbar
cbit_permissions Övervakar ändringar i filbehörigheter Konfigurerbar
cbit_permissions_verification Kontinuerlig behörighetsvalidering Konfigurerbar
cbit_power_consumption Övervakar effektförbrukning och effektivitet Konfigurerbar
cbit_selinux_apparmor_status Övervakar säkerhetsmodulens tillstånd Konfigurerbar
cbit_serial_ports Övervakar tillgängligheten av serieportar Konfigurerbar
cbit_ssh_configuration Övervakar ändringar i SSH-konfigurationen Konfigurerbar
cbit_syslog_analysis Kontinuerlig övervakning av syslog-fel Konfigurerbar
cbit_temperature Övervakar termiska avläsningar och trender Konfigurerbar
cbit_usb_whitelist Övervakar ändringar i USB-enheter Konfigurerbar

Fabriks-BIT (FBIT)-tester

Testnamn Beskrivning Frekvens
fbit_can_data Testar CAN-bussens sändnings-/mottagningsfunktioner Konfigurerbar
fbit_gpio_data Validerar GPIO-ingångs-/utgångsfunktionalitet Konfigurerbar
fbit_pci PCI-enhetsuppräkning och verifiering Konfigurerbar
fbit_serial_data Validerar loopback-kommunikation via serieporten Konfigurerbar
fbit_ssd Validering av SSD-läs-/skrivprestanda Konfigurerbar
fbit_system_data Insamling av systeminformation Konfigurerbar
fbit_tcp_data Testar Ethernet-datavägar med iPerf Konfigurerbar
fbit_usb Verifiering av läs-/skrivfunktion på USB-enhet Konfigurerbar
fbit_video Verifiering av videoutgång Konfigurerbar

Totalt: 57 inbyggda tester som täcker hårdvaruvalidering, systemövervakning och säkerhetsverifiering.


Plugin-arkitektur

BIT-systemet är byggt på en kraftfull plugin-arkitektur som möjliggör sömlös utökning utan att modifiera kärnsystemets kod.

Hur det fungerar

BIT-systemet använder Zenoh som sin mellanprogramvara för meddelanden, vilket möjliggör distribution av testresultat i realtid till övervakningsklienter och sömlös integration med GVA-system (Generic Vehicle Architecture) via protokollbryggning.

Meddelandeflödesarkitektur

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

Detaljerad meddelandesekvens

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

Detaljer om protokollbryggan

Komponent Protokoll in Protokoll ut Ändamål
BIT-chef Inre Zenoh Publicerar testresultat
BIT GUI Zenoh Visar resultat i realtid
BIT CLI Zenoh Kommandoradsövervakning
BIT-gateway Zenoh DDS (GVA) Bryggor till fordonssystem
GVA HUMS DDS Hälso- och användningsövervakning

Plugin-funktioner

Särdrag Beskrivning
Dynamisk laddning Plugins laddas som delade bibliotek ( .so ) vid körning.
Egenskapsbaserat gränssnitt Konsekventa TestRun och TestDetails egenskaper för alla plugin-program
Konfigurationsfiler TOML-baserad konfiguration per test ( /etc/bit/*.toml )
Versionsspårning Varje plugin rapporterar versions- och byggtidsstämpel
Loggning av återanrop Enhetlig loggningsinfrastruktur för alla tester
Körräknare Automatisk spårning av statistik för godkänd/icke godkänd

Skapa ett nytt plugin

Att skapa ett anpassat BIT-plugin är enkelt:

  1. Implementera TestRun egenskapen:
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Exportera plugin-gränssnittet:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Skapa en konfigurationsfil (valfritt):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Bygg och distribuera det delade biblioteket till /usr/local/lib/bit_manager/

Säkerhetsfunktioner för rostspråk

BIT-systemet är implementerat i Rust , vilket ger oöverträffade säkerhetsgarantier som är avgörande för inbyggda och säkerhetskritiska system.

Minnessäkerhet

Särdrag Förmån
Inga nullpekare Option typer förhindrar nullpekare-derreferenser
Inga buffertöverflöden Gränskontroll för all array-/vektoråtkomst
Ingen användning efter friköp Ägarskapssystemet garanterar minnesgiltighet
Inga datakapplöpningar Förebyggande av samtidiga åtkomstfel vid kompilering

Varför rostar det för BIT?

🔒 Säkerhet vid kompilering

Rust fångar upp hela kategorier av buggar vid kompileringstid som skulle orsaka körtidsfel i C/C++:

  • Minnesläckor
  • Buffertöverflöden
  • Tävlingsförhållanden
  • Nullpekare-dereferenser

⚡ Nollkostnadsabstraktioner

Högkvalitativa säkerhetsfunktioner kompilerar till effektiv maskinkod utan körtidsoverhead , vilket matchar C/C++-prestanda.

🔧 Orädd Samtidighet

Ägarmodellen möjliggör säker flertrådad testkörning utan datakapplöpningar:

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

📦 Modern beroendehantering

  • Cargo- pakethanteraren säkerställer reproducerbara byggen
  • Automatiserad beroendelösning
  • Inbyggt testramverk

🛡️ Typsäker konfiguration

Konfigurationstolkning utnyttjar Rusts typsystem för att upptäcka fel tidigt:

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

Säkerhetsstatistik

Metrisk Rost vs C/C++
Säkerhetsbuggar för minne Elimineras vid kompileringstid
CVE-sårbarhetsklasser förhindrade ~70 % av vanliga sårbarheter
Nullpekaren vid körning kraschar Omöjlig
Säkerhetsöverträdelser i trådar Fångad vid kompileringstid

Integrering och driftsättning

Systemd-tjänst

 # 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

Konfigurationsvägar

Väg Ändamål
/etc/bit/ Testkonfigurationsfiler (TOML)
/usr/local/lib/bit_manager/ Delade bibliotek för plugin-program
/var/log/bit_manager/ Loggfiler

Inspektion och övervakning

Verktyget bit_inspect ger detaljerad information om laddade tester:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Exempel på utdata:

 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)

Sammanfattning

BIT-systemet levererar:

Omfattande diagnostik av hårdvara och mjukvara
Utökningsbar plugin-arkitektur för anpassade tester
Minnessäker implementering i Rust
Branschstandard PBIT/CBIT/FBIT-metodik
Inbyggd Linux/systemd-integration
Konfigurationsdrivna testparametrar
Övervakning och loggning i realtid