Lợi ích của hệ thống kiểm tra tích hợp (BIT)

Tổng quan

Hệ thống Kiểm thử Tích hợp (BIT) là một khung kiểm thử toàn diện, mô-đun và có khả năng mở rộng, được thiết kế cho các hệ thống nhúng dựa trên Linux. Nó cung cấp khả năng chẩn đoán phần cứng và phần mềm tự động thông qua kiến trúc dựa trên plugin, đảm bảo độ tin cậy, tính toàn vẹn và khả năng sẵn sàng hoạt động của hệ thống.


Lợi ích chính

🛡️ Tăng cường độ tin cậy của hệ thống

  • Phát hiện lỗi chủ động trước khi sự cố ảnh hưởng đến hoạt động.
  • Giám sát liên tục các nguồn lực hệ thống quan trọng.
  • Hệ thống cảnh báo sớm về khả năng hư hỏng phần cứng.

⚡ Giảm thiểu thời gian ngừng hoạt động

  • Chẩn đoán tự động giúp loại bỏ chi phí kiểm tra thủ công.
  • Quá trình thực thi kiểm thử theo lịch trình chạy ngầm.
  • Thông báo lỗi tức thì cho phép phản hồi nhanh chóng.

📊 Phạm vi phủ sóng toàn diện

  • Kiểm tra phần cứng (PCI, USB, GPIO, Serial, CAN, Ethernet)
  • Giám sát tài nguyên hệ thống (CPU, Bộ nhớ, Ổ đĩa)
  • Xác minh đường dẫn dữ liệu (TCP, bus CAN, cổng nối tiếp)

🔌 Kiến trúc cắm và chạy

  • Tải plugin động trong thời gian chạy
  • Các tham số kiểm thử dựa trên cấu hình
  • Không cần sửa đổi hệ thống cốt lõi để thêm các bài kiểm tra mới.

📋 Tích hợp Systemd

  • Chạy như một dịch vụ Linux gốc
  • Tự động khởi động khi bật máy.
  • Quản lý dịch vụ tiêu chuẩn ( systemctl start/stop/status )

Các loại kiểm thử và phạm vi kiểm thử

Hệ thống BIT triển khai ba loại kiểm thử chính phù hợp với các phương pháp Kiểm thử Tích hợp (Built-In Test) tiêu chuẩn ngành:

BIT khi khởi động (PBIT)

Các bài kiểm tra được thực hiện một lần khi hệ thống khởi động để xác minh tính toàn vẹn của phần cứng trước khi các hoạt động bình thường bắt đầu.

Giao dịch liên tục (CBIT)

Các bài kiểm tra được chạy định kỳ trong quá trình hoạt động bình thường để phát hiện lỗi trong quá trình vận hành và tình trạng cạn kiệt tài nguyên.

Mã số thuế nhà máy (FBIT)

Các bài kiểm tra phần cứng toàn diện được sử dụng trong quá trình sản xuất và bảo trì để xác thực tất cả các giao diện hệ thống.


Bảng tóm tắt kết quả kiểm tra

Kiểm tra BIT khi khởi động (PBIT)

