組み込みテスト(BIT)システムの利点
概要
ビルトインテスト(BIT)システムは、Linuxベースの組み込みシステム向けに設計された、包括的でモジュール化された拡張可能なテストフレームワークです。プラグインベースのアーキテクチャを通じてハードウェアとソフトウェアの自動診断を提供し、システムの信頼性、整合性、そして運用準備性を確保します。
主なメリット
🛡️ システムの信頼性の向上
- 障害が業務に影響を与える前に、事前に障害を検出します
- 重要なシステムリソースの継続的な監視
- 潜在的なハードウェア劣化に対する早期警告システム
⚡ ダウンタイムの短縮
- 自動診断により手動テストのオーバーヘッドが排除されます
- スケジュールされたテスト実行はバックグラウンドで実行されます
- 即時の障害通知により迅速な対応が可能
📊 包括的なカバレッジ
- ハードウェア検証(PCI、USB、GPIO、シリアル、CAN、イーサネット)
- システムリソースの監視(CPU、メモリ、ディスク)
- データパス検証(TCP、CANバス、シリアルポート)
🔌 プラグアンドプレイアーキテクチャ
- 実行時にプラグインを動的に読み込む
- 構成駆動型テストパラメータ
- 新しいテストを追加するためにコアシステムを変更する必要はありません
📋 Systemd 統合
- ネイティブ Linux サービスとして実行
- 起動時に自動起動
- 標準サービス管理 (
systemctl start/stop/status)
テストの種類と範囲
BIT システムは、業界標準の組み込みテスト方法論に準拠した 3 つの主要なテスト カテゴリを実装します。
パワーオンビット (PBIT)
通常の操作を開始する前にハードウェアの整合性を確認するために、システムの起動時に 1 回実行されるテスト。
連続BIT(CBIT)
通常の操作中に定期的に実行され、実行時の障害やリソースの枯渇を検出するテスト。
ファクトリービット(FBIT)
すべてのシステム インターフェイスを検証するために製造および保守中に使用される包括的なハードウェア テスト。
テスト概要表
電源投入時BIT(PBIT)テスト
| テスト名 | 説明 | 頻度 |
|---|---|---|
pbit_bsp_version | BSP バージョンが期待される構成と一致しているかどうかを検証します | 起動時に |
pbit_can | CANバスインターフェースの可用性を検証 | 起動時に |
pbit_checksum | ファイルのチェックサムの整合性を検証します | 起動時に |
pbit_cpu_cores | 予想されるCPUコア数を検証する | 起動時に |
pbit_cpu_usage | 初期のCPU使用率が制限内であるかどうかをチェックします | 起動時に |
pbit_disk_health | ディスクのSMARTヘルスステータスを検証します | 起動時に |
pbit_disk_usage | 起動時にディスク容量の空き状況を確認します | 起動時に |
pbit_dmesg_check | dmesg をスキャンして重大なエラーを検出します | 起動時に |
pbit_ethernet | イーサネットインターフェースの可用性を検証する | 起動時に |
pbit_file_checksum | 重要なシステムファイルの整合性を検証します | 起動時に |
pbit_firewall_configuration | ファイアウォールルールが正しく設定されていることを検証します | 起動時に |
pbit_gpio | GPIOピンの可用性と状態を検証します | 起動時に |
pbit_gpu_loading | GPUドライバーと初期読み込みをチェックします | 起動時に |
pbit_memory_usage | 起動時に利用可能なメモリを検証します | 起動時に |
pbit_pci_whitelist | 承認されたホワイトリストに対して PCI デバイスを検証します | 起動時に |
pbit_permissions_verification | ファイル/ディレクトリの権限を検証します | 起動時に |
pbit_power_test | 電源の状態と電圧をチェックします | 起動時に |
pbit_selinux_apparmor_status | セキュリティモジュールのステータスを検証する | 起動時に |
pbit_serial_ports | シリアルポートの可用性を検証します | 起動時に |
pbit_ssh_configuration | SSHセキュリティ構成を検証する | 起動時に |
pbit_syslog_analysis | 重大な起動エラーを syslog でスキャンします | 起動時に |
pbit_temperature | 初期の熱測定値をチェックする | 起動時に |
pbit_usb_whitelist | 承認されたホワイトリストに基づいてUSBデバイスを検証します | 起動時に |
連続BIT(CBIT)テスト
| テスト名 | 説明 | 頻度 |
|---|---|---|
cbit_bsp_version | BSPバージョンの一貫性を監視する | 設定可能 |
cbit_can | CANバスの健全性とエラーカウンタを監視します | 設定可能 |
cbit_checksum | 定期的なファイル整合性検証 | 設定可能 |
cbit_cpu_cores | CPUコアの可用性を監視する | 設定可能 |
cbit_cpu_usage | ローリングウィンドウのCPU使用率を監視します | 1秒ごと |
cbit_disk_health | ディスクのSMART属性を監視する | 設定可能 |
cbit_disk_usage | ディスク使用量をしきい値に対して監視します | 30秒ごと |
cbit_dmesg | カーネルメッセージバッファを監視する | 設定可能 |
cbit_dmesg_check | 継続的なdmesgエラー検出 | 設定可能 |
cbit_ethernet | イーサネットリンクのステータスとエラーを監視します | 設定可能 |
cbit_ethernet_status | イーサネット接続状態を監視する | 設定可能 |
cbit_firewall_configuration | ファイアウォールルールの整合性を監視する | 設定可能 |
cbit_gpio | GPIOの状態変化を監視する | 設定可能 |
cbit_gpu_loading | GPUの使用率を監視する | 設定可能 |
cbit_memory_usage | メモリ消費パターンを追跡する | 設定可能 |
cbit_pci_whitelist | PCIデバイスの変更を監視する | 設定可能 |
cbit_permissions | ファイルの権限変更を監視する | 設定可能 |
cbit_permissions_verification | 継続的な権限検証 | 設定可能 |
cbit_power_consumption | 電力消費と効率を監視する | 設定可能 |
cbit_selinux_apparmor_status | セキュリティモジュールの状態を監視する | 設定可能 |
cbit_serial_ports | シリアルポートの可用性を監視する | 設定可能 |
cbit_ssh_configuration | SSH設定の変更を監視する | 設定可能 |
cbit_syslog_analysis | 継続的なSyslogエラー監視 | 設定可能 |
cbit_temperature | 熱の測定値と傾向を監視する | 設定可能 |
cbit_usb_whitelist | USBデバイスの変更を監視する | 設定可能 |
工場BIT(FBIT)テスト
| テスト名 | 説明 | 頻度 |
|---|---|---|
fbit_can_data | CANバスの送受信機能をテストします | 設定可能 |
fbit_gpio_data | GPIO 入出力機能を検証します | 設定可能 |
fbit_pci | PCIデバイスの列挙と検証 | 設定可能 |
fbit_serial_data | シリアルポートのループバック通信を検証します | 設定可能 |
fbit_ssd | SSD の読み取り/書き込みパフォーマンスの検証 | 設定可能 |
fbit_system_data | システム情報収集 | 設定可能 |
fbit_tcp_data | iPerf を使用してイーサネット データ パスをテストします | 設定可能 |
fbit_usb | USBデバイスの読み取り/書き込み検証 | 設定可能 |
fbit_video | ビデオ出力の検証 | 設定可能 |
合計: ハードウェア検証、システム監視、セキュリティ検証をカバーする 57 個の組み込みテスト。
プラグインアーキテクチャ
BIT システムは、コア システム コードを変更することなくシームレスな拡張性を実現する強力なプラグイン アーキテクチャに基づいて構築されています。
仕組み
BIT システムはメッセージング ミドルウェアとしてZenohを使用し、監視クライアントへのリアルタイムのテスト結果配信と、プロトコル ブリッジングによる GVA (Generic Vehicle Architecture) システムとのシームレスな統合を可能にします。
メッセージフローアーキテクチャ
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
詳細なメッセージシーケンス
プロトコルブリッジの詳細
| 成分 | プロトコルイン | プロトコルアウト | 目的 |
|---|---|---|---|
| BITマネージャー | 内部 | ゼノー | テスト結果を公開する |
| ビットGUI | ゼノー | — | リアルタイムの結果を表示 |
| ビット CLI | ゼノー | — | コマンドライン監視 |
| BITゲートウェイ | ゼノー | DDS(GVA) | 車両システムへの橋渡し |
| GVA HUMS | DDS | — | ヘルス&使用状況の監視 |
プラグインの機能
| 特徴 | 説明 |
|---|---|
| 動的読み込み | プラグインは実行時に共有ライブラリ( .so )としてロードされます。 |
| 特性ベースのインターフェース | すべてのプラグインに対して一貫したTestRunとTestDetails特性 |
| 設定ファイル | テストごとのTOMLベースの構成( /etc/bit/*.toml ) |
| バージョン追跡 | 各プラグインはバージョンとビルドタイムスタンプを報告します |
| コールバックのログ記録 | すべてのテストにわたる統合ログインフラストラクチャ |
| ランカウンター | 合格/不合格統計の自動追跡 |
新しいプラグインの作成
カスタム BIT プラグインの作成は簡単です。
-
TestRun特性を実装します。
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- プラグインインターフェースをエクスポートします。
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - 構成ファイルを作成します(オプション):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- 共有ライブラリをビルドして
/usr/local/lib/bit_manager/にデプロイします。
Rust言語の安全機能
BIT システムはRustで実装されており、組み込みシステムや安全性が重視されるシステムに不可欠な比類のない安全性保証を提供します。
メモリの安全性
| 特徴 | 利点 |
|---|---|
| ヌルポインタなし | Option型はヌルポインタの参照を防ぐ |
| バッファオーバーフローなし | すべての配列/ベクトルアクセスの境界チェック |
| 使用後解放なし | 所有権システムは記憶の妥当性を保証する |
| データ競合なし | 同時アクセスバグのコンパイル時防止 |
BIT に Rust を使用する理由
🔒 コンパイル時の安全性
Rust は、C/C++ では実行時にエラーを引き起こす可能性のあるバグのカテゴリ全体をコンパイル時に検出します。
- メモリリーク
- バッファオーバーフロー
- 競合状態
- ヌルポインタ参照
⚡ ゼロコスト抽象化
高レベルの安全機能は、実行時のオーバーヘッドなしで効率的なマシン コードにコンパイルされ、C/C++ のパフォーマンスに匹敵します。
🔧 恐れを知らない並行性
所有権モデルにより、データ競合のない安全なマルチスレッド テスト実行が可能になります。
// Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new())); 📦 最新の依存関係管理
- Cargoパッケージ マネージャーは再現可能なビルドを保証します
- 自動化された依存関係解決
- 組み込みテストフレームワーク
🛡️ 型安全な構成
構成解析では、Rust の型システムを活用してエラーを早期に検出します。
let threshold: f32 = config.get("threshold")?; // Type-checked at compile time安全統計
| メトリック | Rust vs C/C++ |
|---|---|
| メモリ安全性のバグ | コンパイル時に削除 |
| CVE脆弱性クラスを阻止 | 一般的な脆弱性の約70% |
| 実行時のヌルポインタのクラッシュ | 不可能 |
| スレッドセーフ違反 | コンパイル時にキャッチ |
統合と展開
Systemd サービス
# Enable automatic startup
sudo systemctl enable bit_manager
# Start the service
sudo systemctl start bit_manager
# Check status
sudo systemctl status bit_managerDebian パッケージのインストール
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.deb構成パス
| パス | 目的 |
|---|---|
/etc/bit/ | テスト構成ファイル(TOML) |
/usr/local/lib/bit_manager/ | プラグイン共有ライブラリ |
/var/log/bit_manager/ | ログファイル |
検査と監視
bit_inspectユーティリティは、ロードされたテストに関する詳細な情報を提供します。
# List all available tests
bit_inspect
# Get detailed information about a specific test
bit_inspect cbit_disk_usage出力例:
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) まとめ
BIT システムは以下を実現します:
✅包括的なハードウェアとソフトウェアの診断
✅カスタムテスト用の拡張可能なプラグインアーキテクチャ
✅ Rust でのメモリ安全な実装
✅業界標準の PBIT/CBIT/FBIT 手法
✅ネイティブ Linux/systemd 統合
✅構成駆動型テストパラメータ
✅リアルタイム監視とログ記録