Глосарій#

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