stringtranslate.com

МикроПитон

MicroPython — это программная реализация языка программирования , в значительной степени совместимого с Python 3, написанная на языке C , оптимизированная для работы на микроконтроллере . [2] [3]

MicroPython состоит из компилятора Python в байт-код и интерпретатора времени выполнения этого байт-кода. Пользователю предоставляется интерактивное приглашение ( REPL ) для немедленного выполнения поддерживаемых команд. Включен выбор основных библиотек Python; MicroPython включает модули, которые предоставляют программисту доступ к низкоуровневому оборудованию. [4]

В MicroPython есть встроенный ассемблер , который позволяет коду работать на полной скорости, но он непереносим между разными микроконтроллерами.

Исходный код проекта доступен на GitHub по лицензии MIT . [5]

История

Калькулятор Casio FX-9860GIII, представленный в 2020 году и оснащенный встроенным MicroPython.

MicroPython изначально был создан австралийским программистом Дэмиеном Джорджем после успешной кампании, поддержанной Kickstarter в 2013 году. [6] Первоначальная кампания Kickstarter выпустила MicroPython с платой разработки "pyboard" на базе STM32F4 . В то же время MicroPython был разработан для поддержки ряда архитектур на базе ARM . [7] Порты, поддерживаемые в основной линии, включают ARM Cortex-M (многие платы STM32 [8] , платы RP2040 , платы TI CC3200/WiPy, платы Teensy, серии Nordic nRF, SAMD21 и SAMD51), ESP8266 , ESP32 , [9] 16-битный PIC, Unix, Windows, Zephyr и JavaScript. [10] Кроме того, существует множество ответвлений для различных систем и аппаратных платформ, не поддерживаемых в основной линии. [11]

В 2016 году была создана версия MicroPython для BBC Micro Bit в рамках вклада Python Software Foundation в партнерство Micro Bit с BBC. [12]

В июле 2017 года MicroPython был форкнут для создания CircuitPython , версии MicroPython с упором на образование и простоту использования. MicroPython и CircuitPython поддерживают несколько разные наборы оборудования (например, CircuitPython поддерживает платы Atmel SAM D21 и D51, но отказался от поддержки ESP8266). Начиная с версии 4.0, CircuitPython основан на MicroPython версии 1.9.4. [13]

В 2017 году Microsemi сделала порт MicroPython для архитектуры RISC-V (RV32 и RV64). [14]

В апреле 2019 года была создана версия MicroPython для Lego Mindstorms EV3 . [15]

В январе 2021 года был создан порт MicroPython для RP2040 (ARM Cortex-M0+, на Raspberry Pi Pico и других). [16]

Функции

Возможность запуска Python

MicroPython имеет возможность запускать Python, позволяя пользователям создавать простые и понятные программы. [17] MicroPython поддерживает множество стандартных библиотек Python, поддерживая более 80% функций наиболее используемых библиотек Python. [17] MicroPython был разработан специально для поддержки типичного разрыва в производительности между микроконтроллерами и Python. [18] Код Python может напрямую обращаться к оборудованию и взаимодействовать с ним, с расширенными возможностями оборудования, которые недоступны при использовании обычного приложения Python, работающего в операционной системе . [19]

Переносимость кода

Использование MicroPython технологии слоя аппаратной абстракции (HAL) позволяет переносить разработанный код между различными микроконтроллерами в пределах одного семейства или платформы и на устройства, которые поддерживают и могут загружать MicroPython. Программы часто разрабатываются и тестируются на высокопроизводительных микроконтроллерах и распространяются с использованием конечного приложения на микроконтроллерах с более низкой производительностью. [20]

Модули

MicroPython предлагает функционал, после написания нового кода, для создания замороженного модуля и использования его в качестве библиотеки, которая может быть частью разработанной прошивки . Эта функция помогает избежать повторной загрузки одного и того же, уже безошибочного, протестированного кода в среду MicroPython. Этот тип модуля будет сохранен в каталоге модулей микроконтроллера для компиляции и загрузки в микроконтроллер, где библиотека будет доступна с помощью команды импорта Python для многократного использования. [20]

