Slovník pojmů

baremetal

Systém bez (plnohodnotného) operačního systému, například systém založený na MCU. Při běhu na baremetal systému funguje MicroPython prakticky jako malý operační systém, který spouští uživatelské programy a poskytuje příkazový interpret (REPL).

buffer protocol

Jakýkoli objekt Pythonu, který lze automaticky převést na bajty, například objekty bytes, bytearray, memoryview a str, jež všechny implementují „buffer protocol“.

board

Obvykle se tím myslí deska plošných spojů (PCB) obsahující mikrokontrolér a podpůrné součástky. Firmware MicroPythonu se obvykle poskytuje pro jednotlivé desky, protože firmware obsahuje jak funkce specifické pro MCU, tak funkce na úrovni desky, jako jsou ovladače nebo názvy pinů.

bytecode

Kompaktní reprezentace programu v Pythonu, která vzniká kompilací zdrojového kódu Pythonu. To je to, co VM ve skutečnosti vykonává. Bytecode se obvykle generuje automaticky za běhu a je pro uživatele neviditelný. Pamatujte, že ačkoli CPython i MicroPython používají bytecode, jeho formát se liší. Zdrojový kód můžete také předkompilovat offline pomocí cross-compiler.

callee-owned tuple

Jde o konstrukci specifickou pro MicroPython, kdy mohou některé vestavěné funkce nebo metody z důvodu efektivity opakovaně používat tentýž podkladový objekt tuple pro vracení dat. Tím se předejde nutnosti alokovat nový tuple při každém volání a snižuje se fragmentace heap. Programy by si neměly uchovávat odkazy na callee-owned tuples, ale pouze z nich extrahovat data (nebo si pořídit kopii).

CircuitPython

Varianta MicroPythonu vyvíjená společností Adafruit Industries.

CPython

CPython je referenční implementace programovacího jazyka Python a ta nejznámější. Je však jednou z mnoha implementací (mezi něž patří Jython, IronPython, PyPy a MicroPython). Ačkoli se implementace MicroPythonu od CPythonu podstatně liší, snaží se zachovat co největší kompatibilitu.

cross-compiler

Známý také jako mpy-cross. Tento nástroj běží na vašem PC a převádí .py file obsahující kód MicroPythonu na .mpy file obsahující bytecode MicroPythonu. To znamená rychlejší načítání (deska nemusí kód kompilovat) a menší obsazení flash paměti (bytecode je úspornější co do místa).

driver

Knihovna MicroPythonu, která implementuje podporu pro konkrétní součástku, například senzor nebo displej.

FFI

Zkratka pro Foreign Function Interface. Mechanismus používaný MicroPython Unix port pro přístup k funkcím operačního systému. Není dostupný na baremetal portech.

filesystem

Většina portů a desek MicroPythonu poskytuje souborový systém uložený ve flash paměti, který je dostupný uživatelskému kódu prostřednictvím standardních API Pythonu pro práci se soubory, jako je open(). Některé desky tento vnitřní souborový systém zpřístupňují hostiteli také přes USB mass storage.

frozen module

Modul Pythonu, který byl zkompilován cross-kompilátorem a zabudován do obrazu firmwaru. Tím se snižují nároky na RAM, protože kód se vykonává přímo z flash paměti.

Garbage Collector

Proces běžící na pozadí v Pythonu (a MicroPythonu), který uvolňuje nepoužívanou paměť v heap.

GPIO

Univerzální vstup/výstup (general-purpose input/output). Nejjednodušší prostředek pro řízení elektrických signálů (běžně označovaných jako „piny“) na mikrokontroléru. GPIO obvykle umožňuje, aby piny byly buď vstupní, nebo výstupní, a aby se nastavovala či zjišťovala jejich digitální hodnota (logická „0“ nebo „1“). MicroPython abstrahuje přístup ke GPIO pomocí tříd machine.Pin a machine.Signal.

GPIO port

Skupina pinů GPIO, obvykle daná hardwarovými vlastnostmi těchto pinů (např. ovladatelných tímtéž registrem).

heap

Oblast RAM, kam MicroPython ukládá dynamická data. Je spravována automaticky prostřednictvím Garbage Collector. Různé MCU a desky mají k dispozici velmi rozdílné množství RAM pro heap, což ovlivní, jak složitý může váš program být.

interned string

Optimalizace používaná MicroPythonem ke zvýšení efektivity práce s řetězci. Internovaný řetězec je odkazován svou (jedinečnou) identitou namísto adresy, a lze jej proto rychle porovnávat pouze podle jeho identifikátoru. Znamená to také, že identické řetězce lze v paměti deduplikovat. Internování řetězců je pro uživatele téměř vždy neviditelné.

MCU

Mikrokontrolér. Mikrokontroléry mají obvykle mnohem méně prostředků než stolní počítač, notebook nebo telefon, ale jsou menší, levnější a vyžadují mnohem méně energie. MicroPython je navržen tak, aby byl dostatečně malý a optimalizovaný, aby běžel na běžném moderním mikrokontroléru.

micropython-lib

MicroPython je (obvykle) distribuován jako jeden spustitelný/binární soubor s pouhými několika vestavěnými moduly. Neexistuje žádná rozsáhlá standardní knihovna srovnatelná s tou v CPython. Místo toho existuje příbuzný, ale samostatný projekt micropython-lib, který poskytuje implementace mnoha modulů ze standardní knihovny CPythonu.

