Glosario¶
- baremetal¶
Un sistema sin un sistema operativo (completo), por ejemplo un sistema basado en un MCU. Al ejecutarse en un sistema baremetal, MicroPython funciona efectivamente como un pequeño sistema operativo, ejecutando los programas del usuario y proporcionando un intérprete de comandos (REPL).
- protocolo de búfer¶
Cualquier objeto de Python que se pueda convertir automáticamente en bytes, como los objetos
bytes,bytearray,memoryviewystr, que implementan todos el «protocolo de búfer».- placa¶
Normalmente se refiere a una placa de circuito impreso (PCB) que contiene un microcontrolador y componentes de soporte. El firmware de MicroPython se proporciona normalmente por placa, ya que el firmware contiene tanto funcionalidad específica del MCU como funcionalidad a nivel de placa, como controladores o nombres de pines.
- bytecode¶
Una representación compacta de un programa de Python que se genera al compilar el código fuente de Python. Esto es lo que la VM ejecuta realmente. El bytecode se genera normalmente de forma automática en tiempo de ejecución y es invisible para el usuario. Ten en cuenta que, aunque tanto CPython como MicroPython usan bytecode, el formato es diferente. También puedes precompilar el código fuente sin conexión usando el compilador cruzado.
- callee-owned tuple¶
Esta es una construcción específica de MicroPython en la que, por razones de eficiencia, algunas funciones o métodos incorporados pueden reutilizar el mismo objeto de tupla subyacente para devolver datos. Esto evita tener que asignar una nueva tupla en cada llamada y reduce la fragmentación del heap. Los programas no deben conservar referencias a las callee-owned tuples y, en su lugar, solo extraer datos de ellas (o hacer una copia).
- CircuitPython¶
Una variante de MicroPython desarrollada por Adafruit Industries.
- CPython¶
CPython es la implementación de referencia del lenguaje de programación Python, y la más conocida. Sin embargo, es una de muchas implementaciones (incluidas Jython, IronPython, PyPy y MicroPython). Aunque la implementación de MicroPython difiere sustancialmente de CPython, su objetivo es mantener la mayor compatibilidad posible.
- cross-compiler¶
También conocido como
mpy-cross. Esta herramienta se ejecuta en tu PC y convierte un archivo .py que contiene código de MicroPython en un archivo .mpy que contiene bytecode de MicroPython. Esto significa que se carga más rápido (la placa no tiene que compilar el código) y usa menos espacio en la memoria flash (el bytecode es más eficiente en cuanto a espacio).- driver¶
Una biblioteca de MicroPython que implementa soporte para un componente concreto, como un sensor o una pantalla.
- FFI¶
Acrónimo de Foreign Function Interface (interfaz de funciones externas). Un mecanismo que utiliza el puerto Unix de MicroPython para acceder a la funcionalidad del sistema operativo. No está disponible en los puertos baremetal.
- filesystem¶
La mayoría de los puertos y placas de MicroPython proporcionan un sistema de archivos almacenado en la memoria flash que está disponible para el código del usuario a través de las APIs estándar de archivos de Python, como
open(). Algunas placas también hacen accesible este sistema de archivos interno al anfitrión a través del almacenamiento masivo USB.- frozen module¶
Un módulo de Python que ha sido compilado de forma cruzada e integrado en la imagen del firmware. Esto reduce los requisitos de RAM, ya que el código se ejecuta directamente desde la memoria flash.
- Recolector de basura¶
Un proceso en segundo plano que se ejecuta en Python (y en MicroPython) para recuperar la memoria no utilizada del heap.
- GPIO¶
Entrada/salida de propósito general (general-purpose input/output). El medio más sencillo para controlar señales eléctricas (comúnmente llamadas «pines») en un microcontrolador. La GPIO normalmente permite que los pines sean de entrada o de salida, y establecer o leer su valor digital («0» o «1» lógico). MicroPython abstrae el acceso a la GPIO mediante las clases
machine.Pinymachine.Signal.- GPIO port¶
Un grupo de pines GPIO, normalmente basado en las propiedades de hardware de estos pines (por ejemplo, que sean controlables por el mismo registro).
- heap¶
Una región de RAM donde MicroPython almacena datos dinámicos. La gestiona automáticamente el Recolector de basura. Los distintos MCU y placas tienen cantidades muy diferentes de RAM disponible para el heap, lo que afectará a la complejidad que puede tener tu programa.
- interned string¶
Una optimización que utiliza MicroPython para mejorar la eficiencia del trabajo con cadenas. Una cadena internada se referencia por su identidad (única) en lugar de por su dirección y, por tanto, se puede comparar rápidamente solo por su identificador. También significa que las cadenas idénticas se pueden deduplicar en memoria. La internación de cadenas es casi siempre invisible para el usuario.
- MCU¶
Microcontrolador. Los microcontroladores suelen tener muchos menos recursos que un ordenador de escritorio, un portátil o un teléfono, pero son más pequeños, más baratos y requieren mucha menos energía. MicroPython está diseñado para ser lo bastante pequeño y optimizado como para ejecutarse en un microcontrolador moderno medio.
- micropython-lib¶
MicroPython se distribuye (normalmente) como un único archivo ejecutable/binario con solo unos pocos módulos incorporados. No hay una biblioteca estándar extensa comparable a la de CPython. En su lugar, existe un proyecto relacionado pero independiente, micropython-lib, que proporciona implementaciones de muchos módulos de la biblioteca estándar de CPython.
Algunos de los módulos están implementados en Python puro y se ejecutan en cualquier puerto; el firmware de OpenMV congela una selección de estos (controladores de sensores, redes y utilidades auxiliares) directamente en la imagen del firmware para que se puedan importar sin instalar nada. Un número menor de módulos de micropython-lib usan FFI y solo funcionan en el puerto Unix de MicroPython; estos no están disponibles en las OpenMV Cam.
A diferencia de la biblioteca estándar de CPython, los módulos de micropython-lib que no están congelados se instalan individualmente, ya sea copiándolos en el sistema de archivos o, en placas con capacidad de red, usando mip.
- MicroPython port¶
MicroPython admite distintas placas, RTOS y sistemas operativos, y se puede adaptar con relativa facilidad a sistemas nuevos. A MicroPython con soporte para un sistema concreto se le denomina un «puerto» (port) a ese sistema. Los distintos puertos pueden tener funcionalidades muy diferentes. Esta documentación pretende ser una referencia de las APIs genéricas disponibles en los distintos puertos (el «núcleo de MicroPython»). Ten en cuenta que algunos puertos pueden seguir omitiendo algunas de las APIs descritas aquí (por ejemplo, debido a limitaciones de recursos). Cualquiera de estas diferencias, así como las extensiones específicas de cada puerto más allá de la funcionalidad del núcleo de MicroPython, se describirían en la documentación específica de cada puerto, que es independiente.
- MicroPython Unix port¶
El puerto Unix es uno de los principales puertos de MicroPython. Está pensado para ejecutarse en sistemas operativos compatibles con POSIX, como Linux, MacOS, FreeBSD, Solaris, etc. También sirve de base para el puerto de Windows. El puerto Unix es muy útil para el desarrollo y las pruebas rápidas del lenguaje MicroPython y de las características independientes de la máquina. También puede funcionar de forma similar al ejecutable
pythonde CPython.- mip¶
Un instalador de paquetes para MicroPython (mip - «mip installs packages»). Instala paquetes de MicroPython desde micropython-lib, GitHub o URLs arbitrarias. mip se puede usar en el propio dispositivo en placas con capacidad de red, e internamente lo usan herramientas como mpremote.
Consulta Gestión de paquetes para obtener más información sobre el uso de
mip.- mpremote¶
Una herramienta para interactuar con un dispositivo MicroPython. Consulta Control remoto de MicroPython: mpremote.
- .mpy file¶
La salida del compilador cruzado. Una forma compilada de un archivo .py que contiene bytecode de MicroPython en lugar de código fuente de Python.
- native¶
Normalmente se refiere al «código nativo», es decir, el código máquina para el microcontrolador de destino (ARM Thumb en las OpenMV Cam basadas en Cortex-M). El decorador
@micropython.nativese puede aplicar a una función de MicroPython para generar código nativo en lugar de bytecode para esa función, lo que probablemente será más rápido pero usará más RAM.- port¶
Normalmente es la abreviatura de puerto de MicroPython, pero también puede referirse a GPIO port.
- .py file¶
Un archivo que contiene código fuente de Python.
- pyboard.py¶
Una herramienta del lado del anfitrión, ya superada, para interactuar con una placa MicroPython: ejecutar scripts y acceder al sistema de archivos a través del REPL en bruto. Consulta su reemplazo, mpremote.
- REPL¶
Un acrónimo de «Read, Eval, Print, Loop» (leer, evaluar, imprimir, repetir). Es el prompt interactivo de Python, útil para depurar o probar fragmentos cortos de código. Las OpenMV Cam ponen el REPL a disposición de un PC anfitrión a través de USB (un dispositivo serie USB CDC).
- small integer¶
MicroPython optimiza la representación interna de los enteros de modo que los valores «pequeños» no ocupen espacio en el heap, y los cálculos con ellos no requieran asignación en el heap. En la mayoría de los puertos de 32 bits, esto corresponde a valores en el intervalo
-2**30 <= x < 2**30, pero esto debe considerarse un detalle de implementación y no debe darse por sentado.- stream¶
También conocido como «objeto similar a un archivo» (file-like object). Un objeto de Python que proporciona acceso secuencial de lectura y escritura a los datos subyacentes. Un objeto de flujo (stream) implementa una interfaz correspondiente, que consta de métodos como
read(),write(),readinto(),seek(),flush(),close(), etc. Un flujo es un concepto importante en MicroPython; muchos objetos de E/S implementan la interfaz de flujo y, por tanto, se pueden usar de forma coherente e intercambiable en distintos contextos. Para obtener más información sobre los flujos en MicroPython, consulta el móduloio.- UART¶
Acrónimo de «Universal Asynchronous Receiver/Transmitter» (transmisor-receptor asíncrono universal). Es un periférico que envía datos a través de un par de pines (TX y RX). Muchas placas incluyen una forma de hacer que al menos uno de los UART esté disponible para un PC anfitrión como puerto serie a través de USB.
- upip¶
Un gestor de paquetes para MicroPython ya obsoleto, inspirado en el pip de CPython, pero mucho más pequeño y con funcionalidad reducida. Consulta su reemplazo, mip.
- webrepl¶
Una forma de conectarse al REPL (y transferir archivos) de un dispositivo a través de internet desde un navegador. Consulta https://micropython.org/webrepl