Glossario¶
- baremetal¶
Un sistema privo di un sistema operativo (completo), ad esempio un sistema basato su MCU. Quando viene eseguito su un sistema baremetal, MicroPython funziona di fatto come un piccolo sistema operativo, eseguendo i programmi utente e fornendo un interprete a riga di comando (REPL).
- buffer protocol¶
Qualsiasi oggetto Python che può essere convertito automaticamente in byte, come gli oggetti
bytes,bytearray,memoryviewestr, che implementano tutti il «buffer protocol».- board¶
Tipicamente si riferisce a un circuito stampato (PCB) contenente un microcontrollore e i componenti di supporto. Il firmware di MicroPython viene solitamente fornito per ogni scheda, poiché contiene sia funzionalità specifiche dell’MCU sia funzionalità a livello di scheda, come driver o nomi dei pin.
- bytecode¶
Una rappresentazione compatta di un programma Python generata compilando il codice sorgente Python. È ciò che la VM esegue effettivamente. Il bytecode viene tipicamente generato automaticamente in fase di esecuzione ed è invisibile all’utente. Nota che, sebbene sia CPython sia MicroPython usino il bytecode, il formato è diverso. È anche possibile precompilare il codice sorgente offline usando il cross-compiler.
- callee-owned tuple¶
Si tratta di un costrutto specifico di MicroPython in cui, per ragioni di efficienza, alcune funzioni o metodi integrati possono riutilizzare lo stesso oggetto tupla sottostante per restituire i dati. Questo evita di dover allocare una nuova tupla a ogni chiamata e riduce la frammentazione dell”heap. I programmi non dovrebbero mantenere riferimenti alle callee-owned tuple, ma estrarne solo i dati (oppure farne una copia).
- CircuitPython¶
Una variante di MicroPython sviluppata da Adafruit Industries.
- CPython¶
CPython è l’implementazione di riferimento del linguaggio di programmazione Python, nonché la più conosciuta. È tuttavia una delle tante implementazioni (tra cui Jython, IronPython, PyPy e MicroPython). Sebbene l’implementazione di MicroPython differisca sostanzialmente da CPython, mira a mantenere la maggiore compatibilità possibile.
- cross-compiler¶
Conosciuto anche come
mpy-cross. Questo strumento viene eseguito sul tuo PC e converte un .py file contenente codice MicroPython in un .mpy file contenente bytecode MicroPython. Ciò significa che si carica più velocemente (la scheda non deve compilare il codice) e occupa meno spazio sulla flash (il bytecode è più efficiente in termini di spazio).- driver¶
Una libreria MicroPython che implementa il supporto per un determinato componente, come un sensore o un display.
- FFI¶
Acronimo di Foreign Function Interface. Un meccanismo usato dal MicroPython Unix port per accedere alle funzionalità del sistema operativo. Non è disponibile sui port baremetal.
- filesystem¶
La maggior parte dei port e delle schede MicroPython fornisce un filesystem memorizzato in flash che è disponibile al codice utente tramite le API standard di Python per i file, come
open(). Alcune schede rendono inoltre questo filesystem interno accessibile all’host tramite l’archiviazione di massa USB.- frozen module¶
Un modulo Python che è stato cross compilato e incluso nell’immagine del firmware. Questo riduce i requisiti di RAM, poiché il codice viene eseguito direttamente dalla flash.
- Garbage Collector¶
Un processo in background che viene eseguito in Python (e MicroPython) per recuperare la memoria inutilizzata nell”heap.
- GPIO¶
General-purpose input/output. Il mezzo più semplice per controllare i segnali elettrici (comunemente chiamati «pin») su un microcontrollore. Le GPIO consentono tipicamente ai pin di essere ingresso o uscita e di impostare o leggere il loro valore digitale (logico «0» o «1»). MicroPython astrae l’accesso alle GPIO usando le classi
machine.Pinemachine.Signal.- GPIO port¶
Un gruppo di pin GPIO, solitamente basato sulle proprietà hardware di questi pin (ad esempio controllabili dallo stesso registro).
- heap¶
Una regione di RAM in cui MicroPython memorizza i dati dinamici. È gestita automaticamente dal Garbage Collector. MCU e schede diverse dispongono di quantità di RAM molto differenti per l’heap, il che influirà sulla complessità che il tuo programma può raggiungere.
- interned string¶
Un’ottimizzazione usata da MicroPython per migliorare l’efficienza nel lavorare con le stringhe. Una interned string è referenziata dalla sua identità (univoca) anziché dal suo indirizzo e può quindi essere confrontata rapidamente solo tramite il suo identificatore. Ciò significa inoltre che le stringhe identiche possono essere deduplicate in memoria. L’interning delle stringhe è quasi sempre invisibile all’utente.
- MCU¶
Microcontrollore. I microcontrollori dispongono solitamente di risorse molto inferiori rispetto a un desktop, un laptop o un telefono, ma sono più piccoli, più economici e richiedono molta meno energia. MicroPython è progettato per essere abbastanza piccolo e ottimizzato da poter funzionare su un comune microcontrollore moderno.
- micropython-lib¶
MicroPython viene (di solito) distribuito come un singolo file eseguibile/binario con solo pochi moduli integrati. Non esiste una libreria standard estesa paragonabile a quella di CPython. Esiste invece un progetto correlato, ma separato, micropython-lib che fornisce le implementazioni di molti moduli della libreria standard di CPython.
Alcuni dei moduli sono implementati in puro Python e funzionano su qualsiasi port; il firmware OpenMV congela una selezione di questi (driver per sensori, networking e helper di utilità) direttamente nell’immagine del firmware in modo che possano essere importati senza installare nulla. Un numero più ridotto di moduli micropython-lib usa FFI e funziona solo sul MicroPython Unix port; questi non sono disponibili sulle OpenMV Cam.
A differenza della libreria standard di CPython, i moduli di micropython-lib che non sono congelati nel firmware vengono installati singolarmente, copiandoli sul filesystem oppure, sulle schede con capacità di rete, usando mip.
- MicroPython port¶
MicroPython supporta diverse schede, RTOS e OS, e può essere adattato con relativa facilità a nuovi sistemi. MicroPython con supporto per un determinato sistema è chiamato «port» verso quel sistema. Port diversi possono avere funzionalità molto diverse. Questa documentazione intende essere un riferimento per le API generiche disponibili sui diversi port («MicroPython core»). Nota che alcuni port potrebbero comunque omettere alcune delle API descritte qui (ad esempio a causa di vincoli di risorse). Eventuali differenze di questo tipo, e le estensioni specifiche del port oltre le funzionalità del MicroPython core, sono descritte nella documentazione separata specifica del port.
- MicroPython Unix port¶
Il port unix è uno dei principali MicroPython port. È destinato a funzionare su sistemi operativi compatibili con POSIX, come Linux, MacOS, FreeBSD, Solaris, ecc. Funge inoltre da base per il port Windows. Il port Unix è molto utile per lo sviluppo e il test rapidi del linguaggio MicroPython e delle funzionalità indipendenti dalla macchina. Può anche funzionare in modo simile all’eseguibile
pythondi CPython.- mip¶
Un installatore di pacchetti per MicroPython (mip - «mip installs packages»). Installa i pacchetti MicroPython da micropython-lib, da GitHub o da URL arbitrari. mip può essere usato direttamente sul dispositivo sulle schede con capacità di rete e internamente da strumenti come mpremote.
Consulta Gestione dei pacchetti per maggiori informazioni sull’uso di
mip.- mpremote¶
Uno strumento per interagire con un dispositivo MicroPython. Vedi Controllo remoto di MicroPython: mpremote.
- .mpy file¶
L’output del cross-compiler. Una forma compilata di un .py file che contiene bytecode MicroPython anziché codice sorgente Python.
- native¶
Di solito si riferisce al «codice nativo», cioè codice macchina per il microcontrollore di destinazione (ARM Thumb sulle OpenMV Cam basate su Cortex-M). Il decoratore
@micropython.nativepuò essere applicato a una funzione MicroPython per generare codice nativo invece di bytecode per quella funzione, che sarà probabilmente più veloce ma userà più RAM.- port¶
Di solito è l’abbreviazione di MicroPython port, ma potrebbe anche riferirsi a GPIO port.
- .py file¶
Un file contenente codice sorgente Python.
- pyboard.py¶
Uno strumento lato host ora superato per interagire con una scheda MicroPython, eseguendo script e accedendo al filesystem tramite il REPL raw. Vedi il suo sostituto, mpremote.
- REPL¶
Un acronimo di «Read, Eval, Print, Loop». È il prompt interattivo di Python, utile per il debug o per testare brevi frammenti di codice. Le OpenMV Cam rendono il REPL disponibile a un PC host tramite USB (un dispositivo seriale USB CDC).
- small integer¶
MicroPython ottimizza la rappresentazione interna degli interi in modo che i valori «piccoli» non occupino spazio nell”heap e i calcoli che li coinvolgono non richiedano allocazione nell’heap. Sulla maggior parte dei port a 32 bit, ciò corrisponde ai valori nell’intervallo
-2**30 <= x < 2**30, ma questo dovrebbe essere considerato un dettaglio implementativo e non se ne dovrebbe fare affidamento.- stream¶
Conosciuto anche come «oggetto file-like». Un oggetto Python che fornisce accesso sequenziale in lettura-scrittura ai dati sottostanti. Un oggetto stream implementa una corrispondente interfaccia, che consiste in metodi come
read(),write(),readinto(),seek(),flush(),close(), ecc. Lo stream è un concetto importante in MicroPython; molti oggetti di I/O implementano l’interfaccia stream e possono quindi essere usati in modo coerente e intercambiabile in contesti diversi. Per maggiori informazioni sugli stream in MicroPython, consulta il moduloio.- UART¶
Acronimo di «Universal Asynchronous Receiver/Transmitter». È una periferica che invia dati su una coppia di pin (TX e RX). Molte schede includono un modo per rendere disponibile almeno una delle UART a un PC host come porta seriale tramite USB.
- upip¶
Un gestore di pacchetti per MicroPython ora obsoleto, ispirato a pip di CPython, ma molto più piccolo e con funzionalità ridotte. Vedi il suo sostituto, mip.
- webrepl¶
Un modo per connettersi al REPL (e trasferire file) su un dispositivo tramite Internet da un browser. Vedi https://micropython.org/webrepl