Verklarende woordenlijst

baremetal

Een systeem zonder een (volwaardig) besturingssysteem, bijvoorbeeld een MCU-gebaseerd systeem. Wanneer MicroPython op een baremetal-systeem draait, functioneert het in feite als een klein besturingssysteem dat gebruikersprogramma’s uitvoert en een opdrachtinterpreter (REPL) biedt.

buffer protocol

Elk Python-object dat automatisch naar bytes omgezet kan worden, zoals bytes-, bytearray-, memoryview- en str-objecten, die allemaal het “buffer protocol” implementeren.

board

Doorgaans verwijst dit naar een printplaat (PCB) die een microcontroller en ondersteunende componenten bevat. MicroPython-firmware wordt doorgaans per board geleverd, aangezien de firmware zowel MCU-specifieke functionaliteit bevat als functionaliteit op boardniveau zoals stuurprogramma’s of pinnamen.

bytecode

Een compacte weergave van een Python-programma die gegenereerd wordt door het compileren van de Python-broncode. Dit is wat de VM daadwerkelijk uitvoert. Bytecode wordt doorgaans automatisch tijdens runtime gegenereerd en is onzichtbaar voor de gebruiker. Merk op dat hoewel CPython en MicroPython beide bytecode gebruiken, het formaat verschilt. Je kunt broncode ook offline voorcompileren met de cross-compiler.

callee-owned tuple

Dit is een MicroPython-specifieke constructie waarbij sommige ingebouwde functies of methoden om efficiëntieredenen hetzelfde onderliggende tuple-object kunnen hergebruiken om gegevens te retourneren. Dit voorkomt dat er bij elke aanroep een nieuwe tuple moet worden toegewezen en vermindert heap-fragmentatie. Programma’s moeten geen verwijzingen naar callee-owned tuples vasthouden, maar in plaats daarvan alleen gegevens eruit halen (of een kopie maken).

CircuitPython

Een variant van MicroPython ontwikkeld door Adafruit Industries.

CPython

CPython is de referentie-implementatie van de programmeertaal Python, en de bekendste. Het is echter een van vele implementaties (waaronder Jython, IronPython, PyPy en MicroPython). Hoewel de implementatie van MicroPython substantieel verschilt van CPython, streeft het ernaar zoveel mogelijk compatibiliteit te behouden.

cross-compiler

Ook bekend als mpy-cross. Dit hulpprogramma draait op je pc en converteert een .py file met MicroPython-code naar een .mpy file met MicroPython-bytecode. Dit betekent dat het sneller laadt (het board hoeft de code niet te compileren) en minder ruimte gebruikt op het flashgeheugen (de bytecode is ruimte-efficiënter).

driver

Een MicroPython-bibliotheek die ondersteuning implementeert voor een bepaald component, zoals een sensor of display.

FFI

Acroniem voor Foreign Function Interface. Een mechanisme dat door de MicroPython Unix port gebruikt wordt om toegang te krijgen tot functionaliteit van het besturingssysteem. Dit is niet beschikbaar op baremetal-ports.

filesystem

De meeste MicroPython-ports en -boards bieden een bestandssysteem dat in flashgeheugen is opgeslagen en beschikbaar is voor gebruikerscode via de standaard Python-bestands-API’s zoals open(). Sommige boards maken dit interne bestandssysteem ook toegankelijk voor de host via USB-massaopslag.

frozen module

Een Python-module die cross-gecompileerd is en in de firmware-image gebundeld is. Dit vermindert de RAM-vereisten omdat de code rechtstreeks vanuit het flashgeheugen wordt uitgevoerd.

Garbage Collector

Een achtergrondproces dat in Python (en MicroPython) draait om ongebruikt geheugen in de heap terug te winnen.

GPIO

General-purpose input/output. Het eenvoudigste middel om elektrische signalen (gewoonlijk “pins” genoemd) op een microcontroller te besturen. GPIO laat pins doorgaans toe om ofwel ingang of uitgang te zijn, en om hun digitale waarde (logische “0” of “1”) in te stellen of op te vragen. MicroPython abstraheert GPIO-toegang met behulp van de klassen machine.Pin en machine.Signal.

GPIO port

Een groep GPIO-pins, meestal gebaseerd op hardware-eigenschappen van deze pins (bijv. bestuurbaar door hetzelfde register).

heap

Een gebied van RAM waar MicroPython dynamische gegevens opslaat. Het wordt automatisch beheerd door de Garbage Collector. Verschillende MCU’s en boards hebben sterk uiteenlopende hoeveelheden RAM beschikbaar voor de heap, dus dit beïnvloedt hoe complex je programma kan zijn.

interned string

Een optimalisatie die door MicroPython gebruikt wordt om de efficiëntie van het werken met strings te verbeteren. Een interned string wordt verwezen door zijn (unieke) identiteit in plaats van zijn adres en kan daardoor snel worden vergeleken alleen op basis van zijn identificator. Het betekent ook dat identieke strings in het geheugen ontdubbeld kunnen worden. String interning is bijna altijd onzichtbaar voor de gebruiker.

MCU

Microcontroller. Microcontrollers hebben meestal veel minder bronnen dan een desktop, laptop of telefoon, maar zijn kleiner, goedkoper en vereisen veel minder vermogen. MicroPython is ontworpen om klein en geoptimaliseerd genoeg te zijn om op een gemiddelde moderne microcontroller te draaien.

micropython-lib

MicroPython wordt (meestal) gedistribueerd als één enkel uitvoerbaar/binair bestand met slechts enkele ingebouwde modules. Er is geen uitgebreide standaardbibliotheek vergelijkbaar met die van CPython. In plaats daarvan is er een gerelateerd maar afzonderlijk project micropython-lib dat implementaties biedt voor veel modules uit de standaardbibliotheek van CPython.

