固件验证工具
本指南详细介绍了用于根据官方“黄金”二进制文件验证 ELRS Mobile 应用程序固件组装逻辑的内部工具。
Ground Truth 与 Configurator 二进制文件
在运行验证审计时,您可能会注意到 ELRS Mobile 生成的二进制文件与官方 ExpressLRS Web Flasher 完美匹配,但与使用本地 ExpressLRS Configurator (Python) 构建的二进制文件略有不同。
这是预期行为。ESP32 的内部 C++ JSON parser 会忽略空格,这意味着尽管由于缩小差异导致严格的逐字节 SHA256 比较失败,但这两个二进制文件在硬件上执行时是相同的。
1. ExpressLRS Logic Validator (Dart)
Section titled “1. ExpressLRS Logic Validator (Dart)”位置: firmware_testing/scripts/dart/logic_validator.dart
Logic Validator 是一个高性能的位级比较工具。它旨在验证 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
Auditor 是一个独立的、零依赖的脚本,旨在用于“Ground Truth”验证。它解析附加到每个 ExpressLRS 固件镜像末尾的 2704 字节配置块。
它验证实际烧录到设备的元数据(Product Name、Lua Name、Hardware Layout 和 Options)是否正确,无论基础固件代码中存在任何布局差异。
- 直接运行:
Terminal window python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]
3. 二进制文件交叉验证工作流
Section titled “3. 二进制文件交叉验证工作流”为确保 ELRS Mobile 正确组装固件,开发人员应定期对在 PC 上编译的“Ground Truth”二进制文件进行交叉验证审计。
从 ELRS Mobile 导出二进制文件
在“设置”中启用 专家模式,然后在“刷写器”选项卡中配置目标和选项后使用 下载二进制文件 按钮。
生成 PC Ground Truth
在您的 PC 上使用官方 ExpressLRS Configurator 构建 完全相同 的目标和版本,并使用相同的选项。
运行审计
将两个二进制文件放入 `firmware_testing/binaries/` 中,并运行 `audit_tool.py` 脚本以验证硬件和选项的完美一致性。