ファームウェア検証ツール
このガイドでは、ELRS Mobileアプリケーションのファームウェアアセンブリロジックを公式の「ゴールデン」バイナリに対して検証するために使用される内部ツールについて詳しく説明します。
グラウンドトゥルースとコンフィギュレーターバイナリの比較
検証監査を実行する際、ELRS Mobileによって生成されたバイナリが公式のExpressLRS Web Flasherと完全に一致する一方で、ローカルのExpressLRS Configurator (Python)を使用してビルドされたバイナリとはわずかに異なることに気づくかもしれません。
これは予期される動作です。ESP32の内部C++ JSONパーサーは空白を無視するため、両方のバイナリはハードウェア上で同一に実行されますが、ミニファイの違いにより厳密なバイトごとのSHA256比較では一致しません。
1. ExpressLRS Logic Validator (Dart)
Section titled “1. ExpressLRS Logic Validator (Dart)”場所: firmware_testing/scripts/dart/logic_validator.dart
ロジックバリデーターは、高性能なビットレベル比較ツールです。ELRS Mobileの内部パッチ適用およびアセンブリロジックが、公式のExpressLRSロジックを反映していることを検証するように設計されています。
- ビットレベル分析: 異なるバイト内の正確なビットオフセットの不一致箇所を特定します。
- インタラクティブな選択:
firmware_testing/binaries/で見つかったすべてのバイナリをリスト表示します。 - ゼロコピーメモリ管理: 大規模なファームウェアファイルの高速分析に最適化されています。
- バイナリの準備: 生成された
.binまたは.gzファイルをfirmware_testing/binaries/に配置します。 - セットアップと実行:
Terminal window cd firmware_testing/scripts/dart/dart pub getdart run logic_validator.dart
2. Ground Truth Auditor (Python)
Section titled “2. Ground Truth Auditor (Python)”場所: firmware_testing/scripts/python/audit_tool.py
オーディターは、「グラウンドトゥルース」検証を目的としたスタンドアロンの依存関係のないスクリプトです。ExpressLRSファームウェアイメージの最後に付加された2704バイ��の設定ブロックを解析します。
ベースファームウェアコードのレイアウトの違いに関係なく、実際にデバイスに書き込まれたメタデータ(Product Name, Lua Name, Hardware Layout, and Options)が正しいことを検証します。
- 直接実行:
Terminal window python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]
3. バイナリクロス検証ワークフロー
Section titled “3. バイナリクロス検証ワークフロー”ELRS Mobileがファームウェアを正しくアセンブリしていることを確認するために、開発者は定期的にPCでコンパイルされた「グラウンドトゥルース」バイナリに対してクロス検証監査を実行する必要があります。
ELRS Mobileからバイナリをエクスポートする
設定でExpert Modeを有効にし、ターゲットとオプションを設定した後、FlasherタブのDOWNLOAD BINARYボタンを使用します。
PCグラウンドトゥルースを生成する
PCで公式のExpressLRS Configuratorを使用し、全く同じターゲットとバージョンを同一のオプションでビルドします。
監査を実行する
両方のバイナリをfirmware_testing/binaries/に配置し、audit_tool.pyスクリプトを実行して、ハードウェアとオプションが完全に一致していることを確認します。