v4.4.0

v4.4.0 là bản phát hành hiện đại hóa lớn, nâng cấp nền tảng OpenMV IDE từ Qt Creator 10.0.1 lên Qt Creator 14.0.2, áp dụng lại toàn bộ plugin OpenMV và mọi tùy chỉnh fork trên nền tảng mới hơn. Ngoài ra, bản phát hành này tích hợp máy chủ ngôn ngữ Python nhúng để hoàn thành mã offline, bật GitHub Copilot trên mọi nền tảng, giới thiệu bootloader DFU tùy chỉnh OpenMV mới và chuyển đổi camera OpenMV sang USB vendor ID 37C5 mới. Thay đổi nền tảng là một hiện đại hóa nội bộ lớn nhưng không ảnh hưởng đến dự án người dùng; xem Các thay đổi không tương thích để biết những thay đổi workflow hiển thị với người dùng.

Điểm nổi bật

  • Nâng cấp nền tảng Qt Creator 14.0.2. IDE chuyển từ Qt Creator 10.0.1 lên 14.0.2, với toàn bộ plugin OpenMV và các tùy chỉnh // OPENMV-DIFF // được áp dụng lại trên nền tảng hiện đại (d6c895be8, 1fa75b397).

  • Máy chủ ngôn ngữ Python nhúng. IDE hiện đi kèm và tự động sử dụng pylsp tích hợp sẵn (với astroid 3.3.5), cung cấp tính năng hoàn thành mã Python/MicroPython offline mà không cần cài pip riêng trên Windows, macOS và Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).

  • GitHub Copilot trên mọi nền tảng. Copilot được tích hợp và bật theo mặc định, với runtime Node.js 20.18.0 tích hợp sẵn cho Windows, macOS và Linux, nên không còn bị giới hạn ở một số máy nhất định, cộng thêm hộp thoại khởi động để bật tính năng này (bb07d582b, 1cb967c5a, b37e48040).

  • Bootloader DFU OpenMV mới. Luồng bootloader openmv_dfu tùy chỉnh được triển khai đầy đủ điều khiển cập nhật firmware từ settings.json, bao gồm hộp thoại "phát hiện board ở chế độ DFU" với các lựa chọn cài phiên bản mới nhất, tải firmware cụ thể và xóa filesystem, cộng thêm đường dẫn fallback-bootloader để khôi phục camera bị hỏng (08b9d0676, 6a6a9351d, 6d78d6571).

  • Hỗ trợ camera mới. Thêm các board OpenMV Cam N6, RT1062 và AE3, đồng thời chuyển đổi camera sang USB vendor ID 37C5 mới với các driver DFU và quy tắc udev được cập nhật (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).

  • Giao tiếp serial đáng tin cậy hơn. Các sửa lỗi giao tiếp serial lớn giải quyết vấn đề văn bản terminal bị nhiễu và ngắt kết nối ngẫu nhiên với camera dùng TinyUSB (caeba6a16, 6cf122a3c).

Tính năng mới

  • Bootloader DFU OpenMV. Hệ thống bootloader openmv_dfu mới với các driver DFU chuyên dụng và cơ chế fallback-bootloader khôi phục camera bị hỏng trên nhiều loại firmware (6a6a9351d, 6d78d6571). Luồng điều khiển cập nhật firmware từ settings.json và hiển thị hộp thoại "phát hiện board ở chế độ DFU" với các tùy chọn cài phiên bản mới nhất, tải firmware cụ thể và xóa filesystem (08b9d0676, ef19133b6, 9c59d113c).

  • Tên board trong bộ chọn cổng. Hộp thoại chọn cổng serial giờ đây thăm dò từng cổng và hiển thị tên board được phát hiện bên cạnh cổng (ví dụ: COM3: OpenMV Cam H7) thay vì chỉ tên cổng (9837d6cb5).

  • Trình soạn thảo dạng tab. Plugin trình soạn thảo dạng tab được khôi phục, thêm một hàng tab tài liệu phía trên vùng soạn thảo để chuyển đổi giữa các file đang mở (c8519c09f), và giờ đây lưu và khôi phục thứ tự tab qua các phiên làm việc (55ccfb207).

  • Tô sáng cú pháp Python. Thêm định nghĩa tô sáng cú pháp Python chuyên dụng cho trình soạn thảo với các quy tắc về định dạng chuỗi, số thực và từ khóa (9be46c0c3).