Tên bài kiểm tra Sự miêu tả Tính thường xuyên
pbit_bsp_version Xác thực phiên bản BSP khớp với cấu hình dự kiến. Khi bắt đầu khởi động
pbit_can Kiểm tra tính khả dụng của giao diện bus CAN. Khi bắt đầu khởi động
pbit_checksum Kiểm tra tính toàn vẹn của mã kiểm tra tệp Khi bắt đầu khởi động
pbit_cpu_cores Xác thực số lượng lõi CPU dự kiến Khi bắt đầu khởi động
pbit_cpu_usage Kiểm tra xem mức sử dụng CPU ban đầu có nằm trong giới hạn cho phép hay không. Khi bắt đầu khởi động
pbit_disk_health Kiểm tra trạng thái sức khỏe SMART của ổ đĩa. Khi bắt đầu khởi động
pbit_disk_usage Kiểm tra dung lượng ổ đĩa khả dụng khi khởi động. Khi bắt đầu khởi động
pbit_dmesg_check Quét dmesg để tìm các lỗi nghiêm trọng Khi bắt đầu khởi động
pbit_ethernet Kiểm tra tính khả dụng của giao diện Ethernet Khi bắt đầu khởi động
pbit_file_checksum Xác minh tính toàn vẹn của các tập tin hệ thống quan trọng Khi bắt đầu khởi động
pbit_firewall_configuration Kiểm tra xem các quy tắc tường lửa đã được cấu hình chính xác chưa. Khi bắt đầu khởi động
pbit_gpio Kiểm tra trạng thái và khả năng hoạt động của chân GPIO. Khi bắt đầu khởi động
pbit_gpu_loading Kiểm tra trình điều khiển GPU và quá trình tải ban đầu. Khi bắt đầu khởi động
pbit_memory_usage Kiểm tra dung lượng bộ nhớ khả dụng khi khởi động Khi bắt đầu khởi động
pbit_pci_whitelist Kiểm tra tính hợp lệ của các thiết bị PCI so với danh sách trắng đã được phê duyệt. Khi bắt đầu khởi động
pbit_permissions_verification Xác thực quyền truy cập tệp/thư mục Khi bắt đầu khởi động
pbit_power_test Kiểm tra trạng thái nguồn điện và điện áp. Khi bắt đầu khởi động
pbit_selinux_apparmor_status Xác thực trạng thái của mô-đun bảo mật Khi bắt đầu khởi động
pbit_serial_ports Kiểm tra tính khả dụng của cổng nối tiếp Khi bắt đầu khởi động
pbit_ssh_configuration Xác thực cấu hình bảo mật SSH Khi bắt đầu khởi động
pbit_syslog_analysis Quét nhật ký hệ thống (syslog) để tìm các lỗi khởi động nghiêm trọng. Khi bắt đầu khởi động
pbit_temperature Kiểm tra các chỉ số nhiệt ban đầu. Khi bắt đầu khởi động
pbit_usb_whitelist Kiểm tra tính hợp lệ của các thiết bị USB so với danh sách trắng đã được phê duyệt. Khi bắt đầu khởi động

Kiểm thử BIT liên tục (CBIT)

Tên bài kiểm tra Sự miêu tả Tính thường xuyên
cbit_bsp_version Giám sát tính nhất quán phiên bản BSP Có thể cấu hình
cbit_can Bộ giám sát trạng thái hoạt động và bộ đếm lỗi của bus CAN Có thể cấu hình
cbit_checksum Kiểm tra tính toàn vẹn tệp định kỳ Có thể cấu hình
cbit_cpu_cores Giám sát tình trạng khả dụng của lõi CPU Có thể cấu hình
cbit_cpu_usage Theo dõi mức độ sử dụng CPU trong khoảng thời gian trượt. Mỗi người 1
cbit_disk_health Giám sát các thuộc tính SMART của ổ đĩa. Có thể cấu hình
cbit_disk_usage Theo dõi mức sử dụng ổ đĩa so với các ngưỡng quy định. Cứ mỗi 30 phút
cbit_dmesg Bộ đệm thông báo giám sát nhân hệ điều hành Có thể cấu hình
cbit_dmesg_check Phát hiện lỗi dmesg liên tục Có thể cấu hình
cbit_ethernet Giám sát trạng thái và lỗi của liên kết Ethernet. Có thể cấu hình
cbit_ethernet_status Giám sát trạng thái kết nối Ethernet Có thể cấu hình
cbit_firewall_configuration Giám sát tính toàn vẹn của quy tắc tường lửa Có thể cấu hình
cbit_gpio Theo dõi sự thay đổi trạng thái GPIO. Có thể cấu hình
cbit_gpu_loading Giám sát mức sử dụng GPU Có thể cấu hình
cbit_memory_usage Theo dõi các mô hình tiêu thụ bộ nhớ. Có thể cấu hình
cbit_pci_whitelist Giám sát các thay đổi thiết bị PCI Có thể cấu hình
cbit_permissions Giám sát các thay đổi về quyền truy cập tệp Có thể cấu hình
cbit_permissions_verification Xác thực quyền liên tục Có thể cấu hình
cbit_power_consumption Giám sát mức tiêu thụ điện năng và hiệu suất. Có thể cấu hình
cbit_selinux_apparmor_status Giám sát trạng thái mô-đun bảo mật Có thể cấu hình
cbit_serial_ports Giám sát tình trạng cổng nối tiếp Có thể cấu hình
cbit_ssh_configuration Giám sát các thay đổi cấu hình SSH Có thể cấu hình
cbit_syslog_analysis Giám sát lỗi syslog liên tục Có thể cấu hình
cbit_temperature Theo dõi các chỉ số nhiệt độ và xu hướng. Có thể cấu hình
cbit_usb_whitelist Màn hình hiển thị các thay đổi của thiết bị USB Có thể cấu hình

