v1.3.0

v1.3.0 เขียนชั้นการสื่อสารกล้องใหม่ทั้งหมดโดยใช้โปรโตคอลคำสั่ง/การตอบสนองแบบมีโครงสร้าง และเพิ่มการอัปเดตอัตโนมัติภายใน IDE สำหรับทั้งตัว IDE และทรัพยากรที่รวมมาด้วย สร้างบน Qt Creator 4.0.2 และรวม OpenMV camera เฟิร์มแวร์ 2.0.0 ไว้ด้วย บน macOS และ Linux การแฟลชเฟิร์มแวร์ผ่าน DFU ต้องติดตั้ง Python พร้อม libusb และ pyusb ครั้งเดียวก่อน ดูรายละเอียดใน Breaking changes

Highlights

  • ชั้นการสื่อสารที่เขียนใหม่ โค้ด serial/USB-debug ถูกสร้างใหม่บนโปรโตคอลคำสั่ง/การตอบสนองแบบมีโครงสร้าง พร้อมความยาวการตอบสนองแต่ละคำสั่งและการหน่วงเวลารอแบบ start/end เพื่อให้การเชื่อมต่อ การรันสคริปต์ การทำงานของบัฟเฟอร์เฟรม และการทำงานของบูตโหลดเดอร์มีความน่าเชื่อถือมากขึ้น

  • ระบบอัปเดตอัตโนมัติภายใน IDE ขณะนี้ IDE จะตรวจสอบ openmv.io เพื่อหาเวอร์ชันใหม่กว่าและแสดงปุ่ม Download พร้อมทั้งดาวน์โหลดและติดตั้งแพ็กเกจทรัพยากรที่อัปเดตแล้ว (ตัวอย่าง เฟิร์มแวร์ เอกสาร) จากนั้นแจ้งให้รีสตาร์ท

  • ปุ่มอัปเดตเฟิร์มแวร์คลิกเดียว ขณะนี้เวอร์ชันเฟิร์มแวร์บน status-bar กลายเป็นปุ่มที่คลิกได้ซึ่งเปรียบเทียบกล้องที่เชื่อมต่อกับเฟิร์มแวร์ที่รวมมา และเสนอการอัปเดตคลิกเดียวเมื่อมีเวอร์ชันใหม่กว่า

  • การแฟลชเฟิร์มแวร์ผ่าน DFU บนทุกแพลตฟอร์ม ขณะนี้สามารถแฟลชเฟิร์มแวร์ผ่าน DFU ได้บน Windows, macOS, Linux x86 และ Linux x86_64 และตัวเลือกเฟิร์มแวร์รับไฟล์ .dfu นอกเหนือจาก .bin

  • การ fallback ไป DFU อัตโนมัติ เมื่อไม่สามารถเข้าถึง serial bootloader ระหว่างการอัปเดตเฟิร์มแวร์ ขณะนี้ IDE จะเสนอให้อัปเกรดผ่าน DFU bootloader ของกล้องแทน พร้อมแนะนำให้คุณเพิ่มสาย jumper BOOT/RST