Цикл чтение–оценка–печать

Цикл чтения-вычисления-печати (REPL) позволяет разработчику вводить отдельные строки кода и немедленно запускать их на терминале . [21] В системах на базе Linux и macOS есть эмуляторы терминала , которые можно использовать для создания прямого подключения к REPL устройства MicroPython с помощью последовательного USB- подключения. REPL помогает в немедленном тестировании частей приложения , поскольку каждая часть кода может быть запущена, а результаты визуально проверены. После загрузки различных частей кода в REPL можно использовать дополнительные функции REPL для экспериментов с функциональностью этого кода. [17]

Полезные команды REPL (после подключения к последовательной консоли): [21]

Ограничения

Хотя MicroPython полностью реализует версию языка Python 3.4 и большую часть 3.5, он не реализует все языковые возможности, введенные с 3.5 и далее, [22] хотя некоторые новые синтаксисы из 3.6 и более поздние возможности из более поздних версий, например из 3.8 (выражения присваивания) и 3.9. Он включает подмножество стандартной библиотеки. [23]

MicroPython имеет более ограниченную аппаратную поддержку на рынке микроконтроллеров, чем другие популярные платформы, такие как Arduino с меньшим количеством вариантов микроконтроллеров, поддерживающих язык. [18] MicroPython не включает интегрированную среду разработки (IDE) или специальный редактор, в отличие от других платформ. [18]

Синтаксис и семантика

Синтаксис MicroPython заимствован из Python из-за его ясного и легкого для понимания стиля и мощности. [24] В отличие от большинства других языков программирования, используется меньше знаков препинания и меньше синтаксических манипуляций, чтобы отдать приоритет читабельности. [17]

Блоки кода

MicroPython перенимает стиль блока кода Python, при этом код, относящийся к определенной функции , условию или циклу, имеет отступ. [17] Это отличается от большинства других языков, которые обычно используют символы или ключевые слова для разграничения блоков. [17] Это способствует читабельности кода MicroPython, поскольку визуальная структура отражает семантическую структуру. Эта ключевая функция проста, но важна, поскольку неправильное использование отступов может привести к выполнению кода при неправильном условии или к общей ошибке интерпретатора . [ 17]

Двоеточие (:) — это ключевой символ, используемый для обозначения окончания условного оператора. [17] Размер отступа эквивалентен одной табуляции или 4 пробелам.

Операции

MicroPython имеет возможность выполнять различные математические операции, используя примитивные и логические операции. [19]

Библиотеки

MicroPython — это компактная и эффективная реализация Python с библиотеками, похожими на библиотеки Python. [25] Некоторые стандартные библиотеки Python имеют эквивалентную библиотеку в MicroPython, переименованную для различения этих двух библиотек. Библиотеки MicroPython меньше, в них удалены или изменены менее популярные функции для экономии памяти . [19]

Три типа библиотек в MicroPython: [19]

MicroPython очень настраиваемый и конфигурируемый, язык отличается для каждой платы ( микроконтроллера ), а доступность библиотек может отличаться. Некоторые функции и классы в модуле или во всем модуле могут быть недоступны или изменены. [19]

Пользовательские библиотеки MicroPython

Когда разработчики начинают создавать новое приложение, стандартные библиотеки и драйверы MicroPython могут не соответствовать требованиям, с недостаточным количеством операций или вычислений. Подобно Python, существует возможность расширения функциональности MicroPython с помощью пользовательских библиотек, которые расширяют возможности существующих библиотек и встроенного ПО. [20]

В MicroPython файлы, заканчивающиеся на .py, имеют приоритет перед другими псевдонимами библиотек, что позволяет пользователям расширять использование и реализацию существующих библиотек. [19]

Поддерживающее оборудование

По мере того, как реализация и популярность MicroPython продолжают расти, все больше плат имеют возможность запускать MicroPython. Многие разработчики создают версии для конкретных процессоров, которые можно загружать на различные микроконтроллеры. [19] Установка MicroPython на микроконтроллеры хорошо документирована и удобна для пользователя. [20] MicroPython позволяет упростить взаимодействие между оборудованием микроконтроллера и приложениями, предоставляя доступ к ряду функций при работе в среде с ограниченными ресурсами, с высоким уровнем реагирования. [17]