Sommige van de modules zijn geïmplementeerd in pure Python en draaien op elke port; de OpenMV-firmware bevriest een selectie hiervan (sensorstuurprogramma’s, netwerken en hulpprogramma’s) rechtstreeks in de firmware-image zodat ze geïmporteerd kunnen worden zonder iets te installeren. Een kleiner aantal micropython-lib-modules gebruiken FFI en werken alleen op de MicroPython Unix port; die zijn niet beschikbaar op OpenMV Cams.

In tegenstelling tot de stdlib van CPython worden micropython-lib-modules die niet ingevroren zijn afzonderlijk geïnstalleerd - ofwel door ze naar het bestandssysteem te kopiëren of, op netwerkcapabele boards, met behulp van mip.

MicroPython port

MicroPython ondersteunt verschillende boards, RTOS’en en OS’en, en kan relatief eenvoudig aangepast worden aan nieuwe systemen. MicroPython met ondersteuning voor een bepaald systeem wordt een “port” naar dat systeem genoemd. Verschillende ports kunnen sterk uiteenlopende functionaliteit hebben. Deze documentatie is bedoeld als referentie van de generieke API’s die beschikbaar zijn over verschillende ports (“MicroPython core”). Merk op dat sommige ports nog steeds enkele hier beschreven API’s kunnen weglaten (bijv. vanwege resourcebeperkingen). Eventuele dergelijke verschillen, en port-specifieke uitbreidingen buiten de MicroPython-core-functionaliteit, zouden beschreven worden in de afzonderlijke port-specifieke documentatie.

MicroPython Unix port

De Unix-port is een van de belangrijkste MicroPython ports. Hij is bedoeld om te draaien op POSIX-compatibele besturingssystemen, zoals Linux, MacOS, FreeBSD, Solaris, enz. Hij dient ook als basis voor de Windows-port. De Unix-port is zeer nuttig voor snelle ontwikkeling en het testen van de MicroPython-taal en machineonafhankelijke functies. Hij kan ook op een vergelijkbare manier functioneren als de python-uitvoerbare van CPython.

mip

Een pakketinstallatieprogramma voor MicroPython (mip - “mip installs packages”). Het installeert MicroPython-pakketten ofwel vanuit micropython-lib, GitHub of willekeurige URL’s. mip kan op het apparaat zelf gebruikt worden op netwerkcapabele boards, en intern door hulpprogramma’s zoals mpremote.

Zie Pakketbeheer voor meer informatie over het gebruik van mip.

mpremote

Een hulpprogramma voor interactie met een MicroPython-apparaat. Zie MicroPython op afstand bedienen: mpremote.

.mpy file

De uitvoer van de cross-compiler. Een gecompileerde vorm van een .py file die MicroPython-bytecode bevat in plaats van Python-broncode.

native

Verwijst meestal naar “native code”, d.w.z. machinecode voor de doelmicrocontroller (ARM Thumb op de Cortex-M-gebaseerde OpenMV Cams). De decorator @micropython.native kan toegepast worden op een MicroPython-functie om native code te genereren in plaats van bytecode voor die functie, wat waarschijnlijk sneller zal zijn maar meer RAM zal gebruiken.

port

Meestal de afkorting voor MicroPython port, maar kan ook verwijzen naar GPIO port.

.py file

Een bestand met Python-broncode.

pyboard.py

Een inmiddels vervangen hulpprogramma aan de hostzijde voor interactie met een MicroPython-board — het uitvoeren van scripts en het benaderen van het bestandssysteem via de ruwe REPL. Zie de vervanger ervan, mpremote.

REPL

Een acroniem voor “Read, Eval, Print, Loop”. Dit is de interactieve Python-prompt, nuttig voor het debuggen of testen van korte codefragmenten. OpenMV Cams maken de REPL beschikbaar voor een host-pc via USB (een USB CDC seriële apparaat).

small integer

MicroPython optimaliseert de interne weergave van gehele getallen zodanig dat “kleine” waarden geen ruimte innemen op de heap, en berekeningen ermee geen heap-toewijzing vereisen. Op de meeste 32-bits ports komt dit overeen met waarden in het interval -2**30 <= x < 2**30, maar dit moet beschouwd worden als een implementatiedetail en er mag niet op vertrouwd worden.

stream

Ook bekend als een “file-like object”. Een Python-object dat sequentiële lees-schrijftoegang biedt tot de onderliggende gegevens. Een stream-object implementeert een corresponderende interface, die bestaat uit methoden zoals read(), write(), readinto(), seek(), flush(), close(), enz. Een stream is een belangrijk concept in MicroPython; veel I/O-objecten implementeren de stream-interface en kunnen daardoor consistent en uitwisselbaar gebruikt worden in verschillende contexten. Voor meer informatie over streams in MicroPython, zie de io-module.

UART

Acroniem voor “Universal Asynchronous Receiver/Transmitter”. Dit is een randapparaat dat gegevens verstuurt over een paar pins (TX & RX). Veel boards bevatten een manier om ten minste één van de UART’s beschikbaar te maken voor een host-pc als seriële poort via USB.

upip

Een inmiddels verouderde pakketbeheerder voor MicroPython, geïnspireerd op de pip van CPython, maar veel kleiner en met beperkte functionaliteit. Zie de vervanger ervan, mip.

webrepl

Een manier om verbinding te maken met de REPL (en bestanden over te dragen) op een apparaat via internet vanuit een browser. Zie https://micropython.org/webrepl