v4.0.1

v4.0.1은 OpenMV IDE를 오랫동안 사용해 온 Qt Creator 4.0.2 기반에서 Qt Creator 10.0.1로 리베이스하는 전면적인 현대화 작업입니다. 전체 OpenMV 플러그인 스택(프레임 버퍼 뷰어, 시리얼/프로토콜, 터미널, 히스토그램, 임계값 및 키포인트 편집기, 비디오 도구, 펌웨어 플래싱 래퍼)이 새로운 기반 위에 다시 적용되었으며, 세련된 Flat Light/Flat Dark 테마 쌍, OpenMV를 인식하는 Python 구문 강조, 통합 펌웨어 로더 대화상자, 그리고 폭넓은 ARM64 Linux 및 macOS 장치 감지 지원도 함께 추가되었습니다. Qt Creator 기반 변경은 대규모 내부 현대화이지만 사용자 프로젝트를 손상시키지는 않습니다. 다만 일부 기본 동작과 보드 정의는 변경되었습니다(주요 변경 사항 참조).

주요 사항

  • Qt Creator 10.0.1 리베이스. IDE가 Qt Creator 4.0.2에서 10.0.1로 이동합니다. 업스트림 Qt Creator는 빌드 기본 요소만 남기고 정리되었으며(98b95fd3b), 전체 OpenMV 플러그인이 새로운 기반 위에 다시 추가되었습니다(0e8047372).

  • Flat Light 및 Flat Dark 테마. 세련된 라이트/다크 테마 쌍이 일치하는 사용자 지정 편집기 구문 강조 스타일과 함께 제공됩니다. 테마 선택기는 일반 설정에서 이 두 가지로만 제한되어 다시 노출되었으며, 기본 테마는 이제 flat-dark 입니다(21348924b, 13c3849e8).

  • Raw-REPL 시리얼 터미널. 이제 터미널은 적절한 MicroPython raw-REPL(CTRL-A/CTRL-D) 상태 머신을 통해 스크립트를 실행, 중단, 다시 로드, 붙여넣기 하며, 더 큰 스크립트도 안정적으로 처리합니다(a7241079c).

  • OpenMV 인식 Python 편집. OpenMV 모듈, 클래스, 함수, 메서드, 인수가 번들 문서를 기반으로 구문 강조되며, 더 똑똑한 자동 완성과 괄호/콜론을 인식하는 자동 들여쓰기 기능을 제공합니다(801eab8a8, 8e9f967e7, 9fdff9c6d).

  • 통합 펌웨어 로더 대화상자. 이제 플래싱은 진행률 표시줄과 상태를 기억하는 접을 수 있는 세부 정보 표시/숨기기 로그를 갖춘 단일 상황별 대화상자(디스크 지우기 / 펌웨어 플래싱 / 부트로더 플래싱)를 표시합니다(5b51356f8).

  • OpenMV Cam RT1062 지원. 새로운 i.MX RT1060급 보드를 위한 펌웨어, DFU/플래시 로더, SDP/blhost 열거, eFuse 굽기 프로그래밍 단계가 추가되었으며(a6595f5f7), 이후 별도의 Secure Bootloader(SBL) 보드 변형이 부여되었습니다(d2b11c6c8).

