13.5. MicroPython 도구

MicroPython 프로젝트는 언어 자체와 함께 호스트 측 툴체인을 제공합니다. 이 도구들 중 두 가지는 IDE 외부에서 동작하는 모든 OpenMV cam 워크플로에 유용합니다. 둘 다 단일 명령으로 PyPI에서 설치되며, cam이 이미 노출하는 동일한 USB 시리얼 / 파일시스템 인터페이스를 대상으로 동작합니다.

13.5.1. mpremote

mpremote 는 OpenMV IDE의 CLI 대안입니다. 하나의 명령으로 IDE가 파일 브라우저, 터미널, 스크립트 실행 버튼을 통해 수행하는 작업을 모두 처리합니다. 즉 USB 시리얼로 cam에 연결하고, REPL을 조작하고, cam의 파일시스템으로 파일을 복사해 넣거나 빼내고, 업로드 없이 호스트 측 스크립트를 cam에 대해 실행하고, mip 으로 서드파티 패키지를 설치할 수 있습니다:

$ pip install --user mpremote
$ mpremote                          # interactive REPL
$ mpremote cp main.py :             # upload to cam
$ mpremote run local_script.py      # run host script on cam
$ mpremote ls                       # list cam filesystem
$ mpremote mip install aioble       # install package on cam

이 도구는 자동화된 테스트 장비, 헤드리스 배포, 새 이미지를 플래시하고 스모크 테스트를 실행하는 CI 스크립트, 그리고 GUI를 실행하는 것이 과한 모든 워크플로에 적합합니다. mpremote 레퍼런스 에 모든 명령과 옵션이 문서화되어 있습니다.

13.5.2. mpy-cross

mpy-cross.py 소스 파일을 cam에서 import할 준비가 된 .mpy 바이너리 컨테이너로 변환하는 크로스 컴파일러입니다. 미리 컴파일해 두면 cam이 import 시 소스를 파싱하는 부담을 덜고, 디스크상의 크기가 작아지며, cam의 MCU 아키텍처에 맞춘 빌드가 필요한 @native@viper 데코레이터가 적용된 함수에는 이것이 유일한 경로입니다:

$ pip install --user mpy-cross
$ mpy-cross foo.py
$ mpremote cp foo.mpy :

펌웨어 이미지에 내장되는 frozen 모듈과 그와 함께 제공되는 ROMFS 파티션의 경우, 동일한 도구가 펌웨어 빌드의 일부로 자동 실행됩니다. 빌드 시스템은 .bin 을 생성하는 과정에서 scripts/ 아래의 모든 .py 에 대해 mpy-cross를 호출합니다. 직접 호출은 애플리케이션이 펌웨어와 별도로 .mpy 를 배포하거나 빌드 스크립트에서 컴파일러를 구동하려 할 때 사용하는 방식입니다.

.mpy 파일 레퍼런스의 mpy-cross 섹션 에서 명령줄 플래그, 최적화 수준, -march 매트릭스, 그리고 Python 모듈 진입점을 다룹니다.