цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Python для встраиваемых систем: разновидности и применение



Python для встраиваемых систем: разновидности и применение

Автор: Mike(admin) от 1-09-2023, 03:55

Скорее всего, если вы программируете встраиваемые устройства (микроконтроллеры, одноплатные компьютеры и т.д.), вы пишете код на языке программирования C/C++. Язык C был первоначально создан в начале 1970-х годов, однако только в 1990-х годах программирование встраиваемых устройств перешло с языка ассемблера на язык C более высокого уровня. В течение следующих тридцати лет C/C++ будет доминировать во встраиваемых приложениях благодаря своей превосходной производительности, как с точки зрения скорости, так и с точки зрения компактности. Сегодня происходит еще один сдвиг с появлением специальных реализаций популярного языка программирования Python.


Python для встраиваемых систем: разновидности и применение

Язык программирования Python впервые появился в 1990-х годах и с тех пор неуклонно набирает популярность среди разработчиков программного обеспечения. Фактически, в 2020 году Python наконец занял первое место в ежегодном опросе популярности языков программирования IEEE Spectrum. Первоначально Python стал популярен среди разработчиков встраиваемых систем как язык сценариев для тестирования электронных устройств. Постепенно он продвигался дальше по стеку разработки. На самом деле существует несколько реализаций Python, причем CPython является эталонной реализацией, широко используемой для настольных приложений. Рассмотрим эти реализации.


PyMite и Tiny Python были одними из первых попыток разработки реализаций Python с ограниченными возможностями специально для работы на микроконтроллерах. PyMite включает в себя только виртуальную машину и среду выполнения, без компилятора. Это означает, что он может запускать только байт-код, предварительно скомпилированный CPython. Tiny Python действительно включал в себя компилятор байт-кода, но при этом занимал всего около 64 килобайт ОЗУ. Оба варианта языка основаны на Python 2, и ни один из них активно не развивается. Тем не менее, они представляют собой самые ранние попытки использования Python для встраиваемых приложений.


MicroPython – замечательная альтернатива языку программирования C для разработки встраиваемых систем. Он привносит несколько популярных функций языка CPython для настольных компьютеров в различные популярные архитектуры микроконтроллеров, включая платы STM32, TI CC3200/WiPy, платы Teensy, серию Nordic nRF, SAMD21, SAMD51, ESP8266, ESP32, RISC-V и даже Lego (платформа Mindstorms EV3). С момента запуска в 2014 году популярность MicroPython стабильно растет, что отражает рост использования CPython в целом. Еще одним привлекательным преимуществом является то, что исходный код MicroPython предлагается по лицензии с открытым исходным кодом (лицензия MIT) на GitHub.


Python для встраиваемых систем: разновидности и применение

CircuitPython – это образовательная и удобная для разработчиков реализация Python, которая сама по себе является ответвлением MicroPython. Поддержка разработки CIrcuitPython предоставляется компанией Adafruit Industries и является фактическим языком для многих их микроконтроллерных продуктов. В настоящее время существует более ста плат, совместимых с CircuitPython, большинство из которых основаны на микроконтроллерах SAMD21/SAMD51 от Microchip и nRF52840 от Nordic Semiconductor. Одной из ключевых особенностей CircuitPython является возможность просто перетащить файл исходного кода (.py) на совместимую плату разработки, ничем не отличаясь от перетаскивания файла на USB-накопитель. Нет необходимости компилировать код и нет необходимости обращаться к громоздкому (а иногда и дорогостоящему) программатору/отладчику. Также исходный код остается доступным на устройстве и может быть открыт на любом компьютере. Это означает, что можно загружать, редактировать и перепрограммировать плату разработки, совместимую с CircuitPython, с любого компьютера с помощью простого текстового редактора.