새로운 기능

  • 자동화 플래그. -auto_update (release / development / 경로), -auto_erase, -auto_run 플래그를 사용하면 IDE가 연결 시 펌웨어를 부트로드/지우고 열려 있는 스크립트를 실행할 수 있습니다. 부트로더 재연결 후 IDE는 카메라가 다시 열거될 때까지 최대 10초간 기다린 후 계속 진행합니다(b54affe79, f4e03d978).

  • ``-disable_stop`` 플래그stop on connect/disconnect 메뉴 토글을 통해 사용자는 연결 또는 연결 해제 시 스크립트 중단을 비활성화할 수 있습니다(02724ca7d).

  • 연결/연결 해제 시 스크립트 중단 토글(기본값 켜짐)은 연결/연결 해제를 실행 중인 스크립트 중단과 분리합니다. 자동 재연결은 이제 기본값이 꺼짐입니다(a0e78057f).

  • 보드 유형 프롬프트. 연결된 보드가 펌웨어 매핑에 없는 아키텍처를 보고하면, 이제 IDE는 “Unsupported board architecture!” 오류로 중단하는 대신 사용자에게 보드 유형을 선택하도록 요청합니다(마지막 선택을 기억함)(b7165eb3d).

  • OpenMV Python 구문 강조 는 번들 문서에서 채워진 키워드 목록을 사용하여 알려진 OpenMV 모듈, 클래스, 데이터, 함수, 메서드, 인수에 색상을 입힙니다(801eab8a8, b4d481bf5).

  • 약 300개의 KSyntaxHighlighting 언어 정의 가 편집기와 함께 제공되어, 다양한 언어로 작성된 소스 파일이 별도 설정 없이 강조됩니다(39674a4dc).

  • 번들 OpenMV 예제 스크립트 (Hello World, 스냅샷, 비디오 녹화, 옵티컬 플로우, 이벤트 카메라, 글로벌 셔터, FLIR Lepton 등)가 이제 IDE에 커밋되어 함께 제공됩니다(938ac6bbe).

  • 바이너리/16진수 편집기 가 활성화되어 사용자가 바이너리 파일을 열고 검사할 수 있으며, 도구 모음은 OpenMV UI에 맞게 정리되었습니다(675bda966).

  • 메모리 내 문서 비교. 새 파일과 읽기 전용 예제는 이제 백업용 임시 파일을 갖게 되어 저장되지 않은 문서도 비교할 수 있으며, 외부 파일 비교 대화상자는 마지막으로 사용한 폴더를 기억합니다(5281e5f6c, 2934d5216).

  • 탭 편집기 플러그인 이 다시 추가되어 IDE에 탭 문서 표시줄이 생겼습니다. 미니맵 플러그인 소스는 다시 추가되었지만 이 릴리스의 빌드에서는 비활성화된 상태로 남겨졌습니다(0e8047372).

  • DfuSe 및 pydfu 폴백 플래싱 이 일련번호로 대상을 지정할 수 없는 DFU 장치를 위해 복원되었으며, 연결 중 대화상자 없는 자동 지우기 처리도 함께 제공됩니다(e42a5be7d).

  • i.MX RT eFuse 굽기. 이제 펌웨어 프로그래밍이 RT1060급 보드를 위해 eFuse(efuse-program-once)를 굽습니다(8053bb578, a6595f5f7).

  • Linux 루트 설치 마법사 페이지 를 통해 사용자는 권한 상승이 필요한 apt 라이브러리 설치와 udev 규칙 설치를 항상 실행하는 대신 직접 선택하여 켜거나 끌 수 있습니다(6bac80984).

