Глоссарий

baremetal

Система без (полноценной) операционной системы, например система на основе MCU. При работе на системе baremetal MicroPython фактически функционирует как небольшая операционная система, запуская пользовательские программы и предоставляя интерпретатор команд (REPL).

buffer protocol

Любой объект Python, который может быть автоматически преобразован в байты, такой как объекты bytes, bytearray, memoryview и str, все из которых реализуют «протокол буфера» (buffer protocol).

board

Обычно это относится к печатной плате (PCB), содержащей микроконтроллер и сопутствующие компоненты. Прошивка MicroPython обычно предоставляется отдельно для каждой платы, поскольку прошивка содержит как функциональность, специфичную для MCU, так и функциональность уровня платы, такую как драйверы или имена выводов.

bytecode

Компактное представление программы на Python, которое генерируется при компиляции исходного кода Python. Именно это фактически выполняет виртуальная машина (VM). Байт-код обычно генерируется автоматически во время выполнения и невидим для пользователя. Обратите внимание, что хотя CPython и MicroPython используют байт-код, его формат различается. Вы также можете предварительно скомпилировать исходный код оффлайн с помощью кросс-компилятора.

callee-owned tuple

Это специфичная для MicroPython конструкция, в которой из соображений эффективности некоторые встроенные функции или методы могут повторно использовать один и тот же базовый объект кортежа для возврата данных. Это позволяет избежать выделения нового кортежа при каждом вызове и уменьшает фрагментацию кучи. Программы не должны удерживать ссылки на принадлежащие вызываемому объекту кортежи, а вместо этого должны только извлекать из них данные (или делать копию).

CircuitPython

Вариант MicroPython, разработанный Adafruit Industries.

CPython

CPython — это эталонная реализация языка программирования Python и наиболее известная из них. Однако это лишь одна из множества реализаций (включая Jython, IronPython, PyPy и MicroPython). Хотя реализация MicroPython существенно отличается от CPython, она стремится сохранить как можно большую совместимость.

cross-compiler

Также известен как mpy-cross. Этот инструмент работает на вашем ПК и преобразует .py-файл, содержащий код MicroPython, в .mpy-файл, содержащий байт-код MicroPython. Это означает, что он загружается быстрее (плате не нужно компилировать код) и использует меньше места на флеш-памяти (байт-код более эффективен по объёму).

driver

Библиотека MicroPython, реализующая поддержку определённого компонента, такого как датчик или дисплей.

FFI

Аббревиатура от Foreign Function Interface (интерфейс внешних функций). Механизм, используемый Unix-портом MicroPython для доступа к функциональности операционной системы. Он недоступен на портах baremetal.

filesystem

Большинство портов и плат MicroPython предоставляют файловую систему, хранящуюся во флеш-памяти, которая доступна пользовательскому коду через стандартные файловые API Python, такие как open(). Некоторые платы также делают эту внутреннюю файловую систему доступной для хоста через USB-накопитель.

frozen module

Модуль Python, который был кросс-скомпилирован и встроен в образ прошивки. Это снижает требования к ОЗУ, поскольку код выполняется непосредственно из флеш-памяти.

Garbage Collector

Фоновый процесс, который работает в Python (и MicroPython) для освобождения неиспользуемой памяти в куче.

GPIO

General-purpose input/output (ввод-вывод общего назначения). Простейшее средство управления электрическими сигналами (обычно называемыми «выводами») на микроконтроллере. GPIO обычно позволяет выводам быть либо входами, либо выходами, а также устанавливать или получать их цифровое значение (логический «0» или «1»). MicroPython абстрагирует доступ к GPIO с помощью классов machine.Pin и machine.Signal.

GPIO port

Группа выводов GPIO, обычно основанная на аппаратных свойствах этих выводов (например, управляемых одним и тем же регистром).

heap

Область ОЗУ, где MicroPython хранит динамические данные. Она управляется автоматически с помощью сборщика мусора. Разные MCU и платы имеют сильно различающиеся объёмы ОЗУ, доступные для кучи, поэтому это будет влиять на то, насколько сложной может быть ваша программа.

interned string

Оптимизация, используемая MicroPython для повышения эффективности работы со строками. Интернированная строка ссылается по своей (уникальной) идентичности, а не по адресу, и поэтому может быть быстро сравнена просто по идентификатору. Это также означает, что идентичные строки могут дедуплицироваться в памяти. Интернирование строк почти всегда невидимо для пользователя.

MCU

Микроконтроллер. Микроконтроллеры обычно имеют гораздо меньше ресурсов, чем настольный компьютер, ноутбук или телефон, но они меньше, дешевле и требуют гораздо меньше энергии. MicroPython разработан так, чтобы быть достаточно компактным и оптимизированным для работы на среднем современном микроконтроллере.

micropython-lib

