2009-03-16 5 views
7

Я ищу встроенное кодирование для устройства, которое составляет приблизительно 20 МГц, имеет RAM 6 МБ с процессором ARM32. Может ли кто-нибудь предложить лучший/самый подходящий язык для программирования встроенной системы? Я рассматриваю:Предложения для наиболее подходящего (лучшего) языка для программирования встроенной системы?

  • Lua
  • TinyPy
  • C
  • Java ME
  • C#
  • кто-то предложил JavaScript

Есть предложения? Спасибо

Редактировать - похоже, что победители - C и Lua. Приветствую всех!

Редактировать - Реальное время - это не проблема, тем более ограниченный режим работы ram/cpu.

ответ

4

У меня есть used Lua on an ARM OMAP processor. Тесная интеграция Lua с C позволяет собирать металл, когда вам нужно, а его небольшие размеры делают его подходящим для широкого спектра платформ. Я разработал интерфейс для моей прошивки в Lua на своем Mac, а затем перевел его на встроенную платформу без каких-либо изменений.

В то время как процессор OMAP был достаточно велик, чтобы запускать другие языки, такие как Java или Python, я не знал, какое оборудование я планировал, когда начал код. Луа был в безопасности.

4

У меня возникнет соблазн пойти с прямым C, но тогда я писал C почти 30 лет. Lua и TinyPy кажутся слишком новыми, экспериментальными, для меня; встроенные устройства должны быть очень надежными.

Java ME имеет хорошие баллы. Я не знаю о C# во встроенном мире.

+1

Однако язык сценариев может привести к созданию более надежного кода по тем же причинам, что и в серверной земле: арифметика указателей и управление памятью удалены из списка обязанностей программиста , – slim

+0

Нет, это просто означает, что ответственность передавалась вместе с кодировщиками языка сценариев, одновременно добавляя проблему динамических ошибок ввода текста. Если бы реализация Lua или TinyPy была без ошибок, вы были бы правы, в балансе, но они ужасно новы для меня, чтобы доверять. –

+1

Lua существует с 1993 года (выпущено в '94), а двигатель - с открытым исходным кодом. Я бы сказал, что это так же заслуживает доверия, как и многие компиляторы для C и C++. – patros

6

C, вероятно, ваш лучший выбор для таких ограниченных ресурсов процессора.

+2

Не забывайте, что люди использовали для написания совершенно жизнеспособных приложений в BASIC на 2-мегагерцовых 8-битных 6502 процессорах с 16 КБ ОЗУ. Если вам нужно выжать каждый последний бит производительности, используйте C, но описанное оборудование не исключает интерпретаторов. – slim

+0

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

+0

Для встроенного процессора, имеющего 6 Мб, далеко не ограничивается. Например, самый маленький PIC10F имеет 16 байт ОЗУ и 384 байта вспышки. Для этого вы программируете на ассемблере. :-) –

1

Редактировать: hmm. Я просто заметил, что «встроенный», который вы, похоже, описываете, заключается не в добавлении языка автоматизации в приложение, а в сжатии приложения во встроенную платформу. Как утверждают другие, если вам это действительно не нужно, пропустите встраиваемые языки и запрограммируйте ваше приложение на C. Для этого почти нет накладных расходов во время выполнения, за исключением того, что вы на самом деле используете.

В любом конкретном порядке Lua, JavaScript и TCL вполне подходят для внедрения. Lua был самым легким для меня. Javascript способ доставки be самый быстрый. Все трое имеют хорошую обработку для ненадежного кода, но TCL является наиболее надежным, например, ненадежный код может запускать ненадежный код (если ему доверено это делать).

+0

Javascript - это интересная идея! На что это будет похоже? – Chris

+0

хорошо, я не пробовал ничего нового, чем spidermonkey из нескольких лет назад, но это довольно просто, если вам не нужно переопределять глобальный объект. Это меня смутило. – SingleNegationElimination

8

Если вы приносите устройство с нуля или напрямую взаимодействуете с нестандартными периферийными устройствами, C - это единственный путь.

Если у вас уже есть встроенная ОС или вы можете переносить ее без каких-либо трудностей, у вас может быть больше гибкости при добавлении одного из более языков-скриптов. C# не может быть и речи, если вы не используете WinCE, и тогда вы будете ограничены .NET Micro.

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

+3

Не согласен. http://en.wikipedia.org/wiki/.NET_Micro_Framework –

+0

ARM не совсем экзотична ... она широко используется во встроенных системах, особенно в качестве центрального ядра системы на чипе. – RBerteig

4

Важно указать, что вы ожидаете от этого устройства. Это какое-то приложение контроля? Нужно ли реализовывать алгоритмы? Как насчет поддержки с плавающей запятой? ГПИ? Является ли производительность критической? Планируете ли вы использовать ОС?

Ответ на эти вопросы является важной предпосылкой для выбора языка программирования.

Это означает, что встроенные системы должны быть надежными, поэтому я бы выбрал несколько протестированных решений. C - это, пожалуй, самый надежный и оптимальный вариант для ARM-чипов, но YMMV в зависимости от ваших конкретных потребностей.

1

Если у вас нет RTOS, поддерживающего различные альтернативные языки, C или C++ (в зависимости от вашей цепочки компилятора) - это путь.

1

Ваше решение, скорее всего, будет определяться инструментами, доступными для этого процессора.

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

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

2

C, безусловно, является наиболее используемым языком во встраиваемых системах. Он также, кажется, больше всего говорит о языке вообще http://www.langpop.com/