Глоссарий#

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