New features

  • ระบบอัปเดตภายใน IDE ตรวจสอบ openmv.io เพื่อหาเวอร์ชัน IDE ใหม่กว่าและแสดงปุ่ม Download ที่เปิด openmv.io/download พร้อมดาวน์โหลด แตกไฟล์ และติดตั้งแพ็กเกจทรัพยากร openmv-ide-resources-X.Y.Z.zip ลงใน IDE โดยตรงก่อนแจ้งให้รีสตาร์ท (8a1f92bb1, 194acd828, b0be97e3e)

  • ปุ่มเวอร์ชันเฟิร์มแวร์ที่คลิกได้ ป้ายเวอร์ชันบน status-bar ถูกเปลี่ยนเป็น QToolButton ที่เชื่อมต่อกับโฟลว์ updateCam() ซึ่งอ่านไฟล์ firmware/firmware.txt ที่รวมมา เปรียบเทียบกับกล้องที่เชื่อมต่อ และเสนอการ Firmware Update พร้อมตัวเลือกลบ internal-filesystem เมื่อมีเวอร์ชันใหม่กว่า (b2ac8defe)

  • รองรับไฟล์ DFU ขณะนี้กล่องโต้ตอบ bootloader/firmware-flash รับไฟล์ .dfu นอกเหนือจาก .bin และบังคับลบ internal-filesystem ทั้งหมดเมื่อแฟลชไฟล์ .dfu ตัวกรองตัวเลือกเฟิร์มแวร์ถูกขยายเป็น Firmware Binary (*.bin *.dfu) และโฟลว์การลบแบบบังคับสำหรับ .dfu ถูกแนะนำใน 4ad2be5f9 พร้อม checkbox ลบที่ถูกเลือกเสมอและสลับอัตโนมัติตามนามสกุลไฟล์ที่เลือกถูกเพิ่มใน b2ac8defe (4ad2be5f9, b2ac8defe)

  • การ fallback ไป DFU อัตโนมัติเมื่อ bootloader ล้มเหลว เมื่อการอัปเดตเฟิร์มแวร์ .bin ไม่สามารถสตาร์ท serial bootloader ได้ IDE จะรายงาน Unable to connect to the bootloader! และเสนอให้อัปเกรดโดยใช้ DFU bootloader ของกล้องแทน พร้อมเตือนว่า DFU จะลบ internal flash file system และแนะนำให้คุณเพิ่มสาย jumper BOOT/RST และเชื่อมต่อใหม่ก่อนรัน DfuSeCommand.exe (Windows) (4ad2be5f9)

  • ตัวอย่าง HoG เพิ่มตัวอย่างการแสดงภาพ Histogram of Oriented Gradients (09-Feature-Detection/hog.py) โดยใช้ img.find_hog() (b03a707f7)

Other changes and improvements

  • แทนที่โค้ด baud-rate/packet แบบเดิมด้วยคลาส OpenMVPluginSerialPortCommand/Result opcode __USBDBG_* และ __BOOTLDR_* และ helper command()/commandResult() แทน write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f)

  • การติดตั้ง Windows serial-port driver ขณะนี้ทำงานแบบ silent/unattended โดยเปลี่ยนสคริปต์ไดรเวอร์ openmv.cmd/pybcdc.cmd เป็น installer แบบ dpinst แทน InfDefaultInstall แบบโต้ตอบ และเพิ่มและแก้ไข Visual C++ Redistributable installer (vcr.cmd รัน vcredist_x86.exe และ vcredist_x64.exe แบบเงียบ) (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd)

Bug fixes

  • แก้ไขปัญหาการแฟลชเฟิร์มแวร์และการสื่อสารที่ขัดข้องภายใน virtual machine และผ่อนคลาย timeout ต่าง ๆ ของคำสั่งและการ polling บัฟเฟอร์เฟรม/tx-buffer เพื่อให้การเชื่อมต่อและการรันมีความน่าเชื่อถือมากขึ้น กล่องโต้ตอบการเขียนโปรแกรมใหม่ระบุว่า "อาจใช้เวลาถึง 5 นาที" และ timeout กระบวนการ DFU ถูกเพิ่มจาก 240 วินาทีเป็น 300 วินาทีใน 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f)

  • แก้ไขการเปรียบเทียบว่ามีเฟิร์มแวร์/IDE เวอร์ชันใหม่กว่าหรือไม่ เพื่อไม่ให้ minor หรือ patch ที่ใหม่กว่าทริกเกอร์ผิดพลาดเมื่อฟิลด์ที่สูงกว่าเท่ากัน และกำหนดให้กล่องโต้ตอบ bootloader ต้องมีไฟล์ที่เลือกที่ถูกต้องก่อนแฟลช (4ad2be5f9)

  • ปิด file handle (รายการบอร์ด ไฟล์เฟิร์มแวร์/เวอร์ชัน) หลังอ่านและแก้ไข padding ของ flash-chunk ของเฟิร์มแวร์ให้ pad ถึง FLASH_WRITE_CHUNK_SIZE เพื่อป้องกัน handle ที่รั่วและ chunk สุดท้ายที่ pad ผิดระหว่างการอัปเดตเฟิร์มแวร์ (4ad2be5f9)

  • แก้ไขเมนู OpenMV Help และ output pane: รายการ About OpenMV Cam ไม่ชนกับ platform About role อีกต่อไป (AboutRoleApplicationSpecificRole) และ output pane ไม่ดักจับ shortcut Alt/Cmd + ตัวเลขอีกต่อไป (a0694eac7)

  • การเปิดลิงก์เว็บ OpenMV ภายนอก (forums, download, support) ขณะนี้รายงานกล่องโต้ตอบข้อผิดพลาด "Failed to open" เมื่อไม่สามารถเปิด URL ได้ แทนที่จะไม่ทำอะไร (b0be97e3e)

