Глосарій

baremetal

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

buffer protocol

Будь-який об’єкт Python, який може бути автоматично перетворений у байти, наприклад об’єкти bytes, bytearray, memoryview і str, які всі реалізують «buffer protocol».

board

Зазвичай це стосується друкованої плати (PCB), що містить мікроконтролер та допоміжні компоненти. Мікропрограма MicroPython зазвичай надається для кожної плати окремо, оскільки вона містить як функціональність, специфічну для MCU, так і функціональність рівня плати, наприклад драйвери або назви виводів.

bytecode

Компактне представлення програми Python, що генерується шляхом компіляції вихідного коду Python. Саме це виконує VM. Bytecode зазвичай генерується автоматично під час виконання і не видний користувачеві. Зверніть увагу, що хоча CPython і MicroPython обидва використовують bytecode, їхній формат різний. Ви також можете попередньо компілювати вихідний код у режимі офлайн за допомогою cross-compiler.

callee-owned tuple

Це конструкція, специфічна для MicroPython, де з міркувань ефективності деякі вбудовані функції або методи можуть повторно використовувати один і той самий базовий об’єкт кортежу для повернення даних. Це дозволяє уникнути виділення нового кортежу при кожному виклику та зменшує фрагментацію heap. Програми не повинні зберігати посилання на callee-owned tuple, а лише витягувати з них дані (або робити копію).

CircuitPython

Варіант MicroPython, розроблений компанією Adafruit Industries.

CPython

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

cross-compiler

Також відомий як mpy-cross. Цей інструмент запускається на вашому ПК і перетворює .py file, що містить код MicroPython, на .mpy file, що містить bytecode MicroPython. Це означає, що код завантажується швидше (платі не потрібно його компілювати) і займає менше місця на флеш-пам’яті (bytecode компактніший).

driver

Бібліотека MicroPython, що реалізує підтримку певного компонента, наприклад датчика або дисплея.

FFI

Абревіатура від Foreign Function Interface. Механізм, що використовується MicroPython Unix port для доступу до функціональності операційної системи. Недоступний на baremetal портах.

filesystem

Більшість портів і плат MicroPython надають файлову систему, збережену у флеш-пам’яті, доступну для коду користувача через стандартні Python API для роботи з файлами, такі як open(). Деякі плати також надають доступ до цієї внутрішньої файлової системи для хоста через USB-сховище.

frozen module

Модуль Python, який був cross-скомпільований та включений до образу мікропрограми. Це зменшує потреби в оперативній пам’яті, оскільки код виконується безпосередньо з флеш-пам’яті.

Garbage Collector

Фоновий процес, що виконується в Python (і MicroPython) для повернення невикористаної пам’яті в heap.

GPIO

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

GPIO port

Група виводів GPIO, зазвичай заснована на апаратних властивостях цих виводів (наприклад, керованих одним і тим самим регістром).

heap

Область оперативної пам’яті, де MicroPython зберігає динамічні дані. Керується автоматично Garbage Collector. Різні MCU і плати мають дуже різні обсяги оперативної пам’яті, доступної для heap, що впливає на складність програм.

interned string

Оптимізація, що використовується MicroPython для підвищення ефективності роботи з рядками. Interned string посилається за своєю (унікальною) ідентичністю, а не за адресою, і тому може бути швидко порівняна лише за ідентифікатором. Це також означає, що ідентичні рядки можуть бути де-дублюватися в пам’яті. Інтернування рядків майже завжди непомітне для користувача.

MCU

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

micropython-lib

MicroPython (зазвичай) розповсюджується як єдиний виконуваний/бінарний файл лише з кількома вбудованими модулями. Немає розширеної стандартної бібліотеки, порівнянної з бібліотекою CPython. Натомість існує суміжний, але окремий проєкт micropython-lib, що надає реалізації для багатьох модулів зі стандартної бібліотеки CPython.

Деякі модулі реалізовані на чистому Python і працюють на будь-якому порту; мікропрограма OpenMV вбудовує добірку таких модулів (драйвери датчиків, мережеві та допоміжні утиліти) безпосередньо в образ мікропрограми, тому їх можна імпортувати без встановлення. Менша кількість модулів micropython-lib використовують FFI і працюють лише на MicroPython Unix port; на OpenMV Cams вони недоступні.

На відміну від стандартної бібліотеки 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

Результат роботи cross-compiler. Скомпільована форма .py file, що містить bytecode MicroPython замість вихідного коду Python.

native

Зазвичай стосується «нативного коду», тобто машинного коду для цільового мікроконтролера (ARM Thumb на OpenMV Cams на базі Cortex-M). Декоратор @micropython.native може бути застосований до функції MicroPython для генерації нативного коду замість bytecode, що, ймовірно, буде швидшим, але використовуватиме більше оперативної пам’яті.

port

Зазвичай скорочення від MicroPython port, але може також стосуватися GPIO port.

.py file

Файл, що містить вихідний код Python.

pyboard.py

Застарілий інструмент на боці хоста для взаємодії з платою MicroPython — запуску скриптів та доступу до файлової системи через сирий REPL. Дивіться його заміну mpremote.

REPL

Абревіатура від «Read, Eval, Print, Loop» (Читати, Обчислювати, Виводити, Повторювати). Це інтерактивний Python-запит, корисний для налагодження або тестування коротких фрагментів коду. OpenMV Cams надають REPL доступ до хост-комп’ютера через USB (USB CDC серійний пристрій).

small integer

MicroPython оптимізує внутрішнє представлення цілих чисел таким чином, що «малі» значення не займають місця в heap, а обчислення з ними не потребують виділення heap-пам’яті. На більшості 32-бітних портів це відповідає значенням у діапазоні -2**30 <= x < 2**30, однак це слід вважати деталлю реалізації і не покладатися на неї.

stream

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

UART

Абревіатура від «Universal Asynchronous Receiver/Transmitter». Це периферійний пристрій, що передає дані через пару виводів (TX та RX). Багато плат мають можливість надавати принаймні один з UART-портів хост-комп’ютеру як серійний порт через USB.

upip

Застарілий менеджер пакетів для MicroPython, натхненний pip з CPython, але значно менший і з обмеженою функціональністю. Дивіться його заміну mip.

webrepl

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