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
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
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:
- Laksanakan ciri
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Eksport antara muka pemalam:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Cipta fail konfigurasi (pilihan):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- 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 timeStatistik 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_managerPemasangan Pakej Debian
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debLaluan 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_usageContoh 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