Platform and tool support

  • Qt Creator base: 4.0.2.

  • Bundled camera firmware: อัปเดตเป็น 2.0.0 พร้อม firmware.bin/openmv.bin ใหม่ และไฟล์ที่เพิ่มใหม่ firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf สำหรับ OMV2 และ OMV7

  • Windows DFU flashing เพิ่มโดยใช้ ST DfuSeCommand.exe ที่รวมมา แพ็กเกจไดรเวอร์ ST DfuSe USB (DfuSe v3.0.4.0 บน Win7/Win8, v3.0.5.0 บน Win8.1) และ installer ไดรเวอร์ dfuse.cmd (4ad2be5f9)

  • macOS และ Linux DFU flashing ย้ายจากไบนารี dfu-util ที่คอมไพล์ไว้ล่วงหน้าเป็นตัวแฟลช pydfu.py ที่รวมมา โดย IDE แสดงคำสั่งติดตั้ง libusb/pyusb ที่จำเป็น ac248c0ec เพิ่มไบนารี dfu-util/dfu-prefix/dfu-suffix สำหรับ Linux x86_64 ชั่วคราว แต่ 324f243f9 ลบออกทั้งหมดเพื่อเปลี่ยนเป็น pydfu.py ไม่มีไบนารี dfu-util ในรุ่นสุดท้าย static.pro รวมไดเรกทอรีข้อมูล pydfu สำหรับ host ที่ไม่ใช่ Windows ทั้งหมด ขณะที่ Windows ใช้โฟลว์ DfuSe ที่รวมมา (ac248c0ec, 324f243f9, 7837a07da)

  • Linux udev rules อัปเดตให้ใช้การจับคู่ SUBSYSTEM (cam VID 1209/PID abd1 tty และ STM DFU 0483/df11) เพื่อให้ device และ DFU symlink ทำงานบน Linux 32-bit และมีการป้องกัน network request แบบ redirect-following สำหรับ Qt รุ่นเก่ากว่า (194acd828)

Breaking changes

ไบนารี dfu-util แบบ standalone ที่รวมมาสำหรับ macOS และ Linux ถูกลบออกและแทนที่ด้วยตัวแฟลช Python pydfu.py บน macOS และ Linux การแฟลชเฟิร์มแวร์ผ่าน DFU ขณะนี้ต้องติดตั้ง Python พร้อม libusb และ pyusb ครั้งเดียวก่อน (IDE แสดงคำสั่ง MacPorts/HomeBrew/apt-get ที่แน่นอน) Windows ยังคงใช้โฟลว์แบบ DfuSe ที่รวมมา ไม่มีการแตก scripting-API และฐาน Qt Creator 4.0.2 ไม่เปลี่ยนแปลง