Любой, кто использует Python для встроенных проектов?

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

Единственная реальная проблема, которую я испытываю в повседневной работе, состоит в том, что отсутствие статической проверки против обычного компилятора может вызвать проблемы во время выполнения, например, простой случайный cat строки, а int в заявлении на печать может принести все приложение вниз.

17 Solutions collect form web for “Любой, кто использует Python для встроенных проектов?”

Мы используем python в довольно большом количестве встроенных плат с ARM-процессорами и 16 МБ ОЗУ (работает linux).

Он работает очень хорошо, и очень легко сделать собственный код быстро – одна из сильных сторон питона.

Что касается надежности кода, мы стараемся иметь 100% -ный охват тестированием. Написание тестов с помощью python очень быстро, и это дает вам прекрасное чувство уверенности. Мы используем скрученную пробную версию для запуска тестов и отчета по охвату, но есть много других доступных инструментов.

По моему опыту тесты python + более надежны и намного быстрее, чем любые другие альтернативы.

Единственным недостатком встроенной работы является то, что иногда python может быть медленным, и иногда он использует много памяти (относительно говоря). Это еще не вызвало проблемы остановки отображения, и python довольно легко профилировать как скорость, так и память, если это становится проблемой.

pychecker тоже очень полезен, и он поймает довольно много распространенных ошибок.

BTW, см. Это сообщение в блоге: « Введите вывод для Python » для интересного обсуждения типа вывода и статического ввода текста, включая ссылки на некоторые сообщения в блоге Guido van Rossum, описывающие добавление необязательного статического ввода в Python.

Я согласен с Брюсом Эккелом в том, что лучше практиковать «сильное тестирование», чем полагаться на сильную типизацию. Я думаю, что это одинаково хорошо относится к встроенной разработке.

Лично я работал над некоторым программным обеспечением, которое работает в устройстве, используемом BusRadio . Это пример встроенного проекта, построенного на Twisted и Python. Устройство представляет собой встроенный процессор XScale , на котором выполняется дистрибутив, основанный на debian , поэтому он может не соответствовать определенным определениям «встроенный», но он довольно маленький: он помещается в приборную панель школьного автобуса.

Были некоторые интересные проблемы с использованием Python с большими библиотеками – переводчик может занять довольно много времени, чтобы запустить и загрузить весь код для Twisted на очень медленном чипе, и некоторые вещи нуждались в оптимизации специальных случаев. Однако ни в коем случае динамическая природа Python не была проблемой. Программное обеспечение, о котором идет речь, конечно, не было совершенным, но, по крайней мере, при использовании Twisted простая ошибка программирования не приведет к «подавлению всего приложения». Трассировка будет регистрироваться, и обработка продолжается.

Таким образом, если вы во встроенной среде достаточно без ограничений, что вы можете использовать Python в первую очередь, это ничем не отличается от разработки «обычных» программ (игр, настольных приложений, веб-приложений). Вам не нужна статическая печать там, и вам это тоже не нужно.

На моем предыдущем работодателе я хотел потратить некоторое время на создание встроенных систем в tinypy , что является «минималистской реализацией Python в 64k кода». (Но я никогда не добирался до этого, и у меня больше нет времени.)

Я работал над оборудованием для СВЧ-связи, основанным на старых и медленных мощностях и 16 Мб ОЗУ.

Я смог перенести интерпретатор Python 2.6.1 на VxWorks, чтобы получить интерпретатор командной строки непосредственно из целевой оболочки или выполнить сценарии python, загруженные на целевую вспышку.

Мы использовали эти сценарии для выполнения автотеста на цели или выполнения диагностических процедур. Вот некоторые подробности по всей процедуре: КАК: Port Python – VxWorks

Telit делает модули модема GSM / GPRS, которые включают встроенный интерпретатор Python .

Я сам их не пробовал, поэтому я не знаю, как интерпретатор Python сравнивает или отличает от реализации ПК, например, включая модули, пределы памяти RAM и ROM, скорость выполнения и т. Д.

Однако, как указал пользователь foresightyj в комментарии, кажется, что они используют Python 1.5.x, который является по-настоящему древней версией, и поэтому мне было бы тяжело относиться к ним серьезно. Разработчикам Python не понравилось бы переходить на такую ​​древнюю версию без множества современных возможностей Python. Я был бы обеспокоен проблемами безопасности с такой старой версией.

Единственная реальная проблема, которую я испытываю в повседневной работе, состоит в том, что последняя статическая проверка против обычного компилятора может вызвать проблемы во время выполнения, например, простой случайный cat строки, а int в заявлении печати может принести все приложение вниз.

Единичные тесты – это ваша единственная безопасность от этих вещей.

В самом деле, Python часто используется как «язык поддержки», в то время как вам нужно писать какие-то тесты, т.е. я был вовлечен в проект, который (на основе Python) основывался на базовых кодах тестов (был?) Почти такой же, как у основной продукт. Агенты Python работают на QNX, VxWorks – и большинство проблем, с которыми мы сталкивались, заключались в том, чтобы правильно переносить потоки и связанные с сетью части нашего кода.

Возможно, стоит взглянуть на проект OpenMoko, там много встроенной разработки в Python.

Вещи для наблюдения: – поддержка модуля расширения Python / C может вести себя довольно странно в зависимости от платформы / ОС – большинство встроенных платформ предлагают совершенно устаревшие версии Python – наконец, вы обнаружите, что существует разница между «правильными» «встроенное программное обеспечение, в котором каждый бит подсчитывается, и« современное »встроенное программное обеспечение, которое выполняется на> 412Mhz процессорах XScale с более 128 нм, а затем Python просто не соответствует аппаратным средствам, на которые вы хотите настроить таргетинг 🙁

