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
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
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:
- Implementera
TestRunegenskapen:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Exportera plugin-gränssnittet:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Skapa en konfigurationsfil (valfritt):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- 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 timeSä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_managerDebian-paketinstallation
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debKonfigurationsvä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_usageExempel 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