Glossário

baremetal

Um sistema sem sistema operativo (completo), por exemplo um sistema baseado em MCU. Quando executado num sistema baremetal, o MicroPython funciona efetivamente como um pequeno sistema operativo, executando programas de utilizador e fornecendo um interpretador de comandos (REPL).

protocolo de buffer

Qualquer objeto Python que possa ser convertido automaticamente em bytes, tal como os objetos bytes, bytearray, memoryview e str, que implementam todos o «protocolo de buffer».

placa

Normalmente refere-se a uma placa de circuito impresso (PCB) que contém um microcontrolador e componentes de suporte. O firmware do MicroPython é normalmente fornecido por placa, uma vez que o firmware contém tanto funcionalidade específica do MCU como funcionalidade ao nível da placa, como controladores ou nomes de pinos.

bytecode

Uma representação compacta de um programa Python gerada pela compilação do código-fonte Python. É o que a VM executa de facto. O bytecode é tipicamente gerado automaticamente em tempo de execução e é invisível para o utilizador. Note que, embora tanto o CPython como o MicroPython utilizem bytecode, o formato é diferente. Também é possível pré-compilar código-fonte offline utilizando o cross-compiler.

tuplo de propriedade do chamado

Esta é uma construção específica do MicroPython em que, por razões de eficiência, algumas funções ou métodos incorporados podem reutilizar o mesmo objeto tuplo subjacente para devolver dados. Isto evita ter de alocar um novo tuplo em cada chamada e reduz a fragmentação da heap. Os programas não devem manter referências a tuplos de propriedade do chamado e devem apenas extrair dados deles (ou fazer uma cópia).

CircuitPython

Uma variante do MicroPython desenvolvida pela Adafruit Industries.

CPython

O CPython é a implementação de referência da linguagem de programação Python, e a mais conhecida. No entanto, é uma de muitas implementações (incluindo Jython, IronPython, PyPy e MicroPython). Embora a implementação do MicroPython difira substancialmente do CPython, tem como objetivo manter a maior compatibilidade possível.

cross-compiler

Também conhecido como mpy-cross. Esta ferramenta é executada no PC e converte um .py file com código MicroPython num .mpy file com bytecode MicroPython. Isto significa que carrega mais rapidamente (a placa não precisa de compilar o código) e ocupa menos espaço na flash (o bytecode é mais eficiente em termos de espaço).

driver

Uma biblioteca MicroPython que implementa suporte para um componente específico, como um sensor ou ecrã.

FFI

Acrónimo de Foreign Function Interface (Interface de Função Estrangeira). Um mecanismo utilizado pelo MicroPython Unix port para aceder à funcionalidade do sistema operativo. Não está disponível em portas baremetal.

sistema de ficheiros

A maioria das portas e placas MicroPython fornece um sistema de ficheiros armazenado em flash, disponível para código de utilizador através das APIs de ficheiros padrão do Python, como open(). Algumas placas também disponibilizam este sistema de ficheiros interno ao anfitrião via armazenamento em massa USB.

módulo congelado

Um módulo Python que foi compilado cruzadamente e integrado na imagem de firmware. Isto reduz os requisitos de RAM, uma vez que o código é executado diretamente a partir da flash.

Coletor de Lixo

Um processo em segundo plano que é executado em Python (e MicroPython) para recuperar memória não utilizada na heap.

GPIO

Entrada/saída de uso geral. O meio mais simples de controlar sinais elétricos (vulgarmente designados «pinos») num microcontrolador. O GPIO normalmente permite que os pinos sejam entrada ou saída e que o seu valor digital («0» ou «1» lógico) seja definido ou lido. O MicroPython abstrai o acesso ao GPIO através das classes machine.Pin e machine.Signal.

porta GPIO

Um grupo de pinos GPIO, normalmente baseado em propriedades de hardware desses pinos (por exemplo, controláveis pelo mesmo registo).

heap

Uma região de RAM onde o MicroPython armazena dados dinâmicos. É gerida automaticamente pelo Garbage Collector. Diferentes MCUs e placas têm quantidades de RAM vastamente diferentes disponíveis para a heap, pelo que isto afetará a complexidade que o seu programa pode ter.

string internalizada

Uma otimização utilizada pelo MicroPython para melhorar a eficiência do trabalho com strings. Uma string internalizada é referenciada pela sua identidade (única) em vez do seu endereço e pode, por isso, ser rapidamente comparada apenas pelo seu identificador. Também significa que strings idênticas podem ser desduplicadas em memória. A internalização de strings é quase sempre invisível para o utilizador.

MCU

Microcontrolador. Os microcontroladores têm normalmente muito menos recursos do que um computador de secretária, portátil ou telemóvel, mas são mais pequenos, mais baratos e consomem muito menos energia. O MicroPython foi concebido para ser suficientemente pequeno e otimizado para funcionar num microcontrolador moderno típico.

micropython-lib

O MicroPython é (normalmente) distribuído como um único ficheiro executável/binário com apenas alguns módulos incorporados. Não existe uma biblioteca padrão extensiva comparável à do CPython. Em vez disso, existe um projeto relacionado, mas separado, micropython-lib, que fornece implementações para muitos módulos da biblioteca padrão do CPython.

