v3.8.0

v3.8.0은 코어를 MicroPython 1.13으로 업데이트하고, 다수의 헬퍼 라이브러리를 펌웨어에 동결(freeze)하며, Portenta Ethernet(네트워킹 예제 포함)과 lcd 모듈의 HDMI CEC 지원, pyb.CAN 보드 레이트/샘플링 포인트 구성, 그리고 다수의 H7 저전력 및 HAL 수정을 추가합니다. time / utime 모듈이 병합되었고 F4 pyb.DAC DMA가 비활성화되었습니다 — 아래의 호환성에 영향을 주는 변경 사항을 읽어보세요.

주요 내용

  • MicroPython 1.13 — 번들된 MicroPython 코어가 업데이트되었습니다.

  • 동결 라이브러리uasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 등이 이제 펌웨어에 동결됩니다.

  • Portenta Ethernet — 이더넷 지원과 HTTP / SSL / 피어 투 피어 예제.

  • HDMI CEClcd 모듈의 새로운 CEC API (Pure Thermal).

  • pyb.CANbaudrate / sampling_point 키워드로부터 비트 타이밍 설정.

  • 호환성 영향: time / utime 모듈이 병합되었고 F4 pyb.DAC DMA 함수가 비활성화되었습니다 — 호환성에 영향을 주는 변경 사항을 참조하세요.

새로운 기능

  • 동결 매니페스트uasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612, vl53l1x가 이제 OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta의 펌웨어에 동결됩니다.

  • Portenta Ethernethttp_client, http_client_ssl, peer_to_peer 예제와 함께 이더넷을 활성화했습니다.

  • HDMI CEClcd 모듈에 HDMI CEC API를 추가했습니다 (Pure Thermal).

  • pyb.CAN — 생성자 / init()가 이제 baudratesampling_point 키워드로부터 비트 타이밍을 유도합니다(수동 프리스케일러 방식도 여전히 작동함). CAN 예제도 그에 맞게 업데이트되었습니다.

기타 변경 및 개선 사항

  • REPL 배너에 이제 HAL 버전 문자열이 포함됩니다. Audio FFT 예제는 최신 ulab API에 맞게 업데이트되었습니다.

버그 수정

카메라 및 센서:

  • STM32H7 rev Y 디바이스에서 OV2640 센서 클럭과 OV5640 PCLK 주파수 스케일링을 수정했습니다. SCL을 펄싱하여 중재 손실(arbitration-lost) 상태에서 FIR I2C 버스를 복구하고, F7 소프트 리셋 시 AMG8833 초기화를 재시도합니다.

전원 및 타이머:

  • H7 저전력(stop/standby) 진입을 수정했습니다 — rev V의 전압 스케일링, 깨어날 때 오실레이터/PLL 재활성화, DRAM 보존을 동반한 SDRAM 저전력, stop 진입 시 Systick 비활성화, 디버그 빌드에서만 DBGMCU 활성화. H7 HAL 업데이트 이후의 machine.Timer HAL 상태를 수정하고 SD 읽기/쓰기 IRQ 우선순위 변경을 되돌렸습니다.

디스플레이 및 연결:

  • F4 SPI LCD 8/16비트 데이터 크기 구성(잘못된 MCU_SERIES 정의)을 수정하고, WINC1500 SPI 버스 초기화 실패 시 조용히 계속하는 대신 오류를 반환하며, WINC1500 SPI 버스 충돌을 피하기 위해 정적 SPI 핸들을 사용했습니다. MicroPython GC-collect 버그를 수정했습니다.

시스템:

  • unittests.py는 더 이상 테스트가 비활성화되었거나 사용할 수 없을 때 스위트를 실패로 표시하지 않습니다. 손상된 Thermopile-shield camera_lcd 예제를 제거했습니다.

하드웨어 및 보드 지원

  • OpenMV Pure Thermal — 보드가 업데이트 및 이름 변경되었으며(OPENMVPURETHERMALOPENMVPT), HDMI CEC를 지원합니다.

  • OpenMV 2 — OV2640 카메라 드라이버를 활성화했습니다.

  • Arduino Portenta H7 — 이더넷 지원.

호환성에 영향을 주는 API 변경 사항

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

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

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

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

변경 사항은 해당 순서대로 영향도별로 그룹화되어 있습니다. 코드를 포팅하기만 하면 된다면 끝부분의 마이그레이션 체크리스트로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.

time / utime 모듈 병합 (minor)

timeutime 모듈이 병합되었고 OpenMV clock 클래스가 utime으로 이동했습니다. 번들된 모든 예제가 import utime / clock = utime.clock()으로 업데이트되었습니다. clock 클래스를 위해 import time에 의존하던 스크립트는 대신 utime을 임포트해야 합니다.

커밋: 20587f308

F4 pyb.DAC DMA 함수 비활성화 (minor)

F4 기반 보드에서는 F4 힙이 DMA로 접근할 수 없는 CCM에 위치하기 때문에 DMA를 필요로 하는 pyb.DAC 함수가 비활성화되었습니다. DAC DMA 버퍼 쓰기를 사용하던 F4 스크립트는 해당 함수를 피해야 합니다.

커밋: d61f236f2

MicroPython 1.13으로 업데이트 (behavior)

번들된 MicroPython 코어가 1.13으로 업데이트되었습니다. 표준 라이브러리 및 언어 동작은 업스트림 MicroPython 1.13을 따릅니다. 버전별 micropython / 표준 모듈 동작에 의존하는 스크립트를 다시 확인하세요.

커밋: fb0a5e26d

cpufreq의 지원 주파수가 리비전에 따라 달라짐 (behavior)

더 많은 CPU 주파수가 추가되었으며 실리콘 리비전을 인식하도록 변경되었습니다: cpufreq.get_supported_frequencies()는 이제 H7에서 리비전에 따라 다른 목록을 반환합니다(rev X/Y에서 50/100/200/400 MHz, rev V에서 60/120/240/480 MHz). 기존의 고정 목록에서 주파수를 하드코딩했던 스크립트는 런타임에 지원 목록을 조회해야 합니다.

커밋: 825dd0742

마이그레이션 체크리스트

v3.8.0으로 깔끔하게 포팅하려면 일반적으로 다음 작업이 필요합니다:

  1. clock 클래스를 사용하는 곳에서 import timeimport utime으로 변경하세요(time/utime 병합).

  2. F4 보드에서는 pyb.DAC DMA 버퍼 함수 사용을 중단하세요(F4 DAC 변경).

  3. 버전별 MicroPython 동작에 의존하는 스크립트를 1.13에 대해 다시 검증하고(MicroPython 버전 업), 하드코딩하는 대신 런타임에 cpufreq.get_supported_frequencies()를 조회하세요(cpufreq 변경).

다른 모든 스크립트는 변경 없이 실행됩니다.