기타 변경 사항 및 개선 사항

  • 백그라운드 시리얼 포트 스캔. 포트 열거가 UI 스레드에서 전용 ScanSerialPortsThread 워커로 옮겨져 스캔 중에도 IDE가 응답성을 유지합니다(7be4dab26).

  • 더 폭넓은 장치 감지. 포트 스캔이 재사용 가능한 filterPorts() 헬퍼로 리팩터링되어 picotool 및 i.MX DFU 장치를 통합하고, 알려진 Arduino 부트로더 시리얼 포트(NRF/RPI의 구버전 및 로더 PID)를 DFU 장치로 재분류합니다(25a5d30fd).

  • 더 많은 터미널 폴백. Linux에서 번들 비디오 재생 도구(비디오 파일 재생 / RTSP 스트림 재생)를 실행할 때, 이제 IDE는 xtermgnome-terminal 외에도 lxterminal, konsole, xfce4-terminal 순으로 폴백합니다(df54007e0).

  • 보드 키 보고. 이제 카메라 등록이 “Remaining N” 응답을 파싱하여 사용자에게 남은 보드 키 수를 알려주며, 별도의 “Invalid Board Key for Board Type” 오류 메시지를 추가합니다(5759e73eb).

  • GitHub 호스팅 다운로드. 버전 확인과 리소스 다운로드가 이제 upload.openmv.io 대신 raw.githubusercontent.com/openmv/openmv-ide-versionopenmv/openmv-ide 릴리스를 사용합니다(994109c28).

  • 모든 곳에서 HTTPS. 모든 OpenMV 웹 요청(버전 확인, SWD ID 등록, 리소스 및 펌웨어 다운로드)이 이제 https:// 를 사용합니다(54347cad0).

  • Linux 설정 자동화. 설치 프로그램이 누락된 라이브러리와 udev 규칙을 감지하고, 필요한 경우 정확한 apt-get/pip 및 udev 규칙 설치 명령이 담긴 실행 가능한 setup.sh (그리고 사용자에게 실행하라고 안내하는 README)를 생성합니다(c6dc705e6).

  • 느린 보드 허용. 시리얼 터미널은 읽기당 대기 시간을 1ms에서 10ms로 높이고, 스크립트가 완료되면 “OK” 확인 응답을 보냅니다(c935e4489).

  • 더 부드러운 플래싱 진행률. 이제 펌웨어 로더 진행률 표시줄이 첫 번째 백분율 틱 이후가 아니라 즉시 불확정 상태에서 0-100%로 전환되며, 이는 dfu-util, bossac, picotool, i.MX 플래싱 전반에 적용됩니다(19d947308, 86d021f92).

  • 구형 부트로더 복구 가 fast 모드의 쿼리 동기화 패딩 없이 지우기/쓰기 명령을 보내는 비-fast 부트로더 모드를 통해 다시 추가되었습니다(c20112c07).

  • 더 깔끔한 도구 콘솔. 펌웨어 플래싱 터미널(bossac, dfu-util, picotool, imx, 비디오 도구)이 이제 독립형 콘솔 프로세스로 실행되어 더 잘 정돈된 명령 출력을 제공합니다(8053bb578).

  • 자동 완성 다듬기. 자동 완성이 별도의 인수 힌트로 클래스, 메서드, 함수를 구분하고, 적절한 코드 모델 아이콘을 사용하며, 밑줄 접두사로 public/protected/private 범위를 인식합니다. 또한 키워드 완성 처리기는 명시적으로(수동으로) 호출된 완성 시 커서 앞의 선행 공백을 건너뜁니다(8e9f967e7, 68b26b5fc).

  • 통합된 대화상자. OpenMV의 임시방편적인 “다시 표시하지 않음” 대화상자들(시작 시의 OpenMV Cam LED Colors 정보 대화상자, 펌웨어 업그레이드 및 예제 프롬프트 포함)이 CheckableMessageBox 기반의 “다시 묻지 않음/표시하지 않음” 대화상자로 통합되었고, 일반 설정에 “다시 묻지 않음/표시하지 않음 대화상자 재설정” 버튼이 추가되었으며, 코드 접기 표시는 기본적으로 비활성화되었습니다(9fdff9c6d).

  • 테마 인식 브랜딩. 다크 모드 스플래시 화면, 정보 상자의 다크/라이트 ST 및 NXP 칩 로고, 다크 모드 툴팁 색상, 그리고 적절한 자동 완성 아이콘 색상이 추가되었습니다(d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).

  • 이미지 뷰어 정리. 공유, 배경, 윤곽선, “기본값으로 설정” 작업이 숨겨지고, 화면 맞춤 작업이 추가되었으며, 애니메이션 이미지 크기 조정이 수정되었습니다(b37c55e25).

  • 컨텍스트 메뉴 정리. “파일 시스템 보기에서 표시”, “터미널 열기”, “파일 속성”, “저장 시 UTF-8 BOM 추가/삭제” 항목이 숨겨졌습니다(5d862c78e).

  • 다크 시리얼 터미널. 독립형 터미널이 스타일이 적용된 스크롤바, 업데이트된 도구 모음 아이콘, 그리고 화면 전반에 걸친 올바른 고DPI 스크롤바 아이콘 다시 로드를 갖춘 적절한 다크 테마를 사용합니다(5c3af6880).

  • 찾기/검색 정리. 결과 패널에 다크 테마가 적용되고, 검색 엔진 선택기가 숨겨지며, 레이블이 간소화되고, 파일에서 찾기는 Documents/OpenMV 폴더를 기본값으로 사용합니다(20a806550).

  • 애플리케이션 정체성. 이제 IDE가 바탕화면, 제목 표시줄, 작업 표시줄에 적절한 OpenMV 아이콘을 표시하며(Windows에서는 고DPI 처리 포함), IDE id가 openmvide 로 변경되었습니다(8ad1eed1f).

  • 고DPI 스플래시 가 Retina/200% 배율 디스플레이에서 2배 스플래시 이미지를 표시합니다(626ff673e).

  • 작업 표시줄 복구. 왼쪽 작업 표시줄(새 파일, 열기, 저장, 실행 취소, 다시 실행, 잘라내기, 복사, 붙여넣기)이 복구되고 사용자 지정 OpenMV 아이콘이 부여되었습니다(b8479b5d0).

  • 정보 대화상자 로고. 이제 Arduino와 Edge Impulse 파트너 로고가 모두 표시되며(Edge Impulse는 이전에 숨겨져 있었음) 고DPI 2배 변형이 포함되고, 번들 스플래시 아트워크가 업데이트되었습니다(splash-small-2 / splash-large-2)(5facd8d9a).

  • 커서 아래 단어 선택 이 활성화되었습니다. 블록 시작/끝으로 이동(Ctrl+[ / Ctrl+]) 및 블록 위/아래 선택 명령이 잠시 다시 활성화되었지만(36ed5b1a8) 릴리스에서는 비활성화된 상태로 남겨졌습니다(626ff673e).

  • Linux 데스크톱 항목 에 Electronics 카테고리, 설명 주석, 검색 키워드(embedded electronics, microcontroller, micropython, computer/machine vision)가 추가되었습니다(470e5702e).

  • 리소스 마이그레이션. 사용자 리소스가 버전이 지정된 위치로 이동되고(이전 qtcreator 폴더는 시작 시 제거됨), Windows에서 무해한 DirectWrite 글꼴 관련 경고가 억제됩니다(a04af5351, 70765dc2a).

  • 숨겨진 내부 옵션. 내부 -color-theme Core 옵션이 도움말 출력에서 숨겨지고, 프레젠테이션 모드가 다시 활성화되었습니다(434c7b4cc).

  • 다시 적용된 핵심 커스터마이징 이 fancy 작업 표시줄/탭 위젯, 메시지 관리자/출력 창, 프록시 작업, 구문 강조기, 텍스트 편집기에 적용되었습니다(0e8047372).

  • QCustomPlot 2.1.1. 번들 플로팅 라이브러리가 Qt 6.4 호환성과 동적으로 변하는 디스플레이 DPI의 올바른 처리를 위해 업데이트되었습니다(8801415fe).

  • 외관 UI 정리 가 스크롤바 화살표 아이콘, 상태 표시줄, 문서 탭 표시줄 닫기 버튼, 편집기 스크롤러 너비에 적용되었습니다. 편집기의 “파일 줄 끝 표시” 표시기는 이제 기본적으로 꺼져 있습니다(e0c4d2325, 6a26f4430, e130988fb).

