Glossar

baremetal

Ein System ohne (vollwertiges) Betriebssystem, zum Beispiel ein MCU-basiertes System. Bei der Ausführung auf einem Baremetal-System funktioniert MicroPython praktisch wie ein kleines Betriebssystem, das Benutzerprogramme ausführt und einen Befehlsinterpreter (REPL) bereitstellt.

buffer protocol

Jedes Python-Objekt, das automatisch in Bytes umgewandelt werden kann, wie bytes-, bytearray-, memoryview- und str-Objekte, die alle das „buffer protocol“ implementieren.

board

Üblicherweise bezieht sich dies auf eine Leiterplatte (PCB), die einen Mikrocontroller und unterstützende Komponenten enthält. MicroPython-Firmware wird üblicherweise pro Board bereitgestellt, da die Firmware sowohl MCU-spezifische Funktionalität als auch Funktionalität auf Board-Ebene wie Treiber oder Pin-Namen enthält.

bytecode

Eine kompakte Darstellung eines Python-Programms, die durch Kompilieren des Python-Quellcodes erzeugt wird. Dies ist das, was die VM tatsächlich ausführt. Bytecode wird üblicherweise zur Laufzeit automatisch erzeugt und ist für den Benutzer unsichtbar. Beachten Sie, dass sowohl CPython als auch MicroPython Bytecode verwenden, das Format jedoch unterschiedlich ist. Sie können Quellcode auch offline mit dem cross-compiler vorkompilieren.

callee-owned tuple

Dies ist ein MicroPython-spezifisches Konstrukt, bei dem aus Effizienzgründen einige eingebaute Funktionen oder Methoden dasselbe zugrunde liegende Tupel-Objekt wiederverwenden können, um Daten zurückzugeben. Dadurch muss nicht für jeden Aufruf ein neues Tupel zugewiesen werden, und die heap-Fragmentierung wird reduziert. Programme sollten keine Referenzen auf callee-owned Tupel halten, sondern stattdessen nur Daten aus ihnen extrahieren (oder eine Kopie anfertigen).

CircuitPython

Eine Variante von MicroPython, entwickelt von Adafruit Industries.

CPython

CPython ist die Referenzimplementierung der Programmiersprache Python und die bekannteste. Sie ist jedoch eine von vielen Implementierungen (darunter Jython, IronPython, PyPy und MicroPython). Obwohl sich die Implementierung von MicroPython erheblich von CPython unterscheidet, ist es bestrebt, so viel Kompatibilität wie möglich zu erhalten.

cross-compiler

Auch bekannt als mpy-cross. Dieses Werkzeug läuft auf Ihrem PC und konvertiert eine .py file, die MicroPython-Code enthält, in eine .mpy file, die MicroPython-bytecode enthält. Das bedeutet, dass sie schneller geladen wird (das Board muss den Code nicht kompilieren) und weniger Speicherplatz im Flash verbraucht (der Bytecode ist platzsparender).

driver

Eine MicroPython-Bibliothek, die Unterstützung für eine bestimmte Komponente implementiert, etwa einen Sensor oder ein Display.

FFI

Akronym für Foreign Function Interface. Ein Mechanismus, der vom MicroPython Unix port verwendet wird, um auf Betriebssystemfunktionalität zuzugreifen. Dieser ist auf baremetal-Ports nicht verfügbar.

filesystem

Die meisten MicroPython-Ports und -Boards stellen ein im Flash gespeichertes Dateisystem bereit, das Benutzercode über die standardmäßigen Python-Datei-APIs wie open() zur Verfügung steht. Einige Boards machen dieses interne Dateisystem auch dem Host über USB-Massenspeicher zugänglich.

frozen module

Ein Python-Modul, das cross-kompiliert und in das Firmware-Image gebündelt wurde. Dies reduziert die RAM-Anforderungen, da der Code direkt aus dem Flash ausgeführt wird.

Garbage Collector

Ein Hintergrundprozess, der in Python (und MicroPython) läuft, um ungenutzten Speicher im heap zurückzugewinnen.

GPIO