Các thay đổi và cải tiến khác

  • Tái cấu trúc tải firmware. Mã tải firmware được chia thành các trình xử lý bootloader riêng biệt theo từng loại (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), thêm xử lý touch-to-reset PID cho board Arduino DFU và biến thể board "Legacy" rõ ràng cho các thiết bị VID/PID thay thế (9f465f9f8).

  • Biện pháp bảo vệ ROM-bootloader STM32. IDE giờ đây cảnh báo hoặc chặn việc tải firmware.dfu/openmv.dfu lên ROM recovery bootloader STM32, chỉ khuyến nghị dùng bootloader.dfu để tránh làm hỏng các board STM32H7 bị ảnh hưởng bởi lỗi ROM bootloader của chip (c5ce0ae1a, e7cde1ec1).

  • Cài đặt Python LSP tự động, im lặng. Máy chủ ngôn ngữ Python giờ đây cài đặt và cập nhật tự động mà không có thông báo infobar hay spam console (d89f5985f), và hệ thống tự động hoàn thành/xem tài liệu Python được tái cấu trúc thành engine tài liệu OpenMV chuyên dụng phân tích các tài liệu HTML thư viện tích hợp để tạo tô sáng từ khóa và tooltip (47e02873b, 4f9853f21, 82cefc931).

  • Phát hiện Python interpreter trên Linux. Việc phát hiện interpreter trên Linux giờ đây là tự động, chỉ xem xét các Python 3 interpreter từ PATH và chọn phiên bản mới nhất làm mặc định duy nhất (214fdc758).

  • Dọn dẹp cài đặt Python. Nhóm quản lý per-interpreter và trang Interpreters bị ẩn, Language Server Configuration được đặt trong danh mục Python, và các nút toolbar REPL và chọn interpreter không dùng được ẩn trong trình soạn thảo Python (d89f5985f). Trên Windows, IDE giờ tự động đăng ký python.exe nhúng tích hợp sẵn làm interpreter mặc định, với máy chủ ngôn ngữ tích hợp được coi là đã cài sẵn (1d9ca003e, d89f5985f).

  • Thư mục profile gọn gàng hơn. IDE không còn ghi các file cài đặt Qt Creator không dùng (devices, kits, toolchains, Qt versions) và mở file trực tiếp trong trình soạn thảo (3771b0107), không còn quét hệ thống để tìm phiên bản qmake/Qt (42807f25f), và tránh tải máy móc device/toolchain/kit và nhiễu khởi động không dùng (902a357de, b2666a35b).

  • Cập nhật an toàn hơn. Cập nhật IDE không còn ghi đè tài nguyên người dùng; chỉ các thư mục tài nguyên được quản lý (examples, firmware, html, models) bị xóa và sao chép lại, với micropython-headers cũng bị xóa thêm (được cài riêng thay vì sao chép qua đường dẫn này), và thông báo lỗi rõ ràng hơn nếu firmware/settings.json bị thiếu hoặc không hợp lệ (b4b8c208d, 3255ba4fb).

  • Kết nối DFU nhanh hơn. Thời gian chờ kết nối DFU được rút ngắn để nạp firmware và kết nối nhanh hơn (11d8c9fe3, 4700bf678).

  • Khôi phục menu OpenMV và các tùy chỉnh UI. Bố cục menu OpenMV được áp dụng lại, ẩn các menu Build và Debug, xóa các hành động quản lý dự án (7503f2bec); engine hoàn thành mã lấy lại khả năng nhận biết class/method và phạm vi từ khóa public/private cho autocomplete MicroPython (55fc348ea); hiển thị màu ANSI terminal được áp dụng lại với các giá trị sáng/tối nhận biết theme và hỗ trợ escape cursor-back (c6787a27a); và thanh công cụ image viewer được tùy chỉnh với tooltip độ phân giải/thu phóng và hành động Fit-to-Screen được di chuyển (734fec693).

  • Khôi phục tài nguyên tích hợp. Công cụ nạp, driver DFU, firmware và toàn bộ cây ví dụ/tập lệnh được khôi phục vào tài nguyên chia sẻ sau khi tái cấu trúc rebase (33c8354bc), và logic khởi động ứng dụng tùy chỉnh của OpenMV được áp dụng lại: yêu cầu bắt buộc plugin TextEditor (kiểm tra plugin OpenMV và TabbedEditor có nhưng bị tắt), cài trình xử lý tin nhắn Qt tùy chỉnh, xóa các tùy chọn dòng lệnh -client/-pid/-block, và buộc chạy đơn phiên (06c788f3d).

  • Lỗi plugin thiếu. Ứng dụng giờ báo lỗi rõ ràng nếu các plugin cần thiết bị thiếu hoặc vô hiệu hóa, plugin OpenMV có thêm phụ thuộc Copilot, và một số tùy chọn trình soạn thảo văn bản (Prefer single line comments và bộ chọn vị trí comment trong cài đặt Behavior, và Highlight selection trong cài đặt Display) bị ẩn (1bc02b1f3).

  • Thời gian chờ serial ngắn hơn. Thời gian chờ giao thức serial được rút ngắn (đọc 10000 xuống 5000 ms, ghi 6000 xuống 3000 ms) để phản hồi lỗi nhanh hơn, với giá trị mặc định -override_read_timeout được cập nhật cho khớp (641385af4).

  • Khôi phục cổng bị treo. Các cổng serial bị treo giữa chừng giờ được khôi phục bằng truy vấn GET_STATE (có thể cấu hình qua cài đặt get-state) thay vì truy vấn script-running (a8598f550).

  • Thứ tự hộp thoại cài đặt. Hộp thoại cài đặt ẩn hộp kiểm sắp xếp danh mục theo bảng chữ cái để danh sách trang giữ đúng thứ tự mong muốn của OpenMV (1cb967c5a).

  • Cài đặt Copilot đơn giản hóa. Trang cài đặt Copilot được thu gọn chỉ còn các điều khiển đăng nhập/xác thực và proxy, ẩn các tùy chọn bật Copilot, đường dẫn Node.js, đường dẫn dist và tự động hoàn thành (1cb967c5a).

