Faedah Sistem Ujian Terbina Dalam (BIT)

Gambaran Keseluruhan

Sistem Ujian Terbina Dalam (BIT) ialah rangka kerja pengujian yang komprehensif, modular dan boleh diperluas yang direka bentuk untuk sistem terbenam berasaskan Linux. Ia menyediakan diagnostik perkakasan dan perisian automatik melalui seni bina berasaskan pemalam, memastikan kebolehpercayaan, integriti dan kesediaan operasi sistem.


Faedah Utama

🛡️ Kebolehpercayaan Sistem yang Dipertingkatkan

  • Pengesanan kerosakan proaktif sebelum kegagalan memberi kesan kepada operasi
  • Pemantauan berterusan sumber sistem kritikal
  • Sistem amaran awal untuk potensi degradasi perkakasan

⚡ Mengurangkan Masa Henti

  • Diagnostik automatik menghapuskan overhed ujian manual
  • Pelaksanaan ujian berjadual berjalan di latar belakang
  • Pemberitahuan kerosakan segera membolehkan tindak balas pantas

📊 Perlindungan Komprehensif

  • Pengesahan perkakasan (PCI, USB, GPIO, Serial, CAN, Ethernet)
  • Pemantauan sumber sistem (CPU, Memori, Cakera)
  • Pengesahan laluan data (TCP, bas CAN, port Siri)

🔌 Senibina Pasang dan Main

  • Pemuatan pemalam dinamik semasa masa jalan
  • Parameter ujian berasaskan konfigurasi
  • Tiada pengubahsuaian sistem teras diperlukan untuk menambah ujian baharu

📋 Integrasi Sistem

  • Berjalan sebagai perkhidmatan Linux asli
  • Permulaan automatik semasa but
  • Pengurusan perkhidmatan standard ( systemctl start/stop/status )

Jenis & Liputan Ujian

Sistem BIT melaksanakan tiga kategori ujian utama yang sejajar dengan metodologi Ujian Terbina Dalam standard industri:

BIT Kuasa Hidup (PBIT)

Ujian dijalankan sekali semasa permulaan sistem untuk mengesahkan integriti perkakasan sebelum operasi biasa bermula.

BIT Berterusan (CBIT)

Ujian yang dijalankan secara berkala semasa operasi biasa untuk mengesan kerosakan masa jalan dan kehabisan sumber.

BIT Kilang (FBIT)

Ujian perkakasan komprehensif yang digunakan semasa pembuatan dan penyelenggaraan untuk mengesahkan semua antara muka sistem.


Jadual Ringkasan Ujian

Ujian BIT Kuasa Hidup (PBIT)

Nama Ujian Penerangan Kekerapan
pbit_bsp_version Mengesahkan versi BSP sepadan dengan konfigurasi yang dijangkakan Sebaik sahaja permulaan
pbit_can Mengesahkan ketersediaan antara muka bas CAN Sebaik sahaja permulaan
pbit_checksum Mengesahkan semakan fail untuk integriti Sebaik sahaja permulaan
pbit_cpu_cores Mengesahkan kiraan teras CPU yang dijangkakan Sebaik sahaja permulaan
pbit_cpu_usage Memeriksa penggunaan CPU awal berada dalam had Sebaik sahaja permulaan
pbit_disk_health Mengesahkan status kesihatan cakera SMART Sebaik sahaja permulaan
pbit_disk_usage Memeriksa ketersediaan ruang cakera semasa but Sebaik sahaja permulaan
pbit_dmesg_check Mengimbas dmesg untuk ralat kritikal Sebaik sahaja permulaan
pbit_ethernet Mengesahkan ketersediaan antara muka Ethernet Sebaik sahaja permulaan
pbit_file_checksum Mengesahkan integriti fail sistem kritikal Sebaik sahaja permulaan
pbit_firewall_configuration Mengesahkan peraturan firewall dikonfigurasikan dengan betul Sebaik sahaja permulaan
pbit_gpio Mengesahkan ketersediaan dan keadaan pin GPIO Sebaik sahaja permulaan
pbit_gpu_loading Memeriksa pemacu GPU dan pemuatan awal Sebaik sahaja permulaan
pbit_memory_usage Mengesahkan memori yang tersedia semasa permulaan Sebaik sahaja permulaan
pbit_pci_whitelist Mengesahkan peranti PCI terhadap senarai putih yang diluluskan Sebaik sahaja permulaan
pbit_permissions_verification Mengesahkan kebenaran fail/direktori Sebaik sahaja permulaan
pbit_power_test Memeriksa status bekalan kuasa dan voltan Sebaik sahaja permulaan
pbit_selinux_apparmor_status Mengesahkan status modul keselamatan Sebaik sahaja permulaan
pbit_serial_ports Mengesahkan ketersediaan port bersiri Sebaik sahaja permulaan
pbit_ssh_configuration Mengesahkan konfigurasi keselamatan SSH Sebaik sahaja permulaan
pbit_syslog_analysis Mengimbas syslog untuk ralat permulaan kritikal Sebaik sahaja permulaan
pbit_temperature Memeriksa bacaan terma awal Sebaik sahaja permulaan
pbit_usb_whitelist Mengesahkan peranti USB terhadap senarai putih yang diluluskan Sebaik sahaja permulaan

