Введение во встроенный Python
Скорее всего, если вы программируете встроенные устройства, вы пишете код на языке программирования C / C ++. C был первоначально создан в начале 1970-х годов; однако только в 1990-х годах программирование встраиваемых устройств перешло с языка ассемблера на язык Си более высокого уровня. В течение следующих тридцати лет C / C ++ будет господствовать во встраиваемых приложениях благодаря своей превосходной производительности как с точки зрения скорости, так и компактности. Сегодня происходит еще один сдвиг с появлением ориентированных на встраивание реализаций популярного языка программирования Python.
Python впервые появился в 1990-х годах и с тех пор неуклонно завоевывает популярность среди разработчиков программного обеспечения. Фактически, в 2020 году Python наконец занял первое место в ежегодном обзоре популярности языков программирования IEEE Spectrum. Первоначально Python стал популярным среди разработчиков встраиваемых систем как язык сценариев для тестирования электронных устройств. Постепенно он продвигался дальше по стеку разработки. На самом деле существует несколько реализаций Python, при этом CPython является эталонной реализацией, широко используемой для настольных приложений.
PyMite и Tiny Python были одними из первых попыток разработки реализаций Python с ограниченными возможностями специально для работы на микроконтроллерах. PyMite включает только виртуальную машину и среду выполнения - без компилятора. Это означает, что он может запускать только байт-код, сначала скомпилированный CPython. Крошечный 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 License) на GitHub.
CircuitPython - это обучающая и удобная для разработчиков реализация Python, которая сама является форком MicroPython. Поддержка разработки CIrcuitPython предоставляется Adafruit Industries и де-факто является языком для многих их микроконтроллеров. Есть в настоящее время более сто плат , совместимых с CircuitPython, большинство на основе компании Microchip SAMD21 / SAMD51 и Nordic Semiconductor в nRF52840микроконтроллеры. Одной из ключевых особенностей CircuitPython является возможность просто перетащить файл исходного кода (.py) на совместимую плату для разработки, что ничем не отличается от перетаскивания файла на USB-накопитель. Нет необходимости компилировать код и нет необходимости в доступе к громоздкому (а иногда и дорогому) программисту / отладчику. Кроме того, исходный код остается доступным на устройстве и может быть открыт на любом компьютере. Это означает, что можно загружать, редактировать и перепрограммировать плату разработки, совместимую с CircuitPython, с любого компьютера с помощью простого текстового редактора.
Зеринтпредставляет собой набор инструментов, заключенных в комплект разработчика программного обеспечения (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 VM занимает небольшие 80 КБ флэш-памяти и 5 КБ ОЗУ.
CPython . Одноплатные компьютеры (SBC) - это полноценные настольные компьютеры в форм-факторе размером с кредитную карту (например, Raspberry Pi , BeagleBone). Кроме того, они настолько недороги, что все чаще используются во встроенных приложениях. SBC текущего поколения достаточно быстры и имеют достаточно памяти и хранилища для запуска полномасштабной реализации 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 позволяют людям, независимо от уровня навыков, сочетать физическое и цифровое. Такой тип возможностей открывает возможности, которые еще несколько лет назад были непостижимыми. Доступные языки программирования с открытым исходным кодом и встроенные платформы по всему миру позволяют местным сообществам создавать инструменты, которые локализованы, соответствуют их потребностям, экономичны и устойчивы.лагерь беженцев , встроенный Python помогает сделать мир лучше, по одной строчке кода за раз.
Вопросы, отзывы, комментарии (0)
Нет комментариев