Słownik pojęć

baremetal

System bez (pełnoprawnego) systemu operacyjnego, na przykład system oparty na MCU. Działając na systemie baremetal, MicroPython funkcjonuje w praktyce jak mały system operacyjny, uruchamiając programy użytkownika i udostępniając interpreter poleceń (REPL).

protokół bufora

Dowolny obiekt Pythona, który może zostać automatycznie przekonwertowany na bajty, taki jak obiekty bytes, bytearray, memoryview oraz str, które wszystkie implementują „protokół bufora”.

płytka

Zazwyczaj odnosi się to do płytki drukowanej (PCB) zawierającej mikrokontroler oraz komponenty pomocnicze. Oprogramowanie układowe MicroPython jest zazwyczaj dostarczane osobno dla każdej płytki, ponieważ zawiera zarówno funkcje specyficzne dla MCU, jak i funkcje na poziomie płytki, takie jak sterowniki czy nazwy pinów.

kod bajtowy

Zwarta reprezentacja programu Pythona generowana przez kompilację kodu źródłowego Pythona. To właśnie ją faktycznie wykonuje maszyna wirtualna (VM). Kod bajtowy jest zazwyczaj generowany automatycznie w czasie wykonywania i jest niewidoczny dla użytkownika. Należy pamiętać, że choć zarówno CPython, jak i MicroPython używają kodu bajtowego, jego format jest różny. Kod źródłowy można też wstępnie skompilować offline za pomocą cross-compilera.

krotka będąca własnością wywoływanego

Jest to konstrukcja specyficzna dla MicroPythona, w której — ze względów wydajnościowych — niektóre funkcje lub metody wbudowane mogą ponownie wykorzystywać ten sam bazowy obiekt krotki do zwracania danych. Pozwala to uniknąć alokowania nowej krotki przy każdym wywołaniu i ogranicza fragmentację sterty. Programy nie powinny przechowywać odwołań do krotek będących własnością wywoływanego, a jedynie wydobywać z nich dane (lub tworzyć kopię).

CircuitPython

Wariant MicroPythona rozwijany przez Adafruit Industries.

CPython

CPython jest referencyjną implementacją języka programowania Python i najbardziej znaną. Jest to jednak jedna z wielu implementacji (w tym Jython, IronPython, PyPy oraz MicroPython). Choć implementacja MicroPythona znacznie różni się od CPythona, dąży ona do zachowania jak największej zgodności.

cross-compiler

Znany również jako mpy-cross. To narzędzie działa na twoim komputerze i konwertuje plik .py zawierający kod MicroPythona na plik .mpy zawierający kod bajtowy MicroPythona. Oznacza to, że ładuje się on szybciej (płytka nie musi kompilować kodu) i zajmuje mniej miejsca w pamięci flash (kod bajtowy jest bardziej oszczędny pod względem zajmowanego miejsca).

sterownik

Biblioteka MicroPythona implementująca obsługę określonego komponentu, takiego jak sensor lub wyświetlacz.

FFI

Skrót od Foreign Function Interface (interfejs funkcji zewnętrznych). Mechanizm wykorzystywany przez port Unix MicroPythona do uzyskiwania dostępu do funkcji systemu operacyjnego. Nie jest on dostępny na portach baremetal.

system plików

Większość portów i płytek MicroPythona udostępnia system plików przechowywany w pamięci flash, dostępny dla kodu użytkownika za pośrednictwem standardowych API plików Pythona, takich jak open(). Niektóre płytki udostępniają również ten wewnętrzny system plików hostowi za pośrednictwem pamięci masowej USB.

moduł zamrożony

Moduł Pythona, który został skompilowany krzyżowo i wbudowany w obraz oprogramowania układowego. Zmniejsza to wymagania dotyczące pamięci RAM, ponieważ kod jest wykonywany bezpośrednio z pamięci flash.

Garbage Collector (odśmiecacz pamięci)

Proces działający w tle w Pythonie (i MicroPythonie), który odzyskuje nieużywaną pamięć na stercie.

GPIO

