Glosar

baremetal

Un sistem fără un sistem de operare (complet), de exemplu un sistem bazat pe MCU. Când rulează pe un sistem baremetal, MicroPython funcționează efectiv ca un mic sistem de operare, rulând programele utilizatorului și oferind un interpretor de comenzi (REPL).

buffer protocol

Orice obiect Python care poate fi convertit automat în octeți, cum ar fi obiectele bytes, bytearray, memoryview și str, care implementează toate „buffer protocol”.

board

De obicei, acest termen se referă la o placă cu circuite imprimate (PCB) care conține un microcontroler și componente auxiliare. Firmware-ul MicroPython este de obicei furnizat per placă, deoarece firmware-ul conține atât funcționalitate specifică MCU-ului, cât și funcționalitate la nivel de placă, cum ar fi drivere sau nume de pini.

bytecode

O reprezentare compactă a unui program Python care este generată prin compilarea codului sursă Python. Aceasta este ceea ce execută efectiv mașina virtuală (VM). Bytecode-ul este de obicei generat automat în timpul execuției și este invizibil pentru utilizator. Rețineți că, deși atât CPython, cât și MicroPython folosesc bytecode, formatul este diferit. De asemenea, puteți precompila codul sursă offline folosind cross-compiler.

callee-owned tuple

Aceasta este o construcție specifică MicroPython în care, din motive de eficiență, unele funcții sau metode încorporate pot reutiliza același obiect tuple subiacent pentru a returna date. Acest lucru evită necesitatea de a aloca un nou tuple pentru fiecare apel și reduce fragmentarea heap-ului. Programele nu ar trebui să păstreze referințe la tuple deținute de apelat, ci doar să extragă date din ele (sau să facă o copie).

CircuitPython

O variantă a MicroPython dezvoltată de Adafruit Industries.

CPython

CPython este implementarea de referință a limbajului de programare Python și cea mai cunoscută. Este, totuși, una dintre numeroasele implementări (inclusiv Jython, IronPython, PyPy și MicroPython). Deși implementarea MicroPython diferă substanțial de CPython, aceasta urmărește să mențină cât mai multă compatibilitate posibilă.

cross-compiler

Cunoscut și sub numele de mpy-cross. Acest instrument rulează pe PC-ul dumneavoastră și convertește un fișier .py care conține cod MicroPython într-un fișier .mpy care conține bytecode MicroPython. Acest lucru înseamnă că se încarcă mai rapid (placa nu trebuie să compileze codul) și folosește mai puțin spațiu pe memoria flash (bytecode-ul este mai eficient din punctul de vedere al spațiului).

driver

O bibliotecă MicroPython care implementează suport pentru o anumită componentă, cum ar fi un senzor sau un afișaj.

FFI

Acronim pentru Foreign Function Interface. Un mecanism utilizat de MicroPython Unix port pentru a accesa funcționalitatea sistemului de operare. Acesta nu este disponibil pe porturile baremetal.

filesystem

Majoritatea porturilor și plăcilor MicroPython oferă un sistem de fișiere stocat în memoria flash, disponibil codului utilizatorului prin API-urile standard Python pentru fișiere, cum ar fi open(). Unele plăci fac, de asemenea, acest sistem de fișiere intern accesibil gazdei prin stocarea în masă USB.

frozen module

Un modul Python care a fost cross-compilat și inclus în imaginea firmware-ului. Acest lucru reduce cerințele de RAM, deoarece codul este executat direct din memoria flash.

Garbage Collector

Un proces de fundal care rulează în Python (și MicroPython) pentru a recupera memoria neutilizată din heap.

GPIO

General-purpose input/output (intrare/ieșire de uz general). Cel mai simplu mijloc de a controla semnalele electrice (denumite în mod obișnuit „pini”) de pe un microcontroler. GPIO permite de obicei ca pinii să fie fie de intrare, fie de ieșire, și să le seteze sau să le citească valoarea digitală (logic „0” sau „1”). MicroPython abstractizează accesul GPIO folosind clasele machine.Pin și machine.Signal.

GPIO port

Un grup de pini GPIO, de obicei bazat pe proprietățile hardware ale acestor pini (de exemplu, controlabili de același registru).

heap

O regiune de RAM în care MicroPython stochează datele dinamice. Este gestionată automat de Garbage Collector. Diferite MCU-uri și plăci au cantități extrem de diferite de RAM disponibile pentru heap, așa că acest lucru va afecta cât de complex poate fi programul dumneavoastră.

interned string

O optimizare folosită de MicroPython pentru a îmbunătăți eficiența lucrului cu șirurile de caractere. Un șir intern este referențiat prin identitatea sa (unică) mai degrabă decât prin adresa sa și poate fi astfel comparat rapid doar prin identificatorul său. De asemenea, înseamnă că șirurile identice pot fi deduplicate în memorie. Internarea șirurilor este aproape întotdeauna invizibilă pentru utilizator.

MCU

Microcontroler. Microcontrolerele au de obicei mult mai puține resurse decât un computer de birou, un laptop sau un telefon, dar sunt mai mici, mai ieftine și necesită mult mai puțină energie. MicroPython este conceput să fie suficient de mic și de optimizat pentru a rula pe un microcontroler modern obișnuit.

micropython-lib

MicroPython este (de obicei) distribuit ca un singur fișier executabil/binar cu doar câteva module încorporate. Nu există o bibliotecă standard extinsă comparabilă cu cea a CPython. În schimb, există un proiect înrudit, dar separat, micropython-lib care oferă implementări pentru multe module din biblioteca standard a CPython.

