13.5. Herramientas de MicroPython¶
El proyecto MicroPython incluye una cadena de herramientas para el equipo anfitrión junto al propio lenguaje. Dos de esas herramientas son útiles para cualquier flujo de trabajo con la cámara OpenMV que se ejecute fuera del IDE; ambas se instalan desde PyPI con un solo comando y ambas funcionan sobre la misma interfaz de serie USB y sistema de archivos que la cámara ya expone.
13.5.1. mpremote¶
mpremote es una alternativa de línea de comandos al OpenMV IDE. Un solo comando cubre lo que el IDE hace a través de su explorador de archivos, su terminal y su botón de ejecutar script: conectarse a una cámara por serie USB, controlar el REPL, copiar archivos hacia y desde el sistema de archivos de la cámara, ejecutar en el anfitrión un script contra la cámara sin subirlo e instalar paquetes de terceros con 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
Esta es la herramienta adecuada para bancos de pruebas automatizados, despliegues sin interfaz gráfica, scripts de CI que graban una imagen nueva y ejecutan una prueba de humo, y cualquier flujo de trabajo en el que ejecutar una interfaz gráfica sea excesivo. La referencia de mpremote documenta todos los comandos y opciones.
13.5.2. mpy-cross¶
mpy-cross es el compilador cruzado que convierte un archivo de código fuente .py en un contenedor binario .mpy listo para importar en la cámara. Compilar de antemano evita que la cámara tenga que analizar el código fuente durante la importación, reduce el espacio que ocupa en disco y es la única vía para las funciones decoradas con @native y @viper que necesitan una compilación adaptada a la arquitectura del MCU de la cámara:
$ pip install --user mpy-cross
$ mpy-cross foo.py
$ mpremote cp foo.mpy :
Para los módulos congelados incorporados en la imagen del firmware y para las particiones ROMFS que se distribuyen junto a ella, la misma herramienta se ejecuta automáticamente como parte de la compilación del firmware: el sistema de compilación invoca mpy-cross sobre cada .py dentro de scripts/ en su camino hacia la generación del .bin. La invocación directa es a lo que recurre una aplicación cuando quiere distribuir un .mpy por separado del firmware, o controlar el compilador desde un script de compilación.
La sección de mpy-cross de la referencia de archivos .mpy cubre las opciones de línea de comandos, los niveles de optimización, la matriz -march y los puntos de entrada del módulo de Python.