組み込みテスト(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) システムとのシームレスな統合を可能にします。

メッセージフローアーキテクチャ

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

詳細なメッセージシーケンス

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

プロトコルブリッジの詳細

成分プロトコルインプロトコルアウト目的
BITマネージャー内部ゼノーテスト結果を公開する
ビットGUIゼノーリアルタイムの結果を表示
ビット CLIゼノーコマンドライン監視
BITゲートウェイゼノーDDS(GVA)車両システムへの橋渡し
GVA HUMS DDSヘルス&使用状況の監視

プラグインの機能

特徴説明
動的読み込みプラグインは実行時に共有ライブラリ( .so )としてロードされます。
特性ベースのインターフェースすべてのプラグインに対して一貫したTestRunTestDetails特性
設定ファイルテストごとのTOMLベースの構成( /etc/bit/*.toml
バージョン追跡各プラグインはバージョンとビルドタイムスタンプを報告します
コールバックのログ記録すべてのテストにわたる統合ログインフラストラクチャ
ランカウンター合格/不合格統計の自動追跡

新しいプラグインの作成

カスタム BIT プラグインの作成は簡単です。

  1. TestRun特性を実装します。
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. プラグインインターフェースをエクスポートします。
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. 構成ファイルを作成します(オプション):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. 共有ライブラリをビルドして/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_manager

Debian パッケージのインストール

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 統合
構成駆動型テストパラメータ
リアルタイム監視とログ記録