Unele dintre module sunt implementate în Python pur și rulează pe orice port; firmware-ul OpenMV îngheață o selecție dintre acestea (drivere de senzori, rețelistică și utilitare ajutătoare) direct în imaginea firmware-ului, astfel încât să poată fi importate fără a instala nimic. Un număr mai mic de module micropython-lib folosesc FFI și funcționează doar pe MicroPython Unix port; acestea nu sunt disponibile pe OpenMV Cam.

Spre deosebire de biblioteca standard CPython, modulele micropython-lib care nu sunt înghețate sunt instalate individual - fie prin copierea lor pe sistemul de fișiere, fie, pe plăcile cu capabilități de rețea, folosind mip.

MicroPython port

MicroPython acceptă diferite plăci, RTOS-uri și sisteme de operare și poate fi adaptat relativ ușor la sisteme noi. MicroPython cu suport pentru un anumit sistem este numit un „port” pe acel sistem. Diferite porturi pot avea funcționalități foarte diferite. Această documentație este menită să fie o referință a API-urilor generice disponibile pe diferite porturi („nucleul MicroPython”). Rețineți că unele porturi pot totuși omite unele API-uri descrise aici (de exemplu, din cauza constrângerilor de resurse). Orice astfel de diferențe, precum și extensiile specifice portului dincolo de funcționalitatea nucleului MicroPython, ar fi descrise în documentația separată specifică portului.

MicroPython Unix port

Portul Unix este unul dintre principalele porturi MicroPython. Este destinat să ruleze pe sisteme de operare compatibile POSIX, cum ar fi Linux, MacOS, FreeBSD, Solaris etc. De asemenea, servește drept bază pentru portul Windows. Portul Unix este foarte util pentru dezvoltarea și testarea rapidă a limbajului MicroPython și a caracteristicilor independente de mașină. Poate funcționa, de asemenea, într-un mod similar cu executabilul python al CPython.

mip

Un instalator de pachete pentru MicroPython (mip - „mip installs packages”). Instalează pachete MicroPython fie din micropython-lib, fie din GitHub, fie din URL-uri arbitrare. mip poate fi folosit pe dispozitiv pe plăcile cu capabilități de rețea și intern de către instrumente precum mpremote.

Consultați Gestionarea pachetelor pentru mai multe informații despre utilizarea mip.

mpremote

Un instrument pentru interacțiunea cu un dispozitiv MicroPython. Consultați Control la distanță MicroPython: mpremote.

.mpy file

Rezultatul cross-compiler-ului. O formă compilată a unui fișier .py care conține bytecode MicroPython în loc de cod sursă Python.

native

Se referă de obicei la „cod nativ”, adică cod mașină pentru microcontrolerul țintă (ARM Thumb pe OpenMV Cam bazate pe Cortex-M). Decoratorul @micropython.native poate fi aplicat unei funcții MicroPython pentru a genera cod nativ în loc de bytecode pentru acea funcție, ceea ce va fi probabil mai rapid, dar va folosi mai mult RAM.

port

De obicei, prescurtarea de la MicroPython port, dar se poate referi și la GPIO port.

.py file

Un fișier care conține cod sursă Python.

pyboard.py

Un instrument de pe partea gazdei, acum depășit, pentru interacțiunea cu o placă MicroPython — rularea scripturilor și accesarea sistemului de fișiere prin REPL-ul brut. Consultați înlocuitorul său, mpremote.

REPL

Un acronim pentru „Read, Eval, Print, Loop”. Aceasta este promptul interactiv Python, util pentru depanarea sau testarea unor fragmente scurte de cod. OpenMV Cam pun REPL-ul la dispoziția unui PC gazdă prin USB (un dispozitiv serial USB CDC).

small integer

MicroPython optimizează reprezentarea internă a numerelor întregi astfel încât valorile „mici” să nu ocupe spațiu în heap, iar calculele cu acestea să nu necesite alocare de heap. Pe majoritatea porturilor pe 32 de biți, aceasta corespunde valorilor din intervalul -2**30 <= x < 2**30, dar acest lucru ar trebui considerat un detaliu de implementare și nu trebuie să vă bazați pe el.

stream

Cunoscut și sub denumirea de „obiect de tip fișier”. Un obiect Python care oferă acces secvențial de citire-scriere la datele subiacente. Un obiect flux implementează o interfață corespunzătoare, care constă din metode precum read(), write(), readinto(), seek(), flush(), close() etc. Un flux este un concept important în MicroPython; multe obiecte I/O implementează interfața de flux și astfel pot fi folosite consecvent și interschimbabil în diferite contexte. Pentru mai multe informații despre fluxuri în MicroPython, consultați modulul io.

UART

Acronim pentru „Universal Asynchronous Receiver/Transmitter”. Acesta este un periferic care trimite date printr-o pereche de pini (TX și RX). Multe plăci includ o modalitate de a pune cel puțin unul dintre UART-uri la dispoziția unui PC gazdă ca port serial prin USB.

upip

Un manager de pachete acum învechit pentru MicroPython, inspirat de pip-ul CPython, dar mult mai mic și cu funcționalitate redusă. Consultați înlocuitorul său, mip.

webrepl

O modalitate de conectare la REPL (și de transferare a fișierelor) pe un dispozitiv prin internet dintr-un browser. Consultați https://micropython.org/webrepl