버그 수정

  • QSerialPortInfo 가 USB 허브의 식별자를 반환하는 문제를 우회하여 실제 장치의 VID/PID를 얻기 위해 /sys/class/tty/<port>/device/uevent 를 읽도록 함으로써 Linux VID/PID 감지를 수정했으며, 그 결과 허브 뒤에 연결된 카메라도 올바르게 감지됩니다(28220b351).

  • 엔드포인트 크기 어설션을 완화하고 쓰기가 정확히 하나의 USB 엔드포인트 크기일 때만 동기화 쿼리 패킷을 추가하도록 하여 Mac 부트로더 펌웨어 플래싱을 수정했습니다(86d021f92).

  • Linux의 비디오 재생 도구를 수정했습니다. 비디오 파일 재생 / RTSP 스트림 재생은 이제 32비트 및 ARM Linux에서 숨겨지고(번들 ffplay 없음), xterm을 사용할 수 없을 때 gnome-terminal로 폴백하며, macOS ffmpeg 바이너리가 자리표시자에서 복원되었습니다(d342649cc, d896f4225).

  • 펌웨어 업데이트 중 지우기 및 쓰기 명령이 겹치는 것을 방지하기 위해 부트로더 재설정 시작/종료 지연을 0에서 5로 늘렸습니다(fabc168b6).

  • 부트로더 복구를 간소화했습니다. 벽돌이 된 카메라를 복구하기 위해 부트로더를 강제로 진입시킬 때 중복 프롬프트를 건너뛰며, DFU 부트로더 재설정 후 IDE가 사용자에게 재연결을 요청하는 대신 자동으로 업데이트를 재시도합니다(12b924088).

  • 시리얼 프레임 버퍼/TX 버퍼 덤프 명령을 트랜잭션 도중에 중단할 수 있도록 허용했습니다(4a4afae1b).

  • 응답에 0바이트를 패딩할 수 있던 시리얼 포트 읽기 정지 포기 우회책을 제거하여 빠른 USB 전송 안정성을 개선했습니다(0ee1d8e91).

  • WiFi 디버깅 및 자동 재연결을 수정했습니다. WiFi 포트는 재발견 시 마지막으로 본 타임스탬프를 갱신하고, WiFi 포트 회수 및 DFU/부트로더 감지에서 여러 erase-after-iterator 버그가 수정되었으며, 자동 재연결은 이제 재연결하기 전에 IDE가 바쁘지 않을 때까지 기다립니다(cf0b67dc6).

  • 비디오를 MJPEG로 변환하는 변환기가 인코더 출력에서 프레임 속도를 파싱하고 올바른 프레임당 밀리초 델타를 기록하도록 수정하여, 변환된 비디오가 올바른 속도로 재생되도록 했습니다(4a7ad2057).

  • QProcess 백엔드를 강제하고 차단 프로세스 이벤트 루프 가드를 수정하여 펌웨어 플래싱 및 번들 명령줄 도구가 실행되지 않던 문제를 수정했습니다(200fe9f3c).

  • 장치 픽셀 비율 변경 시 아이콘 스타일 시트를 다시 로드하도록 하여, HiDPI 디스플레이에서 데이터셋 편집기 트리의 펼치기/접기 분기 아이콘이 올바르게 렌더링되도록 수정했습니다(a0e78057f).

  • 패키지/리소스 업데이트가 이제 설치 후 단순히 종료하는 대신 OpenMV IDE를 자동으로 다시 시작합니다(178ee1b8e).

  • 찾기/검색 결과 강조를 수정하고, 현재 편집기가 없을 때 검색 결과/파일 열기 작업이 첫 번째로 보이는 편집기로 폴백하도록 했습니다(48c402dfc).

  • 플래싱 작업이 완료될 때 펌웨어 로더 대화상자의 경고 텍스트가 지워지고 창 크기가 올바르게 조정되도록 수정했습니다(c505c6ade).

  • 여러 macOS UI 버그를 수정했습니다. 탭 표시줄이 더 이상 아이콘 로드 오류를 쏟아내지 않으며 파일 열기 시 올바르게 표시됩니다(9be8c58de, 5322cf968).

  • macOS와 Linux에서 상태 표시줄 / 출력 창 스타일링 및 기준선 정렬을 수정했습니다(4fc4545de, d29b2baa0, a440d5cd8).

  • 소스 코드 인쇄 시 페이지 제목 머리글이 페이지 가장자리에 닿는 대신 적절한 상단 및 측면 여백을 갖도록 수정했습니다(786d6012c).