Kiểm tra BIT tại nhà máy (FBIT)

Tên bài kiểm tra Sự miêu tả Tính thường xuyên
fbit_can_data Kiểm tra chức năng truyền/nhận dữ liệu của bus CAN. Có thể cấu hình
fbit_gpio_data Kiểm tra chức năng đầu vào/đầu ra GPIO. Có thể cấu hình
fbit_pci Liệt kê và xác minh thiết bị PCI Có thể cấu hình
fbit_serial_data Xác thực giao tiếp vòng lặp cổng nối tiếp Có thể cấu hình
fbit_ssd Xác thực hiệu năng đọc/ghi SSD Có thể cấu hình
fbit_system_data Thu thập thông tin hệ thống Có thể cấu hình
fbit_tcp_data Kiểm tra đường dẫn dữ liệu Ethernet bằng iPerf Có thể cấu hình
fbit_usb Xác minh đọc/ghi thiết bị USB Có thể cấu hình
fbit_video Xác minh đầu ra video Có thể cấu hình

Tổng cộng: 57 bài kiểm tra tích hợp bao gồm xác thực phần cứng, giám sát hệ thống và kiểm chứng bảo mật.


Kiến trúc Plugin

Hệ thống BIT được xây dựng trên kiến trúc plugin mạnh mẽ , cho phép mở rộng liền mạch mà không cần sửa đổi mã hệ thống cốt lõi.

Cách thức hoạt động

Hệ thống BIT sử dụng Zenoh làm phần mềm trung gian nhắn tin, cho phép phân phối kết quả kiểm tra theo thời gian thực đến các máy khách giám sát và tích hợp liền mạch với các hệ thống GVA (Kiến trúc xe chung) thông qua cầu nối giao thức.

Kiến trúc luồng thông báo

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

Trình tự tin nhắn chi tiết

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

Chi tiết cầu nối giao thức

Thành phần Giao thức trong Giao thức đã kết thúc Mục đích
Quản lý BIT Nội bộ Zenoh Công bố kết quả thử nghiệm
Giao diện người dùng đồ họa (GUI) Zenoh Hiển thị kết quả theo thời gian thực
BIT CLI Zenoh Giám sát dòng lệnh
Cổng BIT Zenoh DDS (GVA) Cầu nối đến hệ thống xe cộ
GVA HUMS DDS Giám sát sức khỏe và mức sử dụng

Tính năng của Plugin