General-Purpose Input/Output. Das einfachste Mittel zur Steuerung elektrischer Signale (üblicherweise als „Pins“ bezeichnet) auf einem Mikrocontroller. GPIO erlaubt es Pins üblicherweise, entweder Eingang oder Ausgang zu sein und ihren digitalen Wert (logisch „0“ oder „1“) zu setzen oder abzufragen. MicroPython abstrahiert den GPIO-Zugriff über die Klassen machine.Pin und machine.Signal.

GPIO port

Eine Gruppe von GPIO-Pins, üblicherweise basierend auf Hardware-Eigenschaften dieser Pins (z.B. steuerbar durch dasselbe Register).

heap

Ein Bereich des RAM, in dem MicroPython dynamische Daten speichert. Er wird automatisch vom Garbage Collector verwaltet. Verschiedene MCUs und Boards haben sehr unterschiedliche Mengen an verfügbarem RAM für den Heap, was beeinflusst, wie komplex Ihr Programm sein kann.

interned string

Eine von MicroPython verwendete Optimierung zur Steigerung der Effizienz bei der Arbeit mit Strings. Ein interned String wird über seine (eindeutige) Identität statt über seine Adresse referenziert und kann daher schnell allein anhand seines Bezeichners verglichen werden. Es bedeutet auch, dass identische Strings im Speicher dedupliziert werden können. Das Internen von Strings ist für den Benutzer fast immer unsichtbar.

MCU

Mikrocontroller. Mikrocontroller verfügen üblicherweise über weit weniger Ressourcen als ein Desktop, Laptop oder Telefon, sind aber kleiner, günstiger und benötigen viel weniger Strom. MicroPython ist so konzipiert, dass es klein und optimiert genug ist, um auf einem durchschnittlichen modernen Mikrocontroller zu laufen.

micropython-lib

MicroPython wird (üblicherweise) als eine einzige ausführbare/binäre Datei mit nur wenigen eingebauten Modulen verteilt. Es gibt keine umfangreiche Standardbibliothek, die mit der von CPython vergleichbar wäre. Stattdessen gibt es ein verwandtes, aber separates Projekt micropython-lib, das Implementierungen für viele Module aus der Standardbibliothek von CPython bereitstellt.

Einige der Module sind in reinem Python implementiert und laufen auf jedem Port; die OpenMV-Firmware friert eine Auswahl davon (Sensortreiber, Networking und Hilfsfunktionen) direkt in das Firmware-Image ein, sodass sie importiert werden können, ohne dass etwas installiert werden muss. Eine kleinere Anzahl von micropython-lib-Modulen verwendet FFI und funktioniert nur auf dem MicroPython Unix port; diese sind auf OpenMV Cams nicht verfügbar.

Anders als die Standardbibliothek von CPython werden micropython-lib-Module, die nicht eingefroren sind, einzeln installiert – entweder durch Kopieren auf das Dateisystem oder, bei netzwerkfähigen Boards, mit mip.

MicroPython port

MicroPython unterstützt verschiedene Boards, RTOSe und Betriebssysteme und kann relativ leicht an neue Systeme angepasst werden. MicroPython mit Unterstützung für ein bestimmtes System wird als „Port“ auf dieses System bezeichnet. Verschiedene Ports können stark unterschiedliche Funktionalität bieten. Diese Dokumentation ist als Referenz der generischen APIs gedacht, die über verschiedene Ports hinweg verfügbar sind („MicroPython-Kern“). Beachten Sie, dass einige Ports manche der hier beschriebenen APIs trotzdem weglassen können (z.B. aufgrund von Ressourcenbeschränkungen). Etwaige solche Unterschiede sowie port-spezifische Erweiterungen über die MicroPython-Kernfunktionalität hinaus würden in der separaten port-spezifischen Dokumentation beschrieben.

MicroPython Unix port