플랫폼 및 도구 지원

  • Qt Creator 기반: 10.0.1(4.0.2에서 리베이스됨).

  • OpenMV IDE: 4.0.0 -> 4.0.1.

  • OpenMV Cam RT1062 (i.MX RT1060): 초기 RT1062 펌웨어, 플래시 로더, 서명된 이미지, imx.txt 항목, secure-bootloader/eFuse blhost 구성 키가 OPENMV5 펌웨어 폴더에 추가되었습니다(a6595f5f7). 이후 보드가 단일 OPENMV_RT1060 폴더로 통합되었고, 별도의 Secure Bootloader(SBL) 보드 변형(OpenMV_Cam_RT1062_SBL)이 추가되었습니다(d2b11c6c8, 5baf28c6e).

  • 번들 플래싱 툴체인 (blhost, bossac, dfu-util, dfuse + STM32 드라이버, picotool, sdphost, ffmpeg, FTDI/Arduino 드라이버)이 Windows/macOS/Linux용으로 다시 번들되었으며, Linux 바이너리는 실행 가능으로 표시되었습니다(fbfa4903a, bfb6b32e2, 9551c64da).

  • ARM64 Linux DFU: 번들된 aarch64 dfu-util 과 장치 목록 및 펌웨어 다운로드의 arm64 감지를 통해 Raspberry Pi와 같은 호스트에서 DFU 플래싱이 가능해졌습니다(16bc6fe0f, 470e5702e).

  • i.MX 장치 감지 가 이제 Linux(lsusb 파싱)와 macOS(ioreg 스캔)에서 작동하여, 해당 플랫폼에서 i.MX RT 펌웨어 로딩이 가능해졌습니다(e03ccbe71, 7cf505d09).

  • 플랫폼 게이팅: i.MX 사용은 Windows/macOS/Linux-x86_64로 제한되며 그 외 환경에서는 심각한 오류가 발생합니다. 또한 ARM/ARM64 Linux에서의 Portenta/Nicla 플래싱은 “DFU Util may not be stable on this platform” 경고를 표시합니다(9513f6475).

  • Windows OpenGL: 배포 패키지에 opengl32sw, Qt6OpenGL, Qt6Gui OpenGL 지원을 번들하여 소프트웨어 렌더링이 복원되었습니다(aaaa1928f).

  • Arduino 보드 폴더/id 이름 변경. Portenta, Nicla Vision, Nano 33 BLE Sense 펌웨어 폴더와 boards.txt 보드 id가 ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION, ARDUINO_NANO_33_BLE_SENSE 로 이름이 변경되었습니다(a70d6562a). 이후 Nano 33 BLE Sense 폴더/보드 id는 장치가 보고하는 보드 이름과 일치하도록 arduino_nano_33_ble_sense 로 소문자화되었습니다(22750d8c7, a801a81de).

  • OPENMV_RT1060 부트로더 플래시 로더(blhost_flash_loader.bin, sdphost_flash_loader.bin)가 업데이트되었습니다(5baf28c6e).

  • QCustomPlot: 2.1.1(번들 플로팅 라이브러리)(8801415fe).

  • 디스크상의 펌웨어 이미지 가 지원되는 모든 OpenMV/Arduino 보드(OPENMV1-4P, OPENMV4_PRO, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_PORTENTA_H7, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060, CYW4343, 그리고 WINC1500 WiFi 펌웨어)에 대해 펌웨어와, 해당하는 경우 부트로더/uvc 이미지와 함께 다시 번들되었습니다(fbfa4903a).

