Глоссарий¶
- 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