Ujian BIT Berterusan (CBIT)

Nama Ujian Penerangan Kekerapan
cbit_bsp_version Memantau konsistensi versi BSP Boleh dikonfigurasikan
cbit_can Monitor kaunter kesihatan dan ralat bas CAN Boleh dikonfigurasikan
cbit_checksum Pengesahan integriti fail berkala Boleh dikonfigurasikan
cbit_cpu_cores Memantau ketersediaan teras CPU Boleh dikonfigurasikan
cbit_cpu_usage Memantau penggunaan CPU sepanjang tetingkap bergulir Setiap 1 saat
cbit_disk_health Memantau atribut SMART cakera Boleh dikonfigurasikan
cbit_disk_usage Memantau penggunaan cakera berdasarkan ambang batas Setiap 30-an
cbit_dmesg Memantau penimbal mesej kernel Boleh dikonfigurasikan
cbit_dmesg_check Pengesanan ralat dmesg berterusan Boleh dikonfigurasikan
cbit_ethernet Memantau status dan ralat pautan Ethernet Boleh dikonfigurasikan
cbit_ethernet_status Memantau keadaan sambungan Ethernet Boleh dikonfigurasikan
cbit_firewall_configuration Memantau integriti peraturan firewall Boleh dikonfigurasikan
cbit_gpio Memantau perubahan keadaan GPIO Boleh dikonfigurasikan
cbit_gpu_loading Memantau penggunaan GPU Boleh dikonfigurasikan
cbit_memory_usage Menjejaki corak penggunaan memori Boleh dikonfigurasikan
cbit_pci_whitelist Memantau perubahan peranti PCI Boleh dikonfigurasikan
cbit_permissions Memantau perubahan kebenaran fail Boleh dikonfigurasikan
cbit_permissions_verification Pengesahan kebenaran berterusan Boleh dikonfigurasikan
cbit_power_consumption Memantau penggunaan dan kecekapan kuasa Boleh dikonfigurasikan
cbit_selinux_apparmor_status Memantau keadaan modul keselamatan Boleh dikonfigurasikan
cbit_serial_ports Memantau ketersediaan port bersiri Boleh dikonfigurasikan
cbit_ssh_configuration Memantau perubahan konfigurasi SSH Boleh dikonfigurasikan
cbit_syslog_analysis Pemantauan ralat syslog berterusan Boleh dikonfigurasikan
cbit_temperature Memantau bacaan dan trend terma Boleh dikonfigurasikan
cbit_usb_whitelist Memantau perubahan peranti USB Boleh dikonfigurasikan

Ujian BIT Kilang (FBIT)

Nama Ujian Penerangan Kekerapan
fbit_can_data Menguji fungsi penghantaran/penerima bas CAN Boleh dikonfigurasikan
fbit_gpio_data Mengesahkan fungsi input/output GPIO Boleh dikonfigurasikan
fbit_pci Penghitungan dan pengesahan peranti PCI Boleh dikonfigurasikan
fbit_serial_data Mengesahkan komunikasi gelung balik port bersiri Boleh dikonfigurasikan
fbit_ssd Pengesahan prestasi baca/tulis SSD Boleh dikonfigurasikan
fbit_system_data Pengumpulan maklumat sistem Boleh dikonfigurasikan
fbit_tcp_data Menguji laluan data Ethernet menggunakan iPerf Boleh dikonfigurasikan
fbit_usb Pengesahan baca/tulis peranti USB Boleh dikonfigurasikan
fbit_video Pengesahan output video Boleh dikonfigurasikan

Jumlah: 57 Ujian Terbina Dalam yang meliputi pengesahan perkakasan, pemantauan sistem dan pengesahan keselamatan.


Senibina Plugin

Sistem BIT dibina berdasarkan seni bina plugin yang berkuasa yang membolehkan kebolehpanjangan yang lancar tanpa mengubah suai kod sistem teras.

Cara Ia Berfungsi

Sistem BIT menggunakan Zenoh sebagai perisian tengah pesanannya, yang membolehkan pengedaran keputusan ujian masa nyata kepada pelanggan pemantauan dan penyepaduan yang lancar dengan sistem GVA (Senibina Kenderaan Generik) melalui penyambungan protokol.

