Zum Inhalt springen

Firmware Validierungstools

Dieser Leitfaden beschreibt die internen Tools, die verwendet werden, um die Firmware-Assemblierungslogik der ELRS Mobile-Anwendung anhand offizieller „Golden“-Binärdateien zu validieren.

Ground Truth vs. Konfigurator-Binärdateien

Bei der Durchführung von Validierungsprüfungen werden Sie möglicherweise feststellen, dass von ELRS Mobile generierte Binärdateien perfekt mit dem offiziellen ExpressLRS Web Flasher übereinstimmen, sich jedoch geringfügig von Binärdateien unterscheiden, die mit dem lokalen ExpressLRS Configurator (Python) erstellt wurden.

Dies ist ein erwartetes Verhalten. Der interne C++ JSON-Parser des ESP32 ignoriert Leerzeichen, was bedeutet, dass beide Binärdateien auf der Hardware identisch ausgeführt werden, obwohl sie einen strengen Byte-für-Byte-SHA256-Vergleich aufgrund von Minifizierungsunterschieden nicht bestehen.


Speicherort: firmware_testing/scripts/dart/logic_validator.dart

Der Logic Validator ist ein leistungsstarkes Bit-Ebenen-Vergleichstool. Es wurde entwickelt, um zu überprüfen, ob die interne Patching- und Assemblierungslogik von ELRS Mobile die offizielle ExpressLRS-Logik widerspiegelt.

  • Bit-Ebenen-Analyse: Identifiziert exakte Bit-Offset-Fehler innerhalb abweichender Bytes.
  • Interaktive Auswahl: Listet alle in firmware_testing/binaries/ gefundenen Binärdateien auf.
  • Zero-Copy Speicherverwaltung: Optimiert für die Hochgeschwindigkeitsanalyse großer Firmware-Dateien.
  1. Binärdateien vorbereiten: Legen Sie die generierten .bin- oder .gz-Dateien in firmware_testing/binaries/ ab.
  2. Einrichten & Ausführen:
    Terminal-Fenster
    cd firmware_testing/scripts/dart/
    dart pub get
    dart run logic_validator.dart

Speicherort: firmware_testing/scripts/python/audit_tool.py

Der Auditor ist ein eigenständiges, abhängigkeitsfreies Skript zur „Ground Truth“-Verifizierung. Es analysiert den 2704 Byte großen Konfigurationsblock, der an jedes ExpressLRS-Firmware-Image angehängt ist.

Es überprüft, ob die tatsächlich auf das Gerät geflashten Metadaten (Product Name, Lua Name, Hardware Layout und Options) korrekt sind, unabhängig von etwaigen Layout-Unterschieden im Basis-Firmware-Code.

  1. Direkt ausführen:
    Terminal-Fenster
    python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]

Um sicherzustellen, dass ELRS Mobile Firmware korrekt zusammenstellt, sollten Entwickler regelmäßig eine Kreuzvalidierungsprüfung anhand einer „Ground Truth“-Binärdatei durchführen, die auf einem PC kompiliert wurde.

1

Binärdatei aus ELRS Mobile exportieren

Aktivieren Sie den Expert Mode in den Einstellungen und verwenden Sie dann die Schaltfläche DOWNLOAD BINARY im Flasher-Tab, nachdem Sie Ihr Ziel und Ihre Optionen konfiguriert haben.

2

PC Ground Truth generieren

Erstellen Sie das genau gleiche Ziel und die gleiche Version mit identischen Optionen mit dem offiziellen ExpressLRS Configurator auf Ihrem PC.

3

Die Prüfung durchführen

Legen Sie beide Binärdateien in firmware_testing/binaries/ ab und führen Sie das Skript audit_tool.py aus, um eine perfekte Hardware- und Optionsparität zu überprüfen.