Инструменты валидации прошивки
В этом руководстве подробно описаны внутренние инструменты, используемые для проверки логики сборки прошивки приложения ELRS Mobile на соответствие официальным «эталонным» бинарным файлам.
Эталонные бинарные файлы против бинарных файлов конфигуратора
При проведении аудитов проверки вы можете заметить, что бинарные файлы, сгенерированные ELRS Mobile, идеально соответствуют официальному ExpressLRS Web Flasher, но немного отличаются от бинарных файлов, созданных с использованием локального ExpressLRS Configurator (Python).
Это ожидаемое поведение. Внутренний C++ JSON парсер ESP32 игнорирует пробелы, что означае��, что оба бинарных файла выполняются на оборудовании идентично, несмотря на то, что они не проходят строгую побайтовую проверку SHA256 из-за различий в минификации.
1. ExpressLRS Logic Validator (Dart)
Заголовок раздела «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/. - Настройка и запуск:
Окно терминала cd firmware_testing/scripts/dart/dart pub getdart run logic_validator.dart
2. Аудитор эталонных данных (Python)
Заголовок раздела «2. Аудитор эталонных данных (Python)»Местоположение: firmware_testing/scripts/python/audit_tool.py
Аудитор — это автономный скрипт без зависимостей, предназначенный для проверки «эталонных данных». Он анализирует блок конфигурации размером 2704 байта, добавленный в конец каждого образа прошивки ExpressLRS.
Назначение
Заголовок раздела «Назначение»Он проверяет, что метаданные, фактически прошитые в устройство (Product Name, Lua Name, Hardware Layout и Options), верны, независимо от любых различий в компоновке базового кода прошивки.
Как использовать
Заголовок раздела «Как использовать»- Запуск напрямую:
Окно терминала python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]
3. Рабочий процесс бинарной перекрестной проверки
Заголовок раздела «3. Рабочий процесс бинарной перекрестной проверки»Чтобы убедиться, что ELRS Mobile правильно собирает прошивку, разработчикам следует периодически проводить аудит перекрестной проверки на соответствие «эталонному» бинарному файлу, скомпилированному на ПК.
Экспорт бинарного файла из ELRS Mobile
Включите Expert Mode в Settings, затем используйте кнопку DOWNLOAD BINARY на вкладке Flasher после настройки вашей цели и опций.
Генерация эталонных данных на ПК
Соберите точно такую же цель и версию с идентичными опциями, используя официальный ExpressLRS Configurator на вашем ПК.
Запуск аудита
Поместите оба бинарных файла в firmware_testing/binaries/ и запустите скрипт audit_tool.py, чтобы проверить идеальное соответствие аппаратного обеспечения и опций.