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 และแนะนำให้คุณเพิ่มสาย jumperBOOT/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/Resultopcode__USBDBG_*และ__BOOTLDR_*และ helpercommand()/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 อีกต่อไป (AboutRole→ApplicationSpecificRole) และ output pane ไม่ดักจับ shortcutAlt/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 และ OMV7Windows 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 ไม่เปลี่ยนแปลง