Wejście/wyjście ogólnego przeznaczenia. Najprostszy sposób sterowania sygnałami elektrycznymi (powszechnie nazywanymi „pinami”) na mikrokontrolerze. GPIO zazwyczaj umożliwia ustawienie pinów jako wejść lub wyjść oraz ustawianie lub odczytywanie ich wartości cyfrowej (logicznego „0” lub „1”). MicroPython udostępnia abstrakcję dostępu do GPIO za pomocą klas machine.Pin i machine.Signal.

port GPIO

Grupa pinów GPIO, zazwyczaj oparta na właściwościach sprzętowych tych pinów (np. sterowalnych przez ten sam rejestr).

sterta

Obszar pamięci RAM, w którym MicroPython przechowuje dane dynamiczne. Jest on zarządzany automatycznie przez Garbage Collector. Różne MCU i płytki mają bardzo różne ilości pamięci RAM dostępnej dla sterty, co wpływa na to, jak złożony może być twój program.

łańcuch internowany

Optymalizacja stosowana przez MicroPython w celu poprawy wydajności pracy z łańcuchami znaków. Łańcuch internowany jest identyfikowany przez swoją (unikalną) tożsamość, a nie adres, dzięki czemu można go szybko porównać jedynie na podstawie identyfikatora. Oznacza to również, że identyczne łańcuchy mogą zostać zdeduplikowane w pamięci. Internowanie łańcuchów jest niemal zawsze niewidoczne dla użytkownika.

MCU

Mikrokontroler. Mikrokontrolery zazwyczaj dysponują znacznie mniejszymi zasobami niż komputer stacjonarny, laptop czy telefon, ale są mniejsze, tańsze i wymagają znacznie mniej energii. MicroPython został zaprojektowany tak, aby być na tyle mały i zoptymalizowany, by działać na przeciętnym współczesnym mikrokontrolerze.

micropython-lib

MicroPython jest (zazwyczaj) dystrybuowany jako pojedynczy plik wykonywalny/binarny z zaledwie kilkoma modułami wbudowanymi. Nie istnieje obszerna biblioteka standardowa porównywalna z biblioteką CPythona. Zamiast tego istnieje powiązany, lecz odrębny projekt micropython-lib, który dostarcza implementacje wielu modułów z biblioteki standardowej CPythona.

Część modułów jest zaimplementowana w czystym Pythonie i działa na dowolnym porcie; oprogramowanie układowe OpenMV zamraża wybór tych modułów (sterowniki sensorów, sieci oraz pomocnicze narzędzia) bezpośrednio w obrazie oprogramowania układowego, dzięki czemu można je importować bez instalowania czegokolwiek. Mniejsza liczba modułów micropython-lib korzysta z FFI i działa wyłącznie na porcie Unix MicroPythona; te nie są dostępne na kamerach OpenMV Cam.

W odróżnieniu od biblioteki standardowej CPythona, moduły micropython-lib, które nie są zamrożone, instaluje się indywidualnie — albo kopiując je do systemu plików, albo, na płytkach z obsługą sieci, za pomocą mip.

port MicroPythona

MicroPython obsługuje różne płytki, systemy RTOS oraz systemy operacyjne i może być stosunkowo łatwo dostosowany do nowych systemów. MicroPython z obsługą określonego systemu nazywany jest „portem” na ten system. Różne porty mogą mieć bardzo różną funkcjonalność. Niniejsza dokumentacja ma stanowić odniesienie do ogólnych API dostępnych na różnych portach („rdzeń MicroPythona”). Należy pamiętać, że niektóre porty mogą nadal pomijać część opisanych tutaj API (np. ze względu na ograniczenia zasobów). Wszelkie takie różnice oraz rozszerzenia specyficzne dla portu wykraczające poza funkcjonalność rdzenia MicroPythona byłyby opisane w osobnej dokumentacji specyficznej dla danego portu.

port Unix MicroPythona

Port Unix jest jednym z głównych portów MicroPythona. Jest przeznaczony do działania na systemach operacyjnych zgodnych z POSIX, takich jak Linux, MacOS, FreeBSD, Solaris itp. Stanowi również podstawę portu Windows. Port Unix jest bardzo przydatny do szybkiego rozwoju i testowania języka MicroPython oraz funkcji niezależnych od maszyny. Może również funkcjonować w sposób podobny do pliku wykonywalnego python CPythona.