Alguns dos módulos são implementados em Python puro e executam em qualquer porta; o firmware OpenMV congela uma seleção destes (controladores de sensores, rede e utilitários auxiliares) diretamente na imagem de firmware para que possam ser importados sem instalar nada. Um número menor de módulos micropython-lib utiliza FFI e funciona apenas no MicroPython Unix port; esses não estão disponíveis nas OpenMV Cams.

Ao contrário da stdlib do CPython, os módulos micropython-lib que não estão congelados são instalados individualmente — seja copiando-os para o sistema de ficheiros ou, em placas com capacidade de rede, utilizando mip.

porta MicroPython

O MicroPython suporta diferentes placas, RTOSes e SOs, e pode ser relativamente facilmente adaptado a novos sistemas. O MicroPython com suporte para um determinado sistema é designado «porta» para esse sistema. Diferentes portas podem ter funcionalidades muito diferentes. Esta documentação destina-se a ser uma referência das APIs genéricas disponíveis nas diferentes portas («núcleo MicroPython»). Note que algumas portas podem ainda omitir algumas APIs aqui descritas (por exemplo, devido a limitações de recursos). Quaisquer dessas diferenças, e extensões específicas da porta para além da funcionalidade do núcleo MicroPython, serão descritas na documentação separada específica da porta.

MicroPython Unix port

A porta unix é uma das principais portas MicroPython. Destina-se a ser executada em sistemas operativos compatíveis com POSIX, como Linux, MacOS, FreeBSD, Solaris, etc. Serve também de base para a porta Windows. A porta Unix é muito útil para o desenvolvimento rápido e teste da linguagem MicroPython e de funcionalidades independentes da máquina. Pode também funcionar de forma semelhante ao executável python do CPython.

mip

Um instalador de pacotes para MicroPython (mip — «mip installs packages»). Instala pacotes MicroPython a partir do micropython-lib, do GitHub ou de URLs arbitrários. O mip pode ser utilizado no dispositivo em placas com capacidade de rede e internamente por ferramentas como o mpremote.

Consulte Gestão de pacotes para mais informações sobre a utilização do mip.

mpremote

Uma ferramenta para interagir com um dispositivo MicroPython. Consulte Controlo remoto do MicroPython: mpremote.

ficheiro .mpy

O resultado do cross-compiler. Uma forma compilada de um .py file que contém bytecode MicroPython em vez de código-fonte Python.

nativo

Normalmente refere-se a «código nativo», ou seja, código máquina para o microcontrolador alvo (ARM Thumb nas OpenMV Cams baseadas em Cortex-M). O decorador @micropython.native pode ser aplicado a uma função MicroPython para gerar código nativo em vez de bytecode para essa função, o que provavelmente será mais rápido mas utilizará mais RAM.

porta

Normalmente abreviatura de MicroPython port, mas pode também referir-se a GPIO port.

ficheiro .py

Um ficheiro que contém código-fonte Python.

pyboard.py

Uma ferramenta do lado do anfitrião agora substituída para interagir com uma placa MicroPython — executando scripts e acedendo ao sistema de ficheiros através do REPL em modo bruto. Consulte o seu substituto, mpremote.

REPL

Acrónimo de «Read, Eval, Print, Loop» (Ler, Avaliar, Imprimir, Repetir). Este é o prompt interativo Python, útil para depuração ou teste de pequenos excertos de código. As OpenMV Cams disponibilizam o REPL a um PC anfitrião através de USB (um dispositivo série USB CDC).

inteiro pequeno

O MicroPython otimiza a representação interna dos inteiros de modo a que valores «pequenos» não ocupem espaço na heap e os cálculos com eles não requeiram alocação na heap. Na maioria das portas de 32 bits, isto corresponde a valores no intervalo -2**30 <= x < 2**30, mas tal deve ser considerado um detalhe de implementação e não deve ser utilizado como garantia.

stream

Também conhecido como «objeto semelhante a ficheiro». Um objeto Python que fornece acesso sequencial de leitura-escrita aos dados subjacentes. Um objeto stream implementa uma interface correspondente, que consiste em métodos como read(), write(), readinto(), seek(), flush(), close(), etc. Um stream é um conceito importante no MicroPython; muitos objetos de E/S implementam a interface stream e, por isso, podem ser utilizados de forma consistente e intercambiável em diferentes contextos. Para mais informações sobre streams no MicroPython, consulte o módulo io.

UART

Acrónimo de «Universal Asynchronous Receiver/Transmitter» (Recetor/Transmissor Assíncrono Universal). Trata-se de um periférico que envia dados através de um par de pinos (TX e RX). Muitas placas incluem uma forma de disponibilizar pelo menos um dos UARTs a um PC anfitrião como porta série via USB.

upip

Um gestor de pacotes agora obsoleto para MicroPython, inspirado no pip do CPython, mas muito mais pequeno e com funcionalidade reduzida. Consulte o seu substituto, mip.

webrepl

Uma forma de ligar ao REPL (e transferir ficheiros) num dispositivo através da internet a partir de um navegador. Consulte https://micropython.org/webrepl