Zerynth – это набор инструментов, включенных в комплект разработки программного обеспечения (SDK), предназначенный для разработчиков продуктов Интернета вещей (IoT). Они специализируются на упрощении соединения между 32-битными микроконтроллерами (включая ESP32, ESP8266, ARM Cortex M0+, ARM Cortex M3 и ARM Cortex M4) и различными поставщиками облачных услуг IoT (AWS, Azure, Google Cloud Platform, Ubidots, The Things Network). С помощью всего лишь нескольких строк кода Python данные с датчиков периферийных устройств можно передать в облако для дальнейшего анализа и долгосрочного хранения. Среди предоставленных инструментов интерфейс командной строки (CLI), интегрированная среда разработки (IDE) Zerynth Studio, операционная система (ОС) Zerynth и диспетчер устройств Zerynth. Все доступно для Windows, Mac OS и Linux. Виртуальная машина Zerynth занимает небольшие 80 КБ флэш-памяти и 5 КБ ОЗУ. Программирование может выполняться на Python или с использованием гибридного подхода Python/C, если требования к производительности требуют такого подхода.


Python для встраиваемых систем: разновидности и применение

CPython. Одноплатные компьютеры – это полноценные настольные компьютеры в форм-факторе размером с кредитную карту (например, Raspberry Pi, BeagleBone). Они также настолько недороги, что все чаще используются во встраиваемых приложениях. Одноплатники текущего поколения достаточно быстры и имеют достаточно памяти и хранилища для запуска полноценной реализации CPython (или слегка урезанной реализации, созданной за счет исключения ненужных модулей). Были и другие реализации, такие как Python для ARM Linux, который адаптировал Python для архитектур на базе ARM (по сравнению с архитектурами x86/x64). Совсем недавно дополнительные реализации, такие как PyPy, основанные на компиляторе Just-In-Time, а не на интерпретаторе CPython, были портированы на Raspberry Pi и предлагают такие улучшения, как повышение скорости работы.


Разработчикам следует помнить, что не существует единой «разновидности» языка программирования Python. Существует множество реализаций, и некоторые из них специально созданы для превосходной работы на встроенных платформах. Будущее Python как крупного игрока в мире профессиональной разработки встраиваемых систем зависит от доказательства того, что он может соответствовать или превосходить производительность C. Мы можем обратиться к истории, чтобы получить некоторые идеи. В конце концов, переход от сборки к C не произошел в одночасье. Ассемблер по-прежнему используется для критически важных разделов программы на языке C путем вставки ассемблерного кода в макросы C. Python и C могут работать вместе одинаково.


Еще одно соображение заключается в том, что современные микроконтроллеры мощнее, чем микроконтроллеры десяти-двадцатилетней давности. Тактовые циклы изменились с нескольких мегагерц до более чем гигагерц. Флэш-память, когда-то измерявшаяся десятками килобайт, теперь измеряется несколькими мегабайтами. К счастью, значительное увеличение производительности не сопровождалось соразмерным увеличением цены. Таким образом, разработчики встраиваемых приложений могут писать код более высокого уровня, не обращая внимания на каждый тактовый цикл или байт памяти, и при этом создавать быстро реагирующие высококачественные продукты.


Языки программирования, как и разговорные языки, развиваются и растут, отвечая потребностям времени. Производные CPython, специально созданные для встраиваемых систем, такие как MicroPython и CircuitPython, могут стать ключевыми игроками в будущем разработки встраиваемых систем, поскольку они демократизируют процесс создания. В сочетании с некоторыми базовыми знаниями об электронном оборудовании встроенные языки Python позволяют людям, независимо от уровня навыков, сочетать физическое и цифровое. Этот тип возможностей открывает возможности, которые были непостижимы всего несколько лет назад. Доступные языки программирования с открытым исходным кодом и встроенные платформы по всему миру позволяют местным сообществам создавать инструменты, которые локализованы, соответствуют их потребностям, экономичны и надежны.




© digitrode.ru


Теги: Python, MicroPython, CircuitPython




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

Комментарии:

Оставить комментарий