Для запуска MicroPython используются два типа плат: [19]

Выполнение кода

Чтобы переместить программу на плату MicroPython, создайте файл и скопируйте его на микроконтроллер для выполнения. При подключении оборудования к устройству, например, к компьютеру , флэш-накопитель платы появится на устройстве, позволяя перемещать файлы на флэш-накопитель. Будет два существующих файла python, boot.py и main.py, которые обычно не изменяются, main.py можно изменить, если вы хотите запускать программу каждый раз при загрузке микроконтроллера , в противном случае программы будут запускаться с помощью консоли REPL. [19]

Pyboard

Pyboard — это официальная плата микроконтроллера MicroPython, которая полностью поддерживает программные функции MicroPython. Аппаратные функции pyboard включают: [4]

Процесс загрузки

Pyboard содержит внутренний диск (файловую систему) с именем /flash, который хранится во флэш-памяти платы, кроме того, карта microSD может быть вставлена ​​в слот и доступна через /sd. При загрузке pyboard должен выбрать файловую систему для загрузки из /flash или /sd с текущим каталогом, установленным на /flash или /sd. По умолчанию, если вставлена ​​карта SD, будет использоваться /sd, если нет, используется /flash. При необходимости можно избежать использования карты SD для процесса загрузки, создав пустой файл с именем /flash/SKIPSD, который останется на плате и будет существовать при загрузке pyboard и пропустит карту SD для процесса загрузки. [4]

Режимы загрузки

При обычном включении питания pyboard или нажатии кнопки сброса pyboard загружается в стандартном режиме, то есть выполняется файл boot.py, затем настраивается USB и, наконец, запускается программа python. [4]

Существует возможность переопределить стандартную последовательность загрузки, удерживая пользовательский переключатель, пока плата находится в процессе загрузки, а затем нажимая сброс, продолжая удерживать пользовательский переключатель. Светодиоды pyboard будут мигать между режимами, и как только светодиоды достигнут желаемого пользователем режима, он может отпустить пользовательский переключатель, и плата загрузится в определенном режиме. [4]

режимы загрузки: [4]

Ошибки

Примеры программирования[19]

Программа «Привет, мир» :

# печать на последовательной консолипечать ( 'Привет, мир!' )

Импорт + включение светодиода:

импорт  pyb# включить светодиодpyb . LED ( 1 ) . on ()

Чтение файла + цикл:

импортировать  ос# открыть и прочитать файлс  открытым ( '/readme.txt' )  как  f :печать ( ф . чтение ())

Байт-код

MicroPython включает кросс-компилятор , который генерирует байт-код MicroPython (расширение файла .mpy ). Код Python может быть скомпилирован в байт-код либо непосредственно на микроконтроллере, либо может быть предварительно скомпилирован в другом месте.

Прошивку MicroPython можно собрать без компилятора, оставив только виртуальную машину , которая может запускать предварительно скомпилированные программы mpy .

Реализация и использование

MicroPython используется посредством прошивки, загружаемой стандартным программным обеспечением в определенный микроконтроллер во флэш-память, взаимодействуя с помощью терминального приложения, загруженного на компьютер, которое эмулирует последовательный интерфейс. [20]

Основные области применения MicroPython можно разделить на три категории: [20]

Реализация MicroPython может различаться в зависимости от доступности стандартных и поддерживающих библиотек, а также размера флэш-памяти и оперативной памяти микроконтроллера. [20]

Смотрите также

