13.5. Strumenti MicroPython¶
Il progetto MicroPython distribuisce una toolchain lato host insieme al linguaggio stesso. Due di questi strumenti sono utili per qualsiasi flusso di lavoro con la OpenMV Cam che avvenga al di fuori dell’IDE; entrambi si installano da PyPI con un singolo comando ed entrambi operano sulla stessa interfaccia USB seriale / filesystem che la cam gia espone.
13.5.1. mpremote¶
mpremote e un’alternativa da riga di comando all’OpenMV IDE. Un solo comando copre cio che l’IDE fa tramite il suo file browser, il terminale e il pulsante di esecuzione dello script: connettersi a una cam tramite USB seriale, pilotare il REPL, copiare file da e verso il filesystem della cam, eseguire uno script lato host contro la cam senza caricarlo e installare pacchetti di terze parti 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
Questo e lo strumento giusto per banchi di test automatizzati, deployment headless, script CI che eseguono il flash di una nuova immagine e lanciano uno smoke test, e qualsiasi flusso di lavoro in cui eseguire una GUI sarebbe eccessivo. Il riferimento di mpremote documenta ogni comando e opzione.
13.5.2. mpy-cross¶
mpy-cross e il compilatore incrociato che trasforma un file sorgente .py in un contenitore binario .mpy pronto per l’importazione sulla cam. La compilazione anticipata evita alla cam di dover analizzare il sorgente all’importazione, riduce l’ingombro su disco ed e l’unica via per le funzioni decorate con @native e @viper, che richiedono una build corrispondente all’architettura dell’MCU della cam:
$ pip install --user mpy-cross
$ mpy-cross foo.py
$ mpremote cp foo.mpy :
Per i moduli congelati incorporati nell’immagine del firmware e per le partizioni ROMFS distribuite insieme ad essa, lo stesso strumento viene eseguito automaticamente come parte della build del firmware: il sistema di build invoca mpy-cross su ogni .py sotto scripts/ durante la produzione del .bin. L’invocazione diretta e cio a cui ricorre un’applicazione quando vuole distribuire un .mpy separatamente dal firmware, oppure pilotare il compilatore da uno script di build.
La sezione mpy-cross del riferimento sui file .mpy descrive i flag da riga di comando, i livelli di ottimizzazione, la matrice -march e i punti di ingresso del modulo Python.