ข้ามไปยังเนื้อหา

เครื่องมือตรวจสอบความถูกต้องของเฟิร์มแวร์

คู่มือนี้จะให้รายละเอียดเกี่ยวกับเครื่องมือภายในที่ใช้ในการตรวจสอบความถูกต้องของตรรกะการประกอบเฟิร์มแวร์ของแอปพลิเคชัน ELRS Mobile โดยเทียบกับ “Golden” binaries อย่างเป็นทางการ

ความจริงหลัก (Ground Truth) เทียบกับ Configurator Binaries

เมื่อทำการตรวจสอบความถูกต้อง คุณอาจสังเกตเห็นว่าไบนารีที่สร้างโดย ELRS Mobile ตรงกับ ExpressLRS Web Flasher อย่างเป็นทางการอย่างสมบูรณ์แบบ แต่แตกต่างกันเล็กน้อยจากไบนารีที่สร้างโดยใช้ ExpressLRS Configurator (Python) ในเครื่อง

นี่คือพฤติกรรมที่คาดไว้ C++ JSON parser ภายในของ ESP32 จะไม่สนใจช่องว่าง ซึ่งหมายความว่าไบนารีทั้งสองจะทำงานเหมือนกันบนฮาร์ดแวร์ แม้ว่าจะไม่ผ่านการเปรียบเทียบ SHA256 แบบไบต์ต่อไบต์อย่างเคร่งครัด เนื่องจากความแตกต่างในการย่อขนาด


ที่ตั้ง: firmware_testing/scripts/dart/logic_validator.dart

Logic Validator เป็นเครื่องมือเปรียบเทียบระดับบิตประสิทธิภาพสูง ออกแบบมาเพื่อตรวจสอบว่าตรรกะการแพตช์และการประกอบภายในของ ELRS Mobile สะท้อนถึงตรรกะ ExpressLRS อย่างเป็นทางการ

  • การวิเคราะห์ระดับบิต: ระบุตำแหน่งบิตที่ผิดพลาดภายในไบต์ที่ไม่ตรงกันได้อย่างแม่นยำ
  • การเลือกแบบโต้ตอบ: แสดงรายการไบนารีทั้งหมดที่พบใน firmware_testing/binaries/
  • การจัดการหน่วยความจำแบบ Zero-Copy: ปรับให้เหมาะสมสำหรับการวิเคราะห์ไฟล์เฟิร์มแวร์ขนาดใหญ่ด้วยความเร็วสูง
  1. เตรียมไบนารี: วางไฟล์ .bin หรือ .gz ที่สร้างขึ้นใน firmware_testing/binaries/
  2. ตั้งค่าและเรียกใช้:
    Terminal window
    cd firmware_testing/scripts/dart/
    dart pub get
    dart run logic_validator.dart

ที่ตั้ง: firmware_testing/scripts/python/audit_tool.py

Auditor เป็นสคริปต์แบบสแตนด์อโลนที่ไม่มีการพึ่งพาใดๆ ซึ่งมีวัตถุประสงค์เพื่อการต��วจสอบ “Ground Truth” โดยจะแยกวิเคราะห์บล็อกการกำหนดค่าขนาด 2704 ไบต์ที่ต่อท้ายไฟล์ภาพเฟิร์มแวร์ ExpressLRS ทุกไฟล์

เป็นการตรวจสอบว่าเมตาดาต้าที่แฟลชลงบนอุปกรณ์จริง (Product Name, Lua Name, Hardware Layout, และ Options) ถูกต้องหรือไม่ โดยไม่คำนึงถึงความแตกต่างของโครงสร้างในโค้ดเฟิร์มแวร์พื้นฐาน

  1. เรียกใช้โดยตรง:
    Terminal window
    python3 firmware_testing/scripts/python/audit_tool.py [file1] [file2]

เพื่อให้แน่ใจว่า ELRS Mobile ประกอบเฟิร์มแวร์ได้อย่างถูกต้อง นักพัฒนาควรทำการตรวจสอบ Cross-validation เป็นระยะ โดยเทียบกับ��บนารี “Ground Truth” ที่คอมไพล์บน PC

1

ส่งออกไบนารีจาก ELRS Mobile

เปิดใช้งาน Expert Mode ใน Settings จากนั้นใช้ปุ่ม DOWNLOAD BINARY ในแท็บ Flasher หลังจากกำหนดค่าเป้าหมายและตัวเลือกของคุณ

2

สร้าง PC Ground Truth

สร้างเป้าหมายและเวอร์ชัน เดียวกันเป๊ะ พร้อมตัวเลือกที่เหมือนกัน โดยใช้ ExpressLRS Configurator อย่างเป็นทางการบน PC ของคุณ

3

เรียกใช้การตรวจสอบ

วางไบนารีทั้งสองใน firmware_testing/binaries/ และเรียกใช้สคริปต์ audit_tool.py เพื่อตรวจสอบความเท่าเทียมกันของฮาร์ดแวร์และตัวเลือกที่สมบูรณ์แบบ