Ссылки

  1. ^ Джордж, Дэмиен П. (4 мая 2014 г.). "micropython/LICENSE at master · micropython/micropython". GitHub . Получено 11 февраля 2017 г. .
  2. ^ Venkataramanan, Madhumita (6 декабря 2013 г.). «Micro Python: мощнее Arduino, проще Raspberry Pi». Wired . Получено 15 декабря 2016 г.
  3. ^ Йегулалп, Сердар (5 июля 2014 г.). «Крошечные схемы Micro Python: вариант Python нацелен на микроконтроллеры». InfoWorld . Получено 15 декабря 2016 г. .
  4. ^ abcdefghi "MicroPython - Python для микроконтроллеров". micropython.org . Получено 12 августа 2017 г. .
  5. ^ "MicroPython на GitHub". GitHub . 7 февраля 2022 г.
  6. ^ "Micro Python: Python для микроконтроллеров". Kickstarter . Получено 15 декабря 2016 г.
  7. ^ Бенинго, Джейкоб (11 июля 2016 г.). «От прототипа к производству: MicroPython под капотом». EDN Network . Получено 15 декабря 2016 г.
  8. ^ "MicroPython на Nucleo STM32, STM32F411CE и STM32F401CC: прошивка и основные инструменты". Mischianti . Август 2023 г.
  9. ^ "MicroPython с esp8266 и esp32: прошивка прошивки и программирование с помощью базовых инструментов". Mischianti . 7 июня 2023 г.
  10. ^ Джордж, Дэмиен П. "micropython/ports at master · micropython/micropython". GitHub . Получено 22 октября 2019 г.
  11. ^ Соколовский, Пол. "Awesome MicroPython". GitHub . Получено 22 октября 2019 г.
  12. ^ Уильямс, Алан (7 июля 2015 г.). «Ручное использование пользовательского интерфейса BBC Micro-Bit». ElectronicsWeekly.com . Получено 8 июля 2015 г.
  13. ^ Шоукрофт, Скотт (22 мая 2019 г.). «CircuitPython 4.0.1 released!». Блог Adafruit . Adafruit Industries . Получено 11 июня 2019 г.
  14. ^ "RISC-V Poster Preview — 7th RISC-V Workshop" (PDF) . 28 ноября 2017 г. . Получено 17 декабря 2018 г. .
  15. ^ "LEGO выпускает MicroPython для EV3 на основе ev3dev и Pybricks". www.ev3dev.org . Получено 21 апреля 2020 г. .
  16. ^ "Встречайте Raspberry Silicon: Raspberry Pi Pico теперь продается по цене $4". www.raspberrypi.org . 21 января 2021 г. . Получено 21 января 2021 г. .
  17. ^ abcdefghi Alsabbagh, Marwan (2019). MicroPython Cookbook . Бирмингем, Великобритания: Packt Publishing .
  18. ^ abc Bruno, P. (25 ноября 2021 г.). "Введение в MicroPython". All3DP . Получено 9 мая 2022 г. .
  19. ^ abcdefghijk Белл, Чарльз (2017). MicroPython для Интернета вещей . Беркли, США: Apress .
  20. ^ abcdefg Гаспар, Г.; Куба, П.; Флохова, Дж.; Дудак, Дж.; Флоркова, З. (2020). Разработка приложений IoT на базе платформы MicroPython для внедрения Индустрии 4.0 . 2020 19-я Международная конференция по мехатронике – Mechatronika (ME). С. 1–7.
  21. ^ ab Rembor, K. "The REPL". Добро пожаловать в CircuitPython! . Adafruit Learning System . Получено 9 мая 2022 г. .
  22. ^ «Отличия MicroPython от CPython — последняя документация MicroPython». docs.micropython.org .
  23. ^ "MicroPython - Python для микроконтроллеров". micropython.org .
  24. ^ Ван, Л.; Ли, И.; Чжан, Х.; Хан, Цюй; Чэнь, Л. (2021). Эффективный обфускатор на основе потока управления для байт-кода Micropython . 7-й Международный симпозиум по надежности систем и программного обеспечения (ISSSR) 2021 г. стр. 54–63.
  25. ^ Khamphroo, M.; Kwankeo, N.; Kaemarungsi, K.; Fukawa, K. (2017). Образовательный мобильный робот на базе MicroPython для обучения компьютерному кодированию . 8-я Международная конференция по информационным и коммуникационным технологиям для встраиваемых систем (IC-ICTES) 2017 г., стр. 1–6.

Внешние ссылки