Мы используем Python здесь, в университете, для встроенных приложений на основе аппаратной платформы Gumstix. Несмотря на более высокую производительность, чем традиционные встроенные системы, мы находим сочетание небольшого формфактора, низкое энергопотребление (ish) и легкость передачи кода между разработкой на настольных компьютерах и целевым аппаратом неоценимым.

Python также является отличным языком для обучения студентов, и с Gumstix он отлично справляется с работой кода в системе с низким энергопотреблением, а не с головной болью и горя, которая поставляется с использованием специальных языков, таких как NesC.

Моя команда написала встроенное программное обеспечение, сделанное из C ++ и Python. Мы решили написать базовые классы и тяжелые вычислительные процедуры на C ++. Мы писали логику в Python. Boost библиотеки как клей. Использование boost никогда не бывает легким, но результаты превосходны. Быстро и легко модифицировать. Используя python для представления пользовательских потребностей, мы в состоянии удовлетворить потребности клиентов в реальном времени, изменив код с помощью технологии инъекций. Что-то действительно захватывающее! (хорошо, я выродка;)

Мы начали прототипирование на питоне, но вдруг поняли, что это явно слишком медленно. Поэтому мы решили структурировать программу в разных вычислительных слоях, чтобы достичь требований скорости. C ++ – лучшее решение.

Чтобы использовать python и c ++ вместе, мы должны были строго контролировать ввод.

Я работал в компании, которая использовала Python на встроенном продукте, основанном на Atmel AVR32 и работающем встроенным Linux. Первоначально прошивка была разработана на ПК (из-за отсутствия прототипа рабочего оборудования), а затем перешла на встроенное оборудование, работающее на скомпилированном интерпретаторе Python.

Возможность отладки и изменения исходного кода «живого» на устройстве была большим плюсом во время разработки и сэкономила много времени. Большими недостатками были скорость и использование памяти интерпретатора Python.

После первого выпуска прошивки для производства мы портировали критические разделы кода на C / C ++. Усилия по переносу были довольно простыми и привели к улучшению на несколько порядков оборота критического кода (как и следовало ожидать).

На самом деле большая часть кода проектирования и производственного тестирования была написана на Python, в основном работает внутри тестового жгута на ПК.

По моему опыту, Python традиционно используется в настольных средах больше, чем во встроенной области. Есть две причины, связанные с тем, что Python интерпретируется:

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

Конечно, по мере того, как встроенные системы станут быстрее и сокращаются сроки выхода на рынок, Python будет более востребован во встроенном секторе.

У меня есть сервер Python (с использованием Twisted ) и некоторые вспомогательные скрипты под XP Embedded, и он отлично работает.

Недавние улучшения

  • MicroPython – это бережливая и быстрая реализация языка программирования Python 3, который оптимизирован для работы на микроконтроллере.
  • Европейское космическое агентство (ЕКА) финансирует дальнейшее развитие MicroPython . Это делается для оценки пригодности языка для космических приложений, в частности для полезных нагрузок.
  • WiPy 1.0 & 2.0, LoPy & SiPy – это беспроводные платформы MicroPython, продаваемые Pycom .

WiPy 1.0

Разве клиент EVE Online не является показателем высокопроизводительного Python в реальном времени?

Я использую модуль Gatetel GT-HE910, который включает модем Telit, включая 3G, GPS, AD, IO и Python 2.7. Это используется для удаленного приложения для сбора данных. Python очень медленный на этих модулях, но нам нужно обновлять каждые 15 минут или в состоянии тревоги, чтобы они работали хорошо.

http://www.gatetel.com/#!gt-series/cscb

Blockquote Единственная реальная проблема, с которой я сталкиваюсь в повседневной работе, состоит в том, что последняя статическая проверка против обычного компилятора может вызвать проблемы, возникающие во время выполнения, например, простой случайный cat строки, а int в выражении печати может принести все приложение вниз

Для меня это огромная сделка. Проблемы, которые вы могли найти во время компиляции и устранить проблему, теперь должны опираться на время выполнения. Не зная тип данных и необходимость писать дополнительную функцию только для проверки типа данных – это проблема. В C. нет необходимости делать это. Как бы вы объявили «volatile» в python?

Blockquote Единственными минусами для встроенных работ является то, что иногда python может быть медленным, а иногда он использует много памяти (относительно говоря). Это еще не вызвало проблемы остановки отображения, и python довольно легко профилировать как скорость, так и память, если это становится проблемой.

Это также огромно. Для Embedded sytems или RTOS ограничение времени очень важно.

Python не обязательно быстро кодировать. Это действительно зависит от того, с каким языком вам комфортно. Честно говоря, мне требуется 1 день, чтобы написать функцию и ненужные объекты для ориентации объектов, которые я могу сделать за 2 часа в C. Тестирование настолько неудобно, что мне нужно написать код, py_compile, скопировать pyc в цель, а затем запустить программу, а затем выйти из python недопустимая переменная, не определенная, или введите ошибку заливки или какую-нибудь мелочь.

Мое предложение C toolchain доступно для любой цели. C быстрый, аппаратно ориентированный, сложный и веселый. Stick с C для встроенных систем. Не нужно устанавливать настраиваемые пустые пакеты python, чтобы запустить его.

  • Автозаполнение в динамических языковых IDE, в частности Python в PyDev
  • Пакет Python без __init__
  • Слушайте USB-клавиатуру с Python
  • Доступ к низкоуровневым регистрам встроенного устройства с использованием Python
  • Встроенный Python del () не может использоваться при назначении?
  • Именование конфликта со встроенной функцией
  • Доступны ли встроенные методы python в альтернативном пространстве имен?
  • Объект main built 'builtin_function_or_method' не является итерируемым
  • Python - лучший язык программирования в мире.