Sửa lỗi

  • Sửa các vấn đề giao tiếp serial lớn bằng cách tăng thời gian chờ đọc serial lên 10 lần và vô hiệu hóa đường dẫn unstuck dựa trên GET_STATE đang làm nhiễu văn bản terminal serial (caeba6a16).

  • Sửa lỗi ngắt kết nối serial ngẫu nhiên với camera dùng TinyUSB bằng cách phát lệnh mở khóa frame-dump và xử lý lại read-stall thay vì ngắt kết nối (6cf122a3c).

  • Làm cho việc xử lý get_state của camera chấp nhận được các phản hồi ngắn/không đầy đủ và đảm bảo văn bản terminal serial được đệm được xả trong quá trình khôi phục lỗi để không mất output log (c8b4248a6, 247a779dd).

  • Sửa số phân vùng flash/alt-setting của bootloader DFU cho tải firmware OpenMV Cam (a8700d12d).

  • Khôi phục tất cả bootloader bằng cách tôn trọng cờ board hidden mới, chuyển lọc số serial sang bộ lọc ngược, và cấu hình picotool hoạt động cho mục UF2 Arduino Nano RP2040 Connect (63cee629b).

  • Sửa lỗi hộp thoại chọn loại board bootloader ghi nhớ sai giá trị bằng cách dùng các khóa lịch sử riêng biệt cho lựa chọn loại board dạng readable và IMX (a3325af32).

  • Sửa lỗi tính toán timestamp/frame-rate khi chuyển mã video (Save Video) bằng cách tính khoảng thời gian khung hình trung bình theo micro giây, hỗ trợ định dạng thời gian ImageWriter v21 mới và bảo vệ chống pixmap null trong quá trình chuyển đổi (f5c75c749, f8f762b3e).

  • Sửa lỗi crash trong view biểu đồ tần suất/bộ đệm khung hình khi nhận pixmap rỗng (null) bằng cách bảo vệ pixmapUpdate() chống dữ liệu null (622cf5ea8).

  • Khôi phục tooltip chú thích hover trong trình soạn thảo văn bản để di chuột qua các mark văn bản hiện lại tooltip chú thích (1852d18e1).

  • Ngăn các hộp thoại thông tin GitHub Copilot và màu LED xuất hiện khi IDE đang bận kết nối hoặc nạp firmware (f8f762b3e).

  • Thêm bảo vệ crash trong language client để xử lý thay đổi nội dung tài liệu không còn làm crash IDE trong các trường hợp ngoại lệ (7926ffe4c).

  • Sửa lỗi kiểm tra máy chủ ngôn ngữ Python ngăn IDE tắt sạch bằng cách làm plugin Python chờ bất đồng bộ các kiểm tra đang xử lý trước khi thoát (9ff6c7936).

  • Sửa lỗi autocomplete Python trên Linux: language client định gốc tại micropython-headers tích hợp và ẩn hành động popup hoàn thành toolbar trình soạn thảo dư thừa (d37f66a9a, 56e748f9d, 016fa73eb).

  • Sửa xử lý file tạm thời/chưa lưu để Save As sử dụng thư mục ban đầu của hộp thoại file, và hộp thoại Save Items cùng trình soạn thảo Diff không còn hiển thị đường dẫn file tạm thời nội bộ (b7f0bb378, c8e7b6b8f, 6b128c34c).

  • Lưu bộ đệm chưa đặt tên/tạm thời giờ mặc định hộp thoại Save-As thành tên file .py thích hợp thay vì tên trống (3001fdfff).

  • Các tài liệu tạm thời/chưa đặt tên giờ được đề nghị lưu khi được chỉnh sửa, loại trừ khỏi tự động lưu và được chuyển đúng qua Save-As (f87b71cf0).

  • Sửa thứ tự menu Recent Files để mở lại file đã có trong danh sách không sắp xếp lại thứ tự, và hộp thoại file giờ mặc định về thư mục projects (d49c0c993).

  • Sửa lỗi hiển thị văn bản trong message box bằng cách không còn ép định dạng rich-text trên các message box có hộp kiểm, để văn bản thô hiển thị đúng (0c565502f).

  • Sửa màu tooltip để tooltip hiển thị đúng trong theme sáng (35cbf077b).

  • Các sửa lỗi ổn định và dọn dẹp Qt Creator chung trên cài đặt core, language client, MSVC toolchain, project explorer và plugin Python (836b163dc, 134f43cb8).

  • Sửa tên thư mục firmware tích hợp cho Arduino Nano 33 BLE Sense (b1d8ac227) và sửa quy tắc udev Linux cho product ID bootloader DFU AE3, sửa 96E3 thành chữ thường 96e3 để match idProduct phân biệt hoa thường của udev (2cd43c96b). Quy tắc udev Linux cho bootloader DFU AE3 cũng được cập nhật lên product ID 37c5:afe3 cho symlink openmvdfu (b99555637).

