Глосарій#
- 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