MicroPython Cross Compiler

Motivácia

Jazyk MicroPython je interpretovaný jazyk. To znamená, že kód je napísaný v textovej podobe a je interpretovaný pomocou interpretéra.

To však môže byť problém, ak sa budeme snažiť naše know-how uchrániť, pretože kód zostane vždy čitateľný vo svojej textovej podobe. Stačí totiž, aby sa niekto dostal na súborový systém mikrokontroléra a potrebné súbory prevzal.

mpy-cross je nástroj na preklad (cross-kompiláciu) Python zdrojových súborov (.py) do MicroPython bytekódu (.mpy). Preložené súbory sú menšie a načítavajú sa rýchlejšie, čo je dôležité pri obmedzených zdrojoch mikrokontroléra.

Inštalácia

Nástroj je potrebné nainštalovať do systému samostatne pomocou niektorého z nasledovných príkazov:

# pomocou príkazu uv
$ uv add mpy-cross --group dev
$ uv sync --group dev

# pomocou pr9kazu pip
$ pip install mpy-cross

Použitie

Základné použitie príkazu je veľmi jednoduché:

$ mpy-cross source.py

Výsledkom bude bytecode súbor source.mpy.

Zoznam parametrov príkazu je nasledovný:

  • -o <file> - Výstupný súbor (predvolene <vstup>.mpy)
  • -march=<arch> - Cieľová architektúra (armv6m, armv7m, xtensa, …)
  • -O<n> - Úroveň optimalizácie (0–3)
  • --version - Verzia nástroja

Výber cieľovej architektúry

Výsledná podoba vytvoreného bytecode súboru sa môže líšiť od architektúry zariadenia, na ktorom bude kód spúšťaný. Architektúru výsledného bytecode súboru je možné nastaviť pomocou voľby -march.

Pre Raspberry Pi Pico 2 W (RP2350, ARM Cortex-M33):

$ mpy-cross -march=armv6m source.py

Zoznam podporovaných architektúr je uvedený v nasledujúcej tabuľke:

Architektúra Opis
x86 32-bit x86
x64 64-bit x86-64
armv6m ARM Cortex-M0/M0+ (napr. RP2040 — Pico 1)
armv7m ARM Cortex-M3
armv7em ARM Cortex-M4/M7
armv7emsp ARM Cortex-M4F (single precision FP)
armv7emdp ARM Cortex-M4/M7 (double precision FP)
xtensa ESP8266
xtensawin ESP32

Optimalizácia

# vypnutie informácii o zdrojovom kóde (menší súbor)
$ mpy-cross -O2 source.py

Odkazy