Senibina Aliran Mesej

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

Urutan Mesej Terperinci

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

Butiran Jambatan Protokol

Komponen Protokol Dalam Protokol Keluar Tujuan
Pengurus BIT Dalaman Zenoh Menerbitkan keputusan ujian
GUI BIT Zenoh Memaparkan keputusan masa nyata
BIT CLI Zenoh Pemantauan baris arahan
Gerbang BIT Zenoh DDS (GVA) Jambatan ke sistem kenderaan
GVA HUMS DDS Pemantauan Kesihatan & Penggunaan

Ciri-ciri Pemalam

Ciri Penerangan
Pemuatan Dinamik Plugin dimuatkan sebagai pustaka kongsi ( .so ) semasa masa jalan
Antara Muka Berasaskan Sifat Ciri TestRun dan TestDetails yang konsisten untuk semua pemalam
Fail Konfigurasi Konfigurasi berasaskan TOML setiap ujian ( /etc/bit/*.toml )
Penjejakan Versi Setiap pemalam melaporkan cap masa versi dan binaan
Panggilan Balik Pembalakan Infrastruktur pembalakan bersepadu merentasi semua ujian
Kaunter Larian Penjejakan automatik statistik lulus/gagal

Mencipta Plugin Baharu

Mencipta plugin BIT tersuai adalah mudah:

  1. Laksanakan ciri TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Eksport antara muka pemalam:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Cipta fail konfigurasi (pilihan):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Bina dan gunakan pustaka kongsi ke /usr/local/lib/bit_manager/

Ciri-ciri Keselamatan Bahasa Karat

Sistem BIT dilaksanakan di Rust , memberikan jaminan keselamatan yang tiada tandingan yang penting untuk sistem terbenam dan kritikal keselamatan.

Keselamatan Memori

Ciri Manfaat
Tiada Penunjuk Null Option jenis menghalang penyahirujukan penunjuk null
Tiada Limpahan Penimbal Pemeriksaan sempadan pada semua akses tatasusunan/vektor
Tidak Boleh Digunakan Selepas Bebas Sistem pemilikan menjamin kesahan memori
Tiada Perlumbaan Data Pencegahan pepijat akses serentak pada masa kompilasi

Mengapa Karat untuk BIT?

🔒 Keselamatan Masa Kompilasi

Rust menangkap keseluruhan kategori pepijat pada masa kompilasi yang akan menyebabkan kegagalan masa jalan dalam C/C++:

  • Kebocoran memori
  • Limpahan penimbal
  • Syarat perlumbaan
  • Penyahrujukan penunjuk nol

⚡ Abstraksi Kos Sifar

Ciri keselamatan peringkat tinggi dikompilasi kepada kod mesin yang cekap tanpa overhed masa jalan , sepadan dengan prestasi C/C++.

🔧 Keserempakan Tanpa Rasa Takut

Model pemilikan membolehkan pelaksanaan ujian berbilang utas yang selamat tanpa perlumbaan data:

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

📦 Pengurusan Kebergantungan Moden

  • Pengurus pakej kargo memastikan binaan yang boleh dihasilkan semula
  • Penyelesaian kebergantungan automatik
  • Rangka kerja ujian terbina dalam

🛡️ Konfigurasi Jenis-Selamat

Penghuraian konfigurasi memanfaatkan sistem jenis Rust untuk mengesan ralat lebih awal:

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

Statistik Keselamatan

Metrik Karat vs C/C++
Pepijat keselamatan memori Dihapuskan pada masa kompilasi
Kelas kerentanan CVE dihalang ~70% daripada kelemahan biasa
Penunjuk null masa jalan ranap Mustahil
Pelanggaran keselamatan thread Ditangkap pada masa kompilasi

Integrasi & Pelaksanaan

Perkhidmatan Sistem

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Pemasangan Pakej Debian

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

Laluan Konfigurasi

Laluan Tujuan
/etc/bit/ Fail konfigurasi ujian (TOML)
/usr/local/lib/bit_manager/ Pustaka kongsi pemalam
/var/log/bit_manager/ Fail log

Pemeriksaan & Pemantauan

Utiliti bit_inspect menyediakan maklumat terperinci tentang ujian yang dimuatkan:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Contoh 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)

Ringkasan

Sistem BIT menyediakan:

Diagnostik perkakasan dan perisian yang komprehensif
Seni bina plugin yang boleh diperluas untuk ujian tersuai
Pelaksanaan selamat memori dalam Rust
Metodologi PBIT/CBIT/FBIT standard industri
Integrasi Linux/sistem natif
Parameter ujian berasaskan konfigurasi
Pemantauan dan pembalakan masa nyata