เครื่องมือตรวจสอบความถูกต้องของเฟิร์มแวร์
คู่มือนี้จะให้รายละเอียดเกี่ยวกับเครื่องมือภายในที่ใช้ในการตรวจสอบความถูกต้องของตรรกะการประกอบเฟิร์มแวร์ของแอปพลิเคชัน ELRS Mobile โดยเทียบกับ “Golden” binaries อย่างเป็นทางการ
ความจริงหลัก (Ground Truth) เทียบกับ Configurator Binaries
เมื่อทำการตรวจสอบความถูกต้อง คุณอาจสังเกตเห็นว่าไบนารีที่สร้างโดย ELRS Mobile ตรงกับ ExpressLRS Web Flasher อย่างเป็นทางการอย่างสมบูรณ์แบบ แต่แตกต่างกันเล็กน้อยจากไบนารีที่สร้างโดยใช้ ExpressLRS Configurator (Python) ในเครื่อง
นี่คือพฤติกรรมที่คาดไว้ C++ JSON parser ภายในของ 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/ - การจัดการหน่วยความจำแบบ Zero-Copy: ปรับให้เหมาะสมสำหรับการวิเคราะห์ไฟล์เฟิร์มแวร์ขนาดใหญ่ด้วยความเร็วสูง
วิธีใช้งาน
หัวข้อที่มีชื่อว่า “วิธีใช้งาน”- เตรียมไบนารี: วางไฟล์
.binหรือ.gzที่สร้างขึ้นในfirmware_testing/binaries/ - ตั้งค่าและเรียกใช้:
Terminal window cd firmware_testing/scripts/dart/dart pub getdart run logic_validator.dart
2. Ground Truth Auditor (Python)
หัวข้อที่มีชื่อว่า “2. Ground Truth Auditor (Python)”ที่ตั้ง: firmware_testing/scripts/python/audit_tool.py
Auditor เป็นสคริปต์แบบสแตนด์อโลนที่ไม่มีการพึ่งพาใดๆ ซึ่งมีวัตถุประสงค์เพื่อการต��วจสอบ “Ground Truth” โดยจะแยกวิเคราะห์บล็อกการกำหนดค่าขนาด 2704 ไบต์ที่ต่อท้ายไฟล์ภาพเฟิร์มแวร์ ExpressLRS ทุกไฟล์
วัตถุประสงค์
หัวข้อที่มีชื่อว่า “วัตถุประสงค์”เป็นการตรวจสอบว่าเมตาดาต้าที่แฟลชลงบนอุปกรณ์จริง (Product Name, Lua Name, Hardware Layout, และ Options) ถูกต้องหรือไม่ โดยไม่คำนึงถึงความแตกต่างของโครงสร้างในโค้ดเฟิร์มแวร์พื้นฐาน
วิธีใช้งาน
หัวข้อที่มีชื่อว่า “วิธีใช้งาน”- เรียกใช้โดยตรง:
Terminal window python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]
3. ขั้นตอนการตรวจสอบความถูกต้องแบบ Binary Cross-Validation
หัวข้อที่มีชื่อว่า “3. ขั้นตอนการตรวจสอบความถูกต้องแบบ Binary Cross-Validation”เพื่อให้แน่ใจว่า ELRS Mobile ประกอบเฟิร์มแวร์ได้อย่างถูกต้อง นักพัฒนาควรทำการตรวจสอบ Cross-validation เป็นระยะ โดยเทียบกับ��บนารี “Ground Truth” ที่คอมไพล์บน PC
ส่งออกไบนารีจาก ELRS Mobile
เปิดใช้งาน Expert Mode ใน Settings จากนั้นใช้ปุ่ม DOWNLOAD BINARY ในแท็บ Flasher หลังจากกำหนดค่าเป้าหมายและตัวเลือกของคุณ
สร้าง PC Ground Truth
สร้างเป้าหมายและเวอร์ชัน เดียวกันเป๊ะ พร้อมตัวเลือกที่เหมือนกัน โดยใช้ ExpressLRS Configurator อย่างเป็นทางการบน PC ของคุณ
เรียกใช้การตรวจสอบ
วางไบนารีทั้งสองใน firmware_testing/binaries/ และเรียกใช้สคริปต์ audit_tool.py เพื่อตรวจสอบความเท่าเทียมกันของฮาร์ดแวร์และตัวเลือกที่สมบูรณ์แบบ