주요 변경 사항

다음은 사용자에게 보이는 워크플로 및 동작 변경 사항입니다. Qt Creator 10.0.1 리베이스 자체는 사용자 프로젝트나 스크립트를 손상시키지 않습니다.

  • i.MX RT1060 보드 정의 변경. EVKBMIMXRT1060OPENMV5 항목이 단일 OPENMV_RT1060 보드(OpenMV Cam RT1062 및 SBL 변형)로 대체되었고, 기존 펌웨어 폴더는 제거되었습니다(d2b11c6c8).

  • 기본 명령-응답 타임아웃 이 10000ms입니다(4.0.0에서는 5000ms였음). -override_read_timeout 도움말 텍스트도 이에 맞게 업데이트되었습니다(4a4afae1b).

  • 연결/연결 해제 동작 변경. 자동 재연결이 이제 기본적으로 꺼짐이며, 새로운 “연결/연결 해제 시 스크립트 중단” 토글이 활성화되어 있지 않는 한(기본값은 켜짐) 연결 또는 연결 해제가 더 이상 기본적으로 실행 중인 스크립트를 중단하지 않습니다(a0e78057f).

  • 업데이트 흐름이 IDE를 다시 시작합니다. 패키지/리소스 업데이트가 이제 설치 후 종료하는 대신 OpenMV IDE를 자동으로 다시 시작합니다(178ee1b8e).

  • Arduino 보드 id 이름 변경. Portenta, Nicla Vision, Nano 33 BLE Sense의 boards.txt 보드 id와 펌웨어 폴더가 ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION, ARDUINO_NANO_33_BLE_SENSE 로 이름이 변경되었습니다(마지막 항목은 이후 arduino_nano_33_ble_sense 로 소문자화됨)(a70d6562a, 22750d8c7, a801a81de).