Ordlista

baremetal

Ett system utan ett (fullfjädrat) operativsystem, till exempel ett MCU-baserat system. När MicroPython körs på ett baremetal-system fungerar det i praktiken som ett litet operativsystem, som kör användarprogram och tillhandahåller en kommandotolk (REPL).

buffertprotokoll

Vilket Python-objekt som helst som automatiskt kan konverteras till bytes, såsom bytes-, bytearray-, memoryview- och str-objekt, vilka alla implementerar ”buffertprotokollet”.

kort

Detta avser vanligtvis ett kretskort (PCB) som innehåller en mikrokontroller och tillhörande komponenter. MicroPython-firmware tillhandahålls vanligtvis per kort, eftersom firmware innehåller både MCU-specifik funktionalitet och funktionalitet på kortnivå, såsom drivrutiner eller stiftnamn.

bytecode

En kompakt representation av ett Python-program som genereras genom att kompilera Python-källkoden. Det är detta som den virtuella maskinen faktiskt kör. Bytecode genereras vanligtvis automatiskt vid körtid och är osynlig för användaren. Observera att även om både CPython och MicroPython använder bytecode, så skiljer sig formatet åt. Du kan också förkompilera källkod offline med hjälp av korskompilatorn.

anropad-ägd tupel

Detta är en MicroPython-specifik konstruktion där vissa inbyggda funktioner eller metoder, av effektivitetsskäl, kan återanvända samma underliggande tupelobjekt för att returnera data. Detta undviker att en ny tupel måste allokeras vid varje anrop och minskar fragmentering av heapen. Program bör inte hålla referenser till anropad-ägda tuplar utan i stället endast extrahera data från dem (eller göra en kopia).

CircuitPython

En variant av MicroPython utvecklad av Adafruit Industries.

CPython

CPython är referensimplementationen av programmeringsspråket Python och den mest välkända. Den är dock en av många implementationer (inklusive Jython, IronPython, PyPy och MicroPython). Även om MicroPythons implementation skiljer sig avsevärt från CPython, strävar den efter att bibehålla så mycket kompatibilitet som möjligt.

korskompilator

Även känd som mpy-cross. Detta verktyg körs på din PC och konverterar en .py-fil som innehåller MicroPython-kod till en .mpy-fil som innehåller MicroPython-bytecode. Detta innebär att den laddas snabbare (kortet behöver inte kompilera koden) och använder mindre utrymme på flashminnet (bytecode är mer utrymmeseffektiv).

drivrutin

Ett MicroPython-bibliotek som implementerar stöd för en viss komponent, såsom en sensor eller display.

FFI

Förkortning för Foreign Function Interface. En mekanism som används av MicroPython Unix-porten för att komma åt operativsystemsfunktionalitet. Detta är inte tillgängligt på baremetal-portar.

filsystem

De flesta MicroPython-portar och -kort tillhandahåller ett filsystem lagrat i flashminne som är tillgängligt för användarkod via Pythons vanliga fil-API:er såsom open(). Vissa kort gör även detta interna filsystem tillgängligt för värden via USB-masslagring.

fryst modul

En Python-modul som har korskompilerats och buntats in i firmware-avbildningen. Detta minskar RAM-kraven eftersom koden körs direkt från flashminnet.

skräpsamlare

En bakgrundsprocess som körs i Python (och MicroPython) för att återvinna oanvänt minne i heapen.

GPIO

Generella in-/utgångar (general-purpose input/output). Det enklaste sättet att styra elektriska signaler (vanligen kallade ”stift”) på en mikrokontroller. GPIO gör vanligtvis att stift kan vara antingen ingång eller utgång, och att deras digitala värde (logisk ”0” eller ”1”) kan sättas eller läsas. MicroPython abstraherar GPIO-åtkomst med klasserna machine.Pin och machine.Signal.

GPIO-port

En grupp GPIO-stift, vanligtvis baserad på dessa stifts hårdvaruegenskaper (t.ex. att de kan styras av samma register).

heap

En region av RAM där MicroPython lagrar dynamiska data. Den hanteras automatiskt av skräpsamlaren. Olika MCU:er och kort har vitt skilda mängder RAM tillgängligt för heapen, så detta påverkar hur komplext ditt program kan vara.

internerad sträng

En optimering som MicroPython använder för att förbättra effektiviteten vid arbete med strängar. En internerad sträng refereras till genom sin (unika) identitet snarare än sin adress och kan därför snabbt jämföras enbart med hjälp av sin identifierare. Det innebär också att identiska strängar kan avdupliceras i minnet. Stränginternering är nästan alltid osynlig för användaren.

MCU

Mikrokontroller. Mikrokontroller har vanligtvis betydligt färre resurser än en stationär dator, bärbar dator eller telefon, men är mindre, billigare och kräver mycket mindre ström. MicroPython är utformat för att vara tillräckligt litet och optimerat för att kunna köras på en genomsnittlig modern mikrokontroller.

micropython-lib