MicroPython (обычно) распространяется как один исполняемый/двоичный файл всего с несколькими встроенными модулями. Здесь нет обширной стандартной библиотеки, сопоставимой со стандартной библиотекой CPython. Вместо этого существует связанный, но отдельный проект micropython-lib, который предоставляет реализации многих модулей из стандартной библиотеки CPython.

Некоторые модули реализованы на чистом Python и работают на любом порте; прошивка OpenMV встраивает (freeze) выборку из них (драйверы датчиков, сетевые модули и вспомогательные утилиты) непосредственно в образ прошивки, чтобы их можно было импортировать без установки чего-либо. Меньшее число модулей micropython-lib использует FFI и работает только на Unix-порте MicroPython; они недоступны на OpenMV Cam.

В отличие от стандартной библиотеки CPython, модули micropython-lib, не встроенные в прошивку, устанавливаются по отдельности — либо путём копирования их в файловую систему, либо, на платах с поддержкой сети, с помощью mip.

MicroPython port

MicroPython поддерживает различные платы, RTOS и ОС, и может быть относительно легко адаптирован к новым системам. MicroPython с поддержкой определённой системы называется «портом» на эту систему. Разные порты могут иметь сильно различающуюся функциональность. Эта документация задумана как справочник по общим API, доступным в разных портах («ядро MicroPython»). Обратите внимание, что некоторые порты всё же могут опускать некоторые описанные здесь API (например, из-за ограничений ресурсов). Любые такие различия, а также специфичные для порта расширения за пределами функциональности ядра MicroPython, описываются в отдельной документации, специфичной для порта.

MicroPython Unix port

Unix-порт является одним из основных портов MicroPython. Он предназначен для работы на POSIX-совместимых операционных системах, таких как Linux, MacOS, FreeBSD, Solaris и т. д. Он также служит основой для порта Windows. Unix-порт очень полезен для быстрой разработки и тестирования языка MicroPython и машинно-независимых функций. Он также может работать аналогично исполняемому файлу python из CPython.

mip

Установщик пакетов для MicroPython (mip — «mip installs packages»). Он устанавливает пакеты MicroPython либо из micropython-lib, GitHub, либо из произвольных URL. mip можно использовать на устройстве на платах с поддержкой сети, а также внутренне такими инструментами, как mpremote.

См. Управление пакетами для получения дополнительной информации об использовании mip.

mpremote

Инструмент для взаимодействия с устройством MicroPython. См. Удалённое управление MicroPython: mpremote.

.mpy file

Результат работы кросс-компилятора. Скомпилированная форма .py-файла, содержащая байт-код MicroPython вместо исходного кода Python.

native

Обычно относится к «нативному коду», то есть машинному коду для целевого микроконтроллера (ARM Thumb на OpenMV Cam на базе Cortex-M). Декоратор @micropython.native может быть применён к функции MicroPython для генерации нативного кода вместо байт-кода для этой функции, что, вероятно, будет быстрее, но использует больше ОЗУ.

port

Обычно сокращение от порт MicroPython, но может также относиться к порту GPIO.

.py file

Файл, содержащий исходный код Python.

pyboard.py

Ныне устаревший инструмент на стороне хоста для взаимодействия с платой MicroPython — запуска скриптов и доступа к файловой системе через сырой REPL. См. его замену, mpremote.

REPL

Аббревиатура от «Read, Eval, Print, Loop» (чтение, вычисление, вывод, цикл). Это интерактивная командная строка Python, полезная для отладки или тестирования коротких фрагментов кода. OpenMV Cam делают REPL доступным для хост-ПК через USB (последовательное устройство USB CDC).

small integer

MicroPython оптимизирует внутреннее представление целых чисел так, что «малые» значения не занимают место в куче, а вычисления с ними не требуют выделения памяти в куче. На большинстве 32-битных портов это соответствует значениям в интервале -2**30 <= x < 2**30, но это следует считать деталью реализации, на которую не стоит полагаться.

stream

Также известен как «файлоподобный объект» (file-like object). Объект Python, который обеспечивает последовательный доступ на чтение и запись к базовым данным. Объект потока реализует соответствующий интерфейс, состоящий из таких методов, как read(), write(), readinto(), seek(), flush(), close() и т. д. Поток — важная концепция в MicroPython; многие объекты ввода-вывода реализуют интерфейс потока и поэтому могут единообразно и взаимозаменяемо использоваться в разных контекстах. Для получения дополнительной информации о потоках в MicroPython см. модуль io.

UART

Аббревиатура от «Universal Asynchronous Receiver/Transmitter» (универсальный асинхронный приёмопередатчик). Это периферийное устройство, которое отправляет данные по паре выводов (TX и RX). Многие платы предоставляют способ сделать хотя бы один из UART доступным для хост-ПК в качестве последовательного порта через USB.

upip

Ныне устаревший менеджер пакетов для MicroPython, вдохновлённый pip из CPython, но гораздо меньший и с урезанной функциональностью. См. его замену, mip.

webrepl

Способ подключения к REPL (и передачи файлов) на устройстве через интернет из браузера. См. https://micropython.org/webrepl