Některé z modulů jsou implementovány v čistém Pythonu a běží na libovolném portu; firmware OpenMV zamrazuje výběr z nich (ovladače senzorů, síťové funkce a pomocné nástroje) přímo do obrazu firmwaru, takže je lze importovat bez instalace čehokoli. Menší počet modulů micropython-lib používá FFI a funguje pouze na MicroPython Unix port; ty na OpenMV Cam nejsou dostupné.

Na rozdíl od standardní knihovny CPython se moduly micropython-lib, které nejsou zamrazené, instalují jednotlivě – buď jejich zkopírováním na souborový systém, nebo, na deskách s podporou sítě, pomocí mip.

MicroPython port

MicroPython podporuje různé desky, RTOSy a OSy a lze jej poměrně snadno přizpůsobit novým systémům. MicroPython s podporou konkrétního systému se nazývá „port“ na tento systém. Různé porty mohou mít značně odlišnou funkcionalitu. Tato dokumentace má být referencí obecných API dostupných napříč různými porty („jádro MicroPythonu“). Pamatujte, že některé porty mohou některá zde popsaná API přesto vynechávat (např. kvůli omezeným prostředkům). Veškeré takové rozdíly i rozšíření specifická pro daný port nad rámec funkcionality jádra MicroPythonu by byly popsány v samostatné dokumentaci specifické pro daný port.

MicroPython Unix port

Unix port je jedním z hlavních portů MicroPythonu. Je určen pro běh na operačních systémech kompatibilních s POSIX, jako jsou Linux, MacOS, FreeBSD, Solaris atd. Slouží také jako základ pro Windows port. Unix port je velmi užitečný pro rychlý vývoj a testování jazyka MicroPython a funkcí nezávislých na hardwaru. Může také fungovat podobně jako spustitelný soubor python v CPython.

mip

Instalátor balíčků pro MicroPython (mip – „mip installs packages“). Instaluje balíčky MicroPythonu buď z micropython-lib, z GitHubu, nebo z libovolných URL. mip lze používat přímo v zařízení na deskách s podporou sítě a interně jej využívají nástroje jako mpremote.

Více informací o používání mip najdete v Správa balíčků.

mpremote

Nástroj pro interakci se zařízením MicroPython. Viz Vzdálené ovládání MicroPythonu: mpremote.

.mpy file

Výstup cross-compiler. Zkompilovaná podoba .py file, která obsahuje bytecode MicroPythonu místo zdrojového kódu Pythonu.

native

Obvykle odkazuje na „nativní kód“, tj. strojový kód pro cílový mikrokontrolér (ARM Thumb na OpenMV Cam založených na Cortex-M). Dekorátor @micropython.native lze aplikovat na funkci MicroPythonu, aby pro tuto funkci generovala nativní kód místo bytecode, což bude pravděpodobně rychlejší, ale spotřebuje více RAM.

port

Obvykle zkratka pro MicroPython port, ale může také odkazovat na GPIO port.

.py file

Soubor obsahující zdrojový kód Pythonu.

pyboard.py

Nyní již nahrazený nástroj na straně hostitele pro interakci s deskou MicroPython — spouštění skriptů a přístup k souborovému systému přes surový REPL. Viz jeho náhrada, mpremote.

REPL

Zkratka pro „Read, Eval, Print, Loop“. Jde o interaktivní příkazovou řádku Pythonu, užitečnou pro ladění nebo testování krátkých úryvků kódu. OpenMV Cam zpřístupňují REPL hostitelskému PC přes USB (sériové zařízení USB CDC).

small integer

MicroPython optimalizuje interní reprezentaci celých čísel tak, aby „malé“ hodnoty nezabíraly místo v heap a aby výpočty s nimi nevyžadovaly alokaci na heapu. Na většině 32bitových portů to odpovídá hodnotám v intervalu -2**30 <= x < 2**30, ale to je třeba považovat za implementační detail a nespoléhat se na to.

stream

Známý také jako „objekt podobný souboru“ (file-like object). Objekt Pythonu, který poskytuje sekvenční přístup pro čtení a zápis k podkladovým datům. Objekt typu stream implementuje odpovídající rozhraní, které se skládá z metod jako read(), write(), readinto(), seek(), flush(), close() atd. Stream je v MicroPythonu důležitý koncept; mnoho I/O objektů implementuje rozhraní stream, a lze je tak konzistentně a zaměnitelně používat v různých kontextech. Více informací o streamech v MicroPythonu najdete v modulu io.

UART

Zkratka pro „Universal Asynchronous Receiver/Transmitter“. Jde o periferii, která posílá data přes dvojici pinů (TX a RX). Mnoho desek nabízí způsob, jak zpřístupnit alespoň jeden z UARTů hostitelskému PC jako sériový port přes USB.

upip

Nyní již zastaralý správce balíčků pro MicroPython, inspirovaný nástrojem pip z CPython, ale mnohem menší a s omezenou funkcionalitou. Viz jeho náhrada, mip.

webrepl

Způsob připojení k REPL (a přenosu souborů) na zařízení přes internet z prohlížeče. Viz https://micropython.org/webrepl