mip

Instalator pakietów dla MicroPythona (mip — „mip installs packages”). Instaluje pakiety MicroPythona albo z micropython-lib, z GitHuba, albo z dowolnych adresów URL. mip może być używany bezpośrednio na urządzeniu na płytkach z obsługą sieci, a także wewnętrznie przez narzędzia takie jak mpremote.

Zobacz Zarządzanie pakietami, aby uzyskać więcej informacji na temat używania mip.

mpremote

Narzędzie do interakcji z urządzeniem MicroPython. Zobacz Zdalne sterowanie MicroPython: mpremote.

plik .mpy

Wynik działania cross-compilera. Skompilowana forma pliku .py, która zawiera kod bajtowy MicroPythona zamiast kodu źródłowego Pythona.

natywny

Zazwyczaj odnosi się do „kodu natywnego”, tj. kodu maszynowego dla docelowego mikrokontrolera (ARM Thumb na kamerach OpenMV Cam opartych na Cortex-M). Dekorator @micropython.native można zastosować do funkcji MicroPythona, aby wygenerować dla niej kod natywny zamiast kodu bajtowego, co prawdopodobnie będzie szybsze, ale zużyje więcej pamięci RAM.

port

Zazwyczaj skrót od portu MicroPythona, ale może również odnosić się do portu GPIO.

plik .py

Plik zawierający kod źródłowy Pythona.

pyboard.py

Obecnie zastąpione narzędzie po stronie hosta służące do interakcji z płytką MicroPython — uruchamiania skryptów i dostępu do systemu plików za pośrednictwem surowego REPL. Zobacz jego następcę, mpremote.

REPL

Skrót od „Read, Eval, Print, Loop” (czytaj, oceniaj, wypisuj, powtarzaj). Jest to interaktywny wiersz poleceń Pythona, przydatny do debugowania lub testowania krótkich fragmentów kodu. Kamery OpenMV Cam udostępniają REPL komputerowi-hostowi za pośrednictwem USB (urządzenie szeregowe USB CDC).

mała liczba całkowita

MicroPython optymalizuje wewnętrzną reprezentację liczb całkowitych w taki sposób, że „małe” wartości nie zajmują miejsca na stercie, a obliczenia z ich użyciem nie wymagają alokacji na stercie. Na większości portów 32-bitowych odpowiada to wartościom z przedziału -2**30 <= x < 2**30, ale należy to traktować jako szczegół implementacyjny i nie polegać na tym.

strumień

Znany również jako „obiekt plikopodobny”. Obiekt Pythona zapewniający sekwencyjny dostęp do odczytu i zapisu danych bazowych. Obiekt strumienia implementuje odpowiedni interfejs, który składa się z metod takich jak read(), write(), readinto(), seek(), flush(), close() itp. Strumień jest ważnym pojęciem w MicroPythonie; wiele obiektów wejścia/wyjścia implementuje interfejs strumienia, dzięki czemu mogą być używane spójnie i zamiennie w różnych kontekstach. Aby uzyskać więcej informacji na temat strumieni w MicroPythonie, zobacz moduł io.

UART

Skrót od „Universal Asynchronous Receiver/Transmitter” (uniwersalny asynchroniczny nadajnik-odbiornik). Jest to urządzenie peryferyjne, które przesyła dane przez parę pinów (TX i RX). Wiele płytek udostępnia sposób na to, aby co najmniej jeden z układów UART był dostępny dla komputera-hosta jako port szeregowy za pośrednictwem USB.

upip

Obecnie przestarzały menedżer pakietów dla MicroPythona, zainspirowany pip-em CPythona, ale znacznie mniejszy i o ograniczonej funkcjonalności. Zobacz jego następcę, mip.

webrepl

Sposób na łączenie się z REPL (oraz przesyłanie plików) na urządzeniu przez internet z poziomu przeglądarki. Zobacz https://micropython.org/webrepl