Glossário¶
- baremetal¶
Um sistema sem um sistema operacional (completo), por exemplo um sistema baseado em MCU. Ao rodar em um sistema baremetal, o MicroPython funciona efetivamente como um pequeno sistema operacional, executando programas do usuário e fornecendo um interpretador de comandos (REPL).
- buffer protocol¶
Qualquer objeto Python que pode ser convertido automaticamente em bytes, como objetos
bytes,bytearray,memoryviewestr, que implementam o “buffer protocol”.- board¶
Normalmente isso se refere a uma placa de circuito impresso (PCB) contendo um microcontrolador e componentes de suporte. O firmware do MicroPython é normalmente fornecido por placa, pois o firmware contém tanto funcionalidades específicas do MCU quanto funcionalidades em nível de placa, como drivers ou nomes de pinos.
- bytecode¶
Uma representação compacta de um programa Python que é gerada ao compilar o código-fonte Python. É isso que a VM realmente executa. O bytecode é normalmente gerado automaticamente em tempo de execução e é invisível para o usuário. Observe que, embora o CPython e o MicroPython usem bytecode, o formato é diferente. Você também pode pré-compilar o código-fonte offline usando o cross-compiler.
- callee-owned tuple¶
Esta é uma construção específica do MicroPython na qual, por motivos de eficiência, algumas funções ou métodos integrados podem reutilizar o mesmo objeto de tupla subjacente para retornar dados. Isso evita ter que alocar uma nova tupla a cada chamada e reduz a fragmentação do heap. Os programas não devem manter referências a callee-owned tuples e, em vez disso, devem apenas extrair os dados delas (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, ela busca manter o máximo de compatibilidade possível.
- cross-compiler¶
Também conhecido como
mpy-cross. Esta ferramenta roda no seu PC e converte um .py file contendo código MicroPython em um .mpy file contendo bytecode do MicroPython. Isso significa que ele carrega mais rápido (a placa não precisa compilar o código) e usa menos espaço na flash (o bytecode é mais eficiente em espaço).- driver¶
Uma biblioteca do MicroPython que implementa suporte para um componente específico, como um sensor ou display.
- FFI¶
Sigla para Foreign Function Interface. Um mecanismo usado pela MicroPython Unix port para acessar funcionalidades do sistema operacional. Isso não está disponível em ports baremetal.
- filesystem¶
A maioria dos ports e placas do MicroPython fornece um sistema de arquivos armazenado na flash que está disponível para o código do usuário por meio das APIs padrão de arquivos do Python, como
open(). Algumas placas também tornam esse sistema de arquivos interno acessível ao host via armazenamento em massa USB.- frozen module¶
Um módulo Python que foi compilado de forma cruzada e empacotado na imagem do firmware. Isso reduz os requisitos de RAM, pois o código é executado diretamente da flash.
- Garbage Collector¶
Um processo em segundo plano que roda em Python (e MicroPython) para recuperar memória não utilizada no heap.
- GPIO¶
Entrada/saída de propósito geral (general-purpose input/output). O meio mais simples de controlar sinais elétricos (comumente chamados de “pinos”) em um microcontrolador. O GPIO normalmente permite que os pinos sejam entrada ou saída e que se defina ou leia seu valor digital (“0” ou “1” lógico). O MicroPython abstrai o acesso ao GPIO usando as classes
machine.Pinemachine.Signal.- GPIO port¶
Um grupo de pinos GPIO, geralmente baseado nas propriedades de hardware desses pinos (por exemplo, controláveis pelo mesmo registrador).
- heap¶
Uma região da RAM onde o MicroPython armazena dados dinâmicos. Ela é gerenciada automaticamente pelo Garbage Collector. Diferentes MCUs e placas têm quantidades muito distintas de RAM disponível para o heap, o que afetará a complexidade que seu programa pode ter.
- interned string¶
Uma otimização usada pelo MicroPython para melhorar a eficiência do trabalho com strings. Uma interned string é referenciada pela sua identidade (única) em vez de pelo seu endereço e, portanto, pode ser comparada rapidamente apenas pelo seu identificador. Isso também significa que strings idênticas podem ser desduplicadas na memória. A internação de strings é quase sempre invisível para o usuário.
- MCU¶
Microcontrolador. Os microcontroladores geralmente têm muito menos recursos do que um desktop, laptop ou telefone, mas são menores, mais baratos e exigem muito menos energia. O MicroPython é projetado para ser pequeno e otimizado o suficiente para rodar em um microcontrolador moderno comum.
- micropython-lib¶
O MicroPython é (geralmente) distribuído como um único arquivo executável/binário com apenas alguns módulos integrados. Não há uma biblioteca padrão extensa comparável à do CPython. Em vez disso, há um projeto relacionado, mas separado, o 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 rodam em qualquer port; o firmware da OpenMV congela uma seleção deles (drivers de sensores, rede e utilitários auxiliares) diretamente na imagem do firmware, de modo que podem ser importados sem instalar nada. Um número menor de módulos do micropython-lib usa FFI e só funciona na MicroPython Unix port; esses não estão disponíveis nas OpenMV Cams.
Diferentemente da stdlib do CPython, os módulos do micropython-lib que não são congelados são instalados individualmente — seja copiando-os para o sistema de arquivos ou, em placas com capacidade de rede, usando o mip.
- MicroPython port¶
O MicroPython suporta diferentes placas, RTOSes e SOs, e pode ser adaptado com relativa facilidade a novos sistemas. O MicroPython com suporte a um sistema específico é chamado de “port” para aquele sistema. Diferentes ports podem ter funcionalidades amplamente distintas. Esta documentação destina-se a ser uma referência das APIs genéricas disponíveis em diferentes ports (“núcleo do MicroPython”). Observe que alguns ports podem ainda omitir algumas APIs descritas aqui (por exemplo, devido a restrições de recursos). Quaisquer diferenças desse tipo, e extensões específicas do port além da funcionalidade do núcleo do MicroPython, seriam descritas na documentação separada específica de cada port.
- MicroPython Unix port¶
A unix port é um dos principais ports do MicroPython. Ela é destinada a rodar em sistemas operacionais compatíveis com POSIX, como Linux, MacOS, FreeBSD, Solaris, etc. Ela também serve de base para a port do Windows. A Unix port é muito útil para o desenvolvimento e teste rápidos da linguagem MicroPython e de recursos independentes de máquina. Ela também pode funcionar de maneira semelhante ao executável
pythondo CPython.- mip¶
Um instalador de pacotes para o MicroPython (mip - “mip installs packages”). Ele instala pacotes do MicroPython a partir do micropython-lib, do GitHub ou de URLs arbitrárias. O mip pode ser usado no dispositivo em placas com capacidade de rede, e internamente por ferramentas como o mpremote.
Veja Gerenciamento de pacotes para mais informações sobre como usar o
mip.- mpremote¶
Uma ferramenta para interagir com um dispositivo MicroPython. Veja Controle remoto do MicroPython: mpremote.
- .mpy file¶
A saída do cross-compiler. Uma forma compilada de um .py file que contém bytecode do MicroPython em vez de código-fonte Python.
- native¶
Geralmente refere-se a “código nativo”, ou seja, código de máquina para o microcontrolador alvo (ARM Thumb nas OpenMV Cams baseadas em Cortex-M). O decorador
@micropython.nativepode ser aplicado a uma função MicroPython para gerar código nativo em vez de bytecode para aquela função, o que provavelmente será mais rápido, mas usará mais RAM.- port¶
Geralmente é a forma abreviada de MicroPython port, mas também pode se referir a GPIO port.
- .py file¶
Um arquivo contendo código-fonte Python.
- pyboard.py¶
Uma ferramenta do lado do host, agora substituída, para interagir com uma placa MicroPython — executando scripts e acessando o sistema de arquivos pelo REPL bruto. Veja sua substituta, o mpremote.
- REPL¶
Uma sigla para “Read, Eval, Print, Loop”. Este é o prompt interativo do Python, útil para depurar ou testar pequenos trechos de código. As OpenMV Cams disponibilizam o REPL para um PC host via USB (um dispositivo serial USB CDC).
- small integer¶
O MicroPython otimiza a representação interna de inteiros de modo que valores “pequenos” não ocupem espaço no heap, e cálculos com eles não exijam alocação no heap. Na maioria dos ports de 32 bits, isso corresponde a valores no intervalo
-2**30 <= x < 2**30, mas isso deve ser considerado um detalhe de implementação e não algo em que se basear.- stream¶
Também conhecido como “objeto semelhante a arquivo” (file-like object). Um objeto Python que fornece acesso sequencial de leitura e escrita aos dados subjacentes. Um objeto de 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 I/O implementam a interface de stream e, portanto, podem ser usados de forma consistente e intercambiável em diferentes contextos. Para mais informações sobre streams no MicroPython, veja o móduloio.- UART¶
Sigla para “Universal Asynchronous Receiver/Transmitter”. É um periférico que envia dados por um par de pinos (TX e RX). Muitas placas incluem uma forma de disponibilizar ao menos uma das UARTs para um PC host como uma porta serial via USB.
- upip¶
Um gerenciador de pacotes para o MicroPython, agora obsoleto, inspirado no pip do CPython, mas muito menor e com funcionalidade reduzida. Veja sua substituta, o mip.
- webrepl¶
Uma forma de conectar-se ao REPL (e transferir arquivos) em um dispositivo pela internet a partir de um navegador. Veja https://micropython.org/webrepl