Hỗ trợ nền tảng và công cụ

  • Nền tảng Qt Creator: 14.0.2 (nâng cấp từ 10.0.1).

  • OpenMV Cam N6 hiện được hỗ trợ (VID:PID 37C5:1206, DFU bootloader 37C5:9206), bao gồm cài đặt firmware, driver DFU cho Windows và quy tắc udev Linux (000ed8a87, 1b950c8c6).

  • OpenMV Cam RT1062 hiện được hỗ trợ với USB VID/PID tùy chỉnh mới (37C5:1060), bao gồm driver DFU, quy tắc udev và các mục legacy 1209:ABD1 được giữ lại cho các đơn vị cũ hơn (f453bc945, d55d6441f).

  • OpenMV Cam AE3 hiện được hỗ trợ, bao gồm driver DFU cho Windows, cây ảnh firmware/config và USB VID/PID (cập nhật lên 37C5:16E3 runtime / 37C5:96E3 bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).

  • Hệ thống USB VID/PID mới: Camera OpenMV chuyển sang vendor ID 37C5 với các ID bootloader/DFU mới (ví dụ: 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), đổi nhãn các board 1209:ABD1 cũ là Legacy trong khi vẫn hỗ trợ cả firmware cũ và mới (6d78d6571, 6a6a9351d, 500b1a0bf).

  • PAG7936 cảm biến ảnh được thêm vào danh sách cảm biến nhận biết (f9e3f3461).

  • Python 3.13 nhúng được tích hợp cho macOS, Linux x86_64, Linux arm64 và Linux arm (9133b1516), với thư viện chia sẻ libpython3.13ujson gốc (d3aa663d8, a2cb24e74).

  • Máy chủ ngôn ngữ tích hợp: pylsp với astroid 3.3.5 trên Windows, macOS và Linux x86_64 (257addee0). Bản Windows đi kèm CPython nhúng với python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 và distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).

  • Node.js 20.18.0 "Iron" LTS runtime tích hợp cho Windows, macOS, Linux arm64, Linux x64 và Linux armv7 để bật GitHub Copilot trên mọi nền tảng (bb07d582b, 6db78bf45, 1cb967c5a).

  • Alif Security Toolkit các tệp nhị phân boot/system-package đã ký và hướng dẫn người dùng tích hợp cho Windows, macOS và Linux x86_64 để cung cấp camera OpenMV dựa trên Alif (ví dụ: AE3) (f63851be3).

  • Tích hợp Linux desktop được khôi phục, cài đặt mục desktop của ứng dụng, metadata AppStream và đăng ký loại MIME Python (.py) (3fa25f571).

