v4.2.2

v4.2.2는 PNG 이미지 지원(lodepng를 통한 디코딩/인코딩), 테이블 기반 내장 모델 로더, Portenta OV5640 지원, Edge-Impulse TensorFlow 업데이트, ulab 4.0을 추가합니다. RPC CAN 구성 API가 변경되었습니다 — 아래의 호환성 변경 사항을 확인하세요.

주요 사항

  • PNG 지원Image.to_png(), image.PNG, 그리고 PNG 파일 읽기/쓰기.

  • tf.load_builtin_model() — 빌드 시 교체하거나 추가할 수 있는 테이블 기반 내장 모델.

  • Portenta H7 — OV5640 카메라 지원(오토포커스 포함).

  • MicroPython/ulab — ulab이 4.0.0으로 업데이트되었습니다.

  • 호환성 변경: RPC CAN 구성 API가 변경되었습니다 — 호환성 변경 사항을 참조하세요.

새로운 기능

  • PNG 이미지 포맷 — 통합된 lodepng 코덱을 통해 새로운 Image.to_png() 메서드, image.PNG / PIXFORMAT_PNG 상수, PNG 파일 로드/저장(.png 읽기/쓰기), 그리고 image.to() 변환에서의 PNG 출력이 추가되었습니다.

  • tf.load_builtin_model(path) — 펌웨어에 내장된 모델을 로드하여 (labels, net) 튜플을 반환합니다. 내장 모델은 이제 테이블 기반이므로 빌드 시 교체하거나 추가할 수 있습니다.

기타 변경 및 개선 사항

  • TensorFlow / Edge Impulse — 번들된 추론 라이브러리가 Edge Impulse ei-V2.5.0으로 업데이트되었고, person_detection 모델이 내장 모델 테이블로 이동했으며, 더 많은 Edge Impulse 모델이 실행되도록 모든 Cortex-M0+/M4/M7/M55 빌드에 누락되었던 TensorFlow 연산자가 추가되었습니다.

  • ulab이 4.0.0으로 업데이트되었습니다.

  • USB 가상 직렬 포트를 1200 bps로 열면 이제 Arduino 방식의 터치 리셋으로 부트로더에 진입합니다.

  • WINC1500 WiFi 모듈 펌웨어가 (업데이터 스크립트와 함께) 19.7.6으로 업데이트되었으며, 이제 실제 호스트 드라이버 버전을 보고합니다.

  • RP2 포트는 “MPY: soft reboot”를 출력하며 UART init/de-init 기능을 추가했습니다.

버그 수정

  • Arduino Nano RP2040 Connect의 원시 프레임 버퍼 크기와 Arduino Nicla Vision의 USB 제품 ID(올바른 USB 열거)를 수정했습니다.

하드웨어 및 보드 지원

  • Arduino Portenta H7 — OV5640 카메라 지원(오토포커스 포함); Portenta에서는 GC2145가 비활성화됩니다.

  • Arduino Nano RP2040 Connect — 메모리 구성 및 새 파일 시스템 템플릿.

  • WiFi Shield (WINC1500) — 펌웨어가 19.7.6으로 업데이트되었습니다.

호환성 변경 API

v4.2.1과 v4.2.2 사이에서 사용자에게 보이는 API 변경 사항입니다. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.

각 변경 사항에는 영향도가 표시되어 있습니다:

  • minor — 좁은 범위의 API이며, 이를 사용한 스크립트에만 영향을 줍니다.

  • behavior — 동일한 API이지만 다른 결과를 냅니다. 튜닝된 스크립트를 다시 확인하세요.

변경 사항은 그 순서대로 영향도별로 그룹화되어 있습니다. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.

RPC CAN 구성 API (minor)

rpc 라이브러리에서 rpc_can_master / rpc_can_slave의 CAN 키워드 인자 sampling_point가 (업스트림 MicroPython에 맞추기 위해) sample_point로 이름이 변경되었고, 수동 CAN 비트 타이밍 헬퍼가 제거되었습니다 — CAN 버스는 이제 CAN(..., baudrate=, sample_point=)을 통해 구성합니다. sampling_point를 전달했거나 이전 비트 타이밍 계산에 의존하던 스크립트는 업데이트해야 합니다.

커밋: b565eca58, 06d716986

image.format()와 압축 이미지 (behavior)

PNG를 위해 추가된 통합 압축 이미지 경로로 인해 image.format()은 이제 알 수 없는 포맷에 대해 PIXFORMAT_INVALID를 반환하며, 압축 이미지 인덱싱 / 반복 / 출력이 이제 JPEG뿐만 아니라 PNG도 다룹니다. 알 수 없는 포맷에 대한 이전 반환값을 검사하던 코드는 다시 확인해야 합니다.

커밋: f12a4659c

마이그레이션 체크리스트

v4.2.2로 깔끔하게 이식하려면: RPC CAN sampling_pointsample_point로 이름을 바꾸고 모든 수동 CAN 비트 타이밍 설정을 제거하며(RPC CAN 변경 사항), 알 수 없는 포맷에 대해 image.format()을 검사하던 코드를 다시 확인하세요(format() 변경 사항).