14.1. การพัฒนาเฟิร์มแวร์

หน้าเหล่านี้สำหรับนักพัฒนาเฟิร์มแวร์ -- ผู้ที่ต้องการเปลี่ยนโค้ด C ที่รันบน OpenMV Cam ไม่ใช่แค่เขียนสคริปต์ MicroPython ครอบคลุมวงจรทั้งหมด: การตั้งค่าโปรแกรมแก้ไข, การติดตั้งชุดเครื่องมือสร้าง, การคอมไพล์เฟิร์มแวร์สำหรับทุกบอร์ดที่รองรับ, การแฟลชบิลด์ลงบนกล้อง และการดีบักบนฮาร์ดแวร์จริงด้วยโพรบ J-Link และการดีบักระดับซอร์สแบบ single-step ใน VS Code

เมื่อสิ้นสุด คุณควรสามารถนำเครื่องใหม่, สร้างเฟิร์มแวร์, ใส่ลงบนกล้อง, ตั้งค่าเบรกพอยต์ในซอร์ส C และ single-step processor ได้

Note

เฟิร์มแวร์ OpenMV เป็น fork ของ MicroPython ที่เพิ่มไลบรารีการมองเห็นของเครื่อง OpenMV, ไดรเวอร์ และพอร์ตบอร์ด ซอร์สอยู่ที่ github.com/openmv/openmv โมดูล Python image / ml / csi ที่คุณใช้ในสคริปต์คือโค้ด C ในที่เก็บนี้

14.1.1. วิธีการทำงานของบิลด์

สองสิ่งที่ควรเข้าใจก่อนที่คุณจะเริ่ม เพราะมันอธิบายคำแนะนำทุกข้อด้านล่าง:

  • บิลด์ขับเคลื่อนโดย SDK. คุณไม่ต้องติดตั้ง ARM compiler, CMake, Python หรือเครื่องมือ ST ด้วยตนเอง ที่เก็บปักหมุดเวอร์ชัน OpenMV SDK ที่แน่ชัด (ไฟล์ SDK_VERSION -- 1.6.0 ณ เวลาที่เขียน) และ make sdk ดาวน์โหลดและแตก SDK นั้นไปยัง ~/openmv-sdk-<version>/ จากนั้นบิลด์จะนำหน้าไดเรกทอรี gcc, llvm, cmake, python และเครื่องมือ ST ของ SDK ไปยัง PATH ซึ่งหมายความว่าทุกคนสร้างด้วย ชุดเครื่องมือเดียวกันทุกประการ และการตั้งค่าโฮสต์มีขนาดเล็ก

  • ไม่มีบิลด์ Windows แบบ native. ชุดเครื่องมือและสคริปต์สร้างมุ่งเป้าไปที่ Linux (x86-64) และ macOS (arm64) เท่านั้น บน Windows คุณสร้างภายใน WSL (Windows Subsystem for Linux) ซึ่งเป็นสภาพแวดล้อม Linux จริง -- ดังนั้นเมื่อติดตั้ง WSL แล้ว ผู้ใช้ Windows ทำตามคำแนะนำ Linux ทุกประการ การสร้างด้วย Docker และ Linux VM ก็เป็นตัวเลือกเช่นกัน

ลำดับระดับสูงบนระบบที่รองรับใดก็ตามมักจะเป็น:

  1. ติดตั้งโปรแกรมแก้ไข (VS Code)

  2. รับ shell แบบ Linux (Linux แบบ native, macOS หรือ WSL บน Windows)

  3. Clone ที่เก็บและ submodule ของมัน

  4. make sdk -- ติดตั้งชุดเครื่องมือครั้งเดียว

  5. make -C lib/micropython/mpy-cross -- สร้าง bytecode compiler

  6. make TARGET=<board> -- สร้างเฟิร์มแวร์

  7. แฟลชมัน (OpenMV IDE หรือ dfu-util)

  8. เลือกแนบ J-Link และดีบักมัน

หน้าต่าง ๆ ด้านล่างอธิบายแต่ละขั้นตอนตามลำดับ