Der Unix-Port ist einer der wichtigsten MicroPython-Ports. Er ist für die Ausführung auf POSIX-kompatiblen Betriebssystemen wie Linux, MacOS, FreeBSD, Solaris usw. gedacht. Er dient außerdem als Basis für den Windows-Port. Der Unix-Port ist sehr nützlich für die schnelle Entwicklung und das Testen der MicroPython-Sprache und maschinenunabhängiger Funktionen. Er kann auch ähnlich wie die ausführbare python-Datei von CPython funktionieren.

mip

Ein Paket-Installer für MicroPython (mip – „mip installs packages“). Er installiert MicroPython-Pakete entweder aus micropython-lib, von GitHub oder von beliebigen URLs. mip kann auf netzwerkfähigen Boards direkt auf dem Gerät und intern von Werkzeugen wie mpremote verwendet werden.

Weitere Informationen zur Verwendung von mip finden Sie unter Paketverwaltung.

mpremote

Ein Werkzeug zur Interaktion mit einem MicroPython-Gerät. Siehe MicroPython-Fernsteuerung: mpremote.

.mpy file

Die Ausgabe des cross-compiler. Eine kompilierte Form einer .py file, die MicroPython-bytecode statt Python-Quellcode enthält.

native

Bezieht sich üblicherweise auf „nativen Code“, d.h. Maschinencode für den Ziel-Mikrocontroller (ARM Thumb auf den Cortex-M-basierten OpenMV Cams). Der Dekorator @micropython.native kann auf eine MicroPython-Funktion angewendet werden, um für diese Funktion nativen Code statt bytecode zu erzeugen, was wahrscheinlich schneller ist, aber mehr RAM verbraucht.

port

Üblicherweise Kurzform für MicroPython port, könnte sich aber auch auf GPIO port beziehen.

.py file

Eine Datei, die Python-Quellcode enthält.

pyboard.py

Ein mittlerweile abgelöstes host-seitiges Werkzeug zur Interaktion mit einem MicroPython-Board — zum Ausführen von Skripten und Zugriff auf das Dateisystem über die rohe REPL. Siehe seinen Nachfolger mpremote.

REPL

Ein Akronym für „Read, Eval, Print, Loop“. Dies ist die interaktive Python-Eingabeaufforderung, nützlich zum Debuggen oder Testen kurzer Codeausschnitte. OpenMV Cams stellen die REPL einem Host-PC über USB (ein USB-CDC-Serial-Gerät) zur Verfügung.

small integer

MicroPython optimiert die interne Darstellung von Ganzzahlen so, dass „kleine“ Werte keinen Platz auf dem heap belegen und Berechnungen mit ihnen keine Heap-Allokation erfordern. Auf den meisten 32-Bit-Ports entspricht dies Werten im Intervall -2**30 <= x < 2**30, dies sollte jedoch als Implementierungsdetail betrachtet und nicht darauf vertraut werden.

stream

Auch bekannt als „file-like object“. Ein Python-Objekt, das sequenziellen Lese-/Schreibzugriff auf die zugrunde liegenden Daten bietet. Ein Stream-Objekt implementiert eine entsprechende Schnittstelle, die aus Methoden wie read(), write(), readinto(), seek(), flush(), close() usw. besteht. Ein Stream ist ein wichtiges Konzept in MicroPython; viele I/O-Objekte implementieren die Stream-Schnittstelle und können daher in verschiedenen Kontexten einheitlich und austauschbar verwendet werden. Weitere Informationen zu Streams in MicroPython finden Sie im Modul io.

UART

Akronym für „Universal Asynchronous Receiver/Transmitter“. Dies ist ein Peripheriegerät, das Daten über ein Paar von Pins (TX & RX) sendet. Viele Boards bieten eine Möglichkeit, mindestens eine der UARTs einem Host-PC als seriellen Port über USB zugänglich zu machen.

upip

Ein mittlerweile veralteter Paketmanager für MicroPython, inspiriert vom pip von CPython, aber viel kleiner und mit reduzierter Funktionalität. Siehe seinen Nachfolger mip.

webrepl

Eine Möglichkeit, sich über das Internet von einem Browser aus mit der REPL eines Geräts zu verbinden (und Dateien zu übertragen). Siehe https://micropython.org/webrepl