Các thay đổi không tương thích

Không có thay đổi API scripting. Các thay đổi workflow và hành vi hiển thị với người dùng sau đây có thể được nhận thấy:

  • USB vendor ID mới. Camera OpenMV chuyển sang vendor ID 37C5 với các product ID và DFU bootloader ID mới; các board có VID 1209:ABD1 cũ giờ được gán nhãn "Legacy". IDE hỗ trợ cả firmware cũ lẫn mới cùng lúc, nhưng người dùng Linux phải cài lại các quy tắc udev đã cập nhật để nhận biết các ID mới.

  • Các mục board Legacy bị ẩn. Các biến thể Legacy của board OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal giờ bị ẩn khỏi danh sách chọn firmware/board qua cờ board legacy mới (khác với cờ hidden trước đây), do đó người dùng cần mục board legacy cụ thể sẽ không còn thấy trong dropdown (6d78d6571).

  • Thời gian chờ serial ngắn hơn. Thời gian chờ đọc phản hồi mặc định giảm từ 10000 ms xuống 5000 ms và thời gian chờ ghi từ 6000 ms xuống 3000 ms (giá trị mặc định -override_read_timeout giờ được ghi lại là 5000). Các board/kết nối chậm vốn dựa vào thời gian chờ dài hơn có thể hết thời gian chờ sớm hơn.

Việc nâng cấp nền tảng Qt Creator 14.0.2 là một hiện đại hóa nội bộ lớn nhưng không ảnh hưởng đến dự án người dùng.