MicroPython distribueras (vanligtvis) som en enda körbar/binär fil med bara ett fåtal inbyggda moduler. Det finns inget omfattande standardbibliotek jämförbart med CPythons. I stället finns ett relaterat men separat projekt, micropython-lib, som tillhandahåller implementationer av många moduler från CPythons standardbibliotek.

Vissa av modulerna är implementerade i ren Python och körs på vilken port som helst; OpenMV-firmwaren fryser in ett urval av dessa (sensordrivrutiner, nätverk och hjälpverktyg) direkt i firmware-avbildningen så att de kan importeras utan att något installeras. Ett mindre antal micropython-lib-moduler använder FFI och fungerar endast på MicroPython Unix-porten; dessa är inte tillgängliga på OpenMV Cam.

Till skillnad från CPythons standardbibliotek installeras de micropython-lib-moduler som inte är infrysta individuellt - antingen genom att kopiera dem till filsystemet eller, på nätverkskapabla kort, med hjälp av mip.

MicroPython-port

MicroPython stöder olika kort, RTOS:er och OS:er, och kan relativt enkelt anpassas till nya system. MicroPython med stöd för ett visst system kallas en ”port” till det systemet. Olika portar kan ha vitt skild funktionalitet. Den här dokumentationen är avsedd att vara en referens för de generella API:er som är tillgängliga över olika portar (”MicroPython core”). Observera att vissa portar fortfarande kan utelämna en del av de API:er som beskrivs här (t.ex. på grund av resursbegränsningar). Sådana skillnader, och portspecifika utökningar utöver MicroPythons kärnfunktionalitet, beskrivs i den separata portspecifika dokumentationen.

MicroPython Unix-porten

Unix-porten är en av de större MicroPython-portarna. Den är avsedd att köras på POSIX-kompatibla operativsystem, som Linux, MacOS, FreeBSD, Solaris osv. Den utgör även grunden för Windows-porten. Unix-porten är mycket användbar för snabb utveckling och testning av MicroPython-språket och maskinoberoende funktioner. Den kan också fungera på ett liknande sätt som CPythons körbara python-program.

mip

En paketinstallerare för MicroPython (mip - ”mip installs packages”). Den installerar MicroPython-paket antingen från micropython-lib, GitHub eller godtyckliga URL:er. mip kan användas på enheten på nätverkskapabla kort, och internt av verktyg som mpremote.

Se Pakethantering för mer information om hur du använder mip.

mpremote

Ett verktyg för att interagera med en MicroPython-enhet. Se MicroPython fjärrstyrning: mpremote.

.mpy-fil

Utdata från korskompilatorn. En kompilerad form av en .py-fil som innehåller MicroPython-bytecode i stället för Python-källkod.

native

Avser vanligtvis ”native-kod”, dvs. maskinkod för målmikrokontrollern (ARM Thumb på de Cortex-M-baserade OpenMV Cam). Dekoratorn @micropython.native kan appliceras på en MicroPython-funktion för att generera native-kod i stället för bytecode för den funktionen, vilket sannolikt blir snabbare men använder mer RAM.

port

Vanligtvis kort för MicroPython-port, men kan också avse GPIO-port.

.py-fil

En fil som innehåller Python-källkod.

pyboard.py

Ett numera ersatt verktyg på värdsidan för att interagera med ett MicroPython-kort — köra skript och komma åt filsystemet över den råa REPL:en. Se dess ersättning, mpremote.

REPL

En förkortning för ”Read, Eval, Print, Loop”. Detta är den interaktiva Python-prompten, användbar för felsökning eller testning av korta kodavsnitt. OpenMV Cam gör REPL:en tillgänglig för en värddator via USB (en USB CDC-seriell enhet).

litet heltal

MicroPython optimerar den interna representationen av heltal så att ”små” värden inte upptar utrymme på heapen, och beräkningar med dem inte kräver heap-allokering. På de flesta 32-bitarsportar motsvarar detta värden i intervallet -2**30 <= x < 2**30, men detta bör betraktas som en implementationsdetalj och inte litas på.

ström

Även känd som ett ”fil-liknande objekt”. Ett Python-objekt som ger sekventiell läs- och skrivåtkomst till underliggande data. Ett strömobjekt implementerar ett motsvarande gränssnitt, som består av metoder som read(), write(), readinto(), seek(), flush(), close() osv. En ström är ett viktigt begrepp i MicroPython; många I/O-objekt implementerar strömgränssnittet och kan därmed användas konsekvent och utbytbart i olika sammanhang. För mer information om strömmar i MicroPython, se modulen io.

UART

Förkortning för ”Universal Asynchronous Receiver/Transmitter”. Detta är en kringutrustning som skickar data över ett par stift (TX och RX). Många kort har ett sätt att göra åtminstone en av UART:erna tillgänglig för en värddator som en seriell port via USB.

upip

En numera föråldrad pakethanterare för MicroPython, inspirerad av CPythons pip, men mycket mindre och med reducerad funktionalitet. Se dess ersättning, mip.

webrepl

Ett sätt att ansluta till REPL:en (och överföra filer) på en enhet över internet från en webbläsare. Se https://micropython.org/webrepl