Tính năng Sự miêu tả
Tải động Các plugin được tải dưới dạng thư viện chia sẻ ( .so ) trong quá trình chạy.
Giao diện dựa trên đặc điểm Tính nhất quán về thuộc tính TestRunTestDetails cho tất cả các plugin.
Tệp cấu hình Cấu hình dựa trên TOML cho mỗi bài kiểm tra ( /etc/bit/*.toml )
Theo dõi phiên bản Mỗi plugin đều báo cáo phiên bản và dấu thời gian xây dựng.
Ghi nhật ký các lệnh gọi lại Hệ thống ghi nhật ký thống nhất trên tất cả các bài kiểm tra.
Bộ đếm lượt chạy Tự động theo dõi thống kê đạt/không đạt.

Tạo một plugin mới

Việc tạo một plugin BIT tùy chỉnh rất đơn giản:

  1. Triển khai trait TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Xuất giao diện plugin:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Tạo tệp cấu hình (tùy chọn):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Xây dựng và triển khai thư viện dùng chung vào /usr/local/lib/bit_manager/

Các tính năng an toàn của ngôn ngữ Rust

Hệ thống BIT được triển khai bằng ngôn ngữ Rust , cung cấp các đảm bảo an toàn vượt trội, vô cùng quan trọng đối với các hệ thống nhúng và hệ thống an ninh trọng yếu.

An toàn bộ nhớ

Tính năng Lợi ích
Không có con trỏ null Option các kiểu dữ liệu ngăn chặn việc truy cập con trỏ null
Không xảy ra lỗi tràn bộ đệm. Kiểm tra giới hạn khi truy cập mảng/vector.
Không sử dụng sau khi hết hạn miễn phí Hệ thống sở hữu đảm bảo tính hợp lệ của bộ nhớ.
Không xảy ra xung đột dữ liệu Ngăn ngừa lỗi truy cập đồng thời ngay trong quá trình biên dịch

Tại sao nên chọn Rust cho BIT?

🔒 An toàn khi biên dịch

Rust phát hiện toàn bộ các loại lỗi ngay trong quá trình biên dịch, những lỗi mà nếu sử dụng C/C++ sẽ gây ra lỗi khi chạy chương trình:

  • rò rỉ bộ nhớ
  • Lỗi tràn bộ đệm
  • Điều kiện cuộc đua
  • Giải tham chiếu con trỏ null

⚡ Trừu tượng hóa không tốn chi phí

Các tính năng an toàn cấp cao được biên dịch thành mã máy hiệu quả mà không gây ra chi phí vận hành bổ sung , đạt hiệu năng tương đương với C/C++.

🔧 Đồng thời không sợ hãi

Mô hình sở hữu cho phép thực thi kiểm thử đa luồng an toàn mà không xảy ra xung đột dữ liệu:

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

📦 Quản lý phụ thuộc hiện đại

  • Trình quản lý gói Cargo đảm bảo các bản dựng có thể tái tạo.
  • Giải quyết phụ thuộc tự động
  • Khung kiểm thử tích hợp sẵn

🛡️ Cấu hình an toàn kiểu dữ liệu

Việc phân tích cấu hình tận dụng hệ thống kiểu dữ liệu của Rust để phát hiện lỗi sớm:

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

Thống kê an toàn

Số liệu Rust so với C/C++
Lỗi an toàn bộ nhớ Đã bị loại bỏ tại thời điểm biên dịch
Các lớp lỗ hổng CVE bị ngăn chặn ~70% các lỗ hổng bảo mật phổ biến
Lỗi con trỏ null khi chạy Không thể nào
Vi phạm an toàn luồng Lỗi xảy ra trong quá trình biên dịch.

Tích hợp & Triển khai

Dịch vụ Systemd

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Cài đặt gói Debian

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

Đường dẫn cấu hình

Con đường Mục đích
/etc/bit/ Tệp cấu hình kiểm thử (TOML)
/usr/local/lib/bit_manager/ Thư viện dùng chung plugin
/var/log/bit_manager/ Tệp nhật ký

Kiểm tra và giám sát

Tiện ích bit_inspect cung cấp thông tin chi tiết về các bài kiểm tra đã được tải:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Ví dụ về kết quả đầu ra:

 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)

Bản tóm tắt

Hệ thống BIT cung cấp:

Chẩn đoán toàn diện phần cứng và phần mềm
Kiến trúc plugin mở rộng cho các bài kiểm tra tùy chỉnh
Triển khai an toàn bộ nhớ trong Rust
Phương pháp PBIT/CBIT/FBIT tiêu chuẩn ngành
Tích hợp Linux/systemd gốc
Tham số kiểm thử dựa trên cấu hình
Giám sát và ghi nhật ký theo thời gian thực