Разработка встроенной платформы на (! C)

Мне любопытно узнать, насколько популярны альтернативы C в мире разработчиков встраиваемых систем, например Ада ...

Я когда-либо использовал только C (с небольшим количеством ассемблера), но тогда мои цели имеют очень ограниченные ресурсы. Есть ли еще движение в этом пространстве к чему-то еще? Что выигрывает посуда в приставках?

Если! C какова была основная причина?

  • Поддержка компилятора для цели
  • Инструменты трассировки \ статического анализа
  • разное...

Спасибо.


person Oliver    schedule 27.02.2009    source источник
comment
+1. Я не понимаю, почему кто-то проголосовал против этого, не говоря уже о том, чтобы отметить это как оскорбление. Думаю, они хотят, чтобы вы придерживались C :)   -  person Ed S.    schedule 28.02.2009
comment
Я бы так не отреагировал. Просто позволь ему побледнеть.   -  person Svante    schedule 28.02.2009
comment
лол, еще один оскорбительный знак. У некоторых людей трусики собраны в кучу.   -  person Ed S.    schedule 28.02.2009
comment
Нет, это просто для того, чтобы разозлить меня из-за того, что меня отвергли после того, как я указал на ужасное написание, которое теперь является правильным. Вы бы ответили на вопрос, если бы кто-то пробормотал его вам?   -  person leppie    schedule 28.02.2009
comment
Оскорбительный ответ сейчас удален, действительно стоит убрать и знак возмущения.   -  person Svante    schedule 28.02.2009
comment
Я действительно думал, что люди будут знать, что означает сообщение сообщества с тегами вики ...   -  person leppie    schedule 28.02.2009
comment
Леппи, почему бы тебе просто не поправить это, если это тебя оскорбляет? Битва за орфографию не будет выиграна с помощью метательных припадков.   -  person Svante    schedule 28.02.2009
comment
он удален, редактировать нельзя ...   -  person leppie    schedule 28.02.2009
comment
Мне жаль! Я не понимал, что все такие обидчивые в пятницу вечером, учитывая, что сейчас я трачу 60+ часов в неделю :(   -  person leppie    schedule 28.02.2009
comment
Иди спать, ты пачкаешься.   -  person Svante    schedule 28.02.2009
comment
Не совсем, но все же весело, может, но слишком рискованно;)   -  person leppie    schedule 28.02.2009
comment
@OV: доверенные пользователи могут редактировать этот сайт в вики, и вопросы будут редактироваться для ясности, правописания, грамматики и т. Д. Это сделано для улучшения сайта в целом, и не является личной уловкой против вас. Не принимайте это на свой счет.   -  person Adam Lassek    schedule 01.03.2009
comment
связанные: stackoverflow.com/questions/3047192/   -  person David Cary    schedule 28.05.2011


Ответы (19)


Forth довольно популярен для разработки встраиваемых систем.

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

person Jörg W Mittag    schedule 28.02.2009

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

При программировании чего-либо в масштабе микроконтроллера или прошивки для ASIC вы склонны видеть, что C и сборка доминируют на сцене. Разработчики встраиваемых систем обычно «специализируются» на этих языках, поскольку их компиляторы доступны почти для каждой целевой платформы встраиваемых систем. Если ваш проект переходит, скажем, с чипа с ядром PowerPC на чип с ядром ARM, вы можете быть уверены, что ваш код C не будет слишком сложно перенести. Некоторые микросхемы действительно имеют компиляторы для других языков, но обычно они не соответствуют компилятору C с точки зрения эффективности результирующего двоичного файла. Поскольку встроенным системам часто не хватает ресурсов, разработчики систем хотят сделать свой код как можно более эффективным (это также одна из причин, по которой вы видите много кода на языке ассемблера). Я видел инструменты разработки, доступные для таких языков, как C ++, Pascal, Basic и другие, но они, как правило, являются нишевыми инструментами, которые недостаточно зрелы, чтобы соответствовать эффективности доступных компиляторов C. Инструменты отладки для этих языков также, как правило, труднее найти, чем те, которые доступны для C / assembly.

Вы также упомянули приставки. Встроенные системы такого масштаба могут вместить мощность, эквивалентную мощности настольного компьютера 7-8 лет назад. Доступная оперативная память, дисковое пространство и вычислительная мощность позволяют им запускать полнофункциональные операционные системы и интерпретаторы для языков более высокого уровня. В этих более мощных системах вы по-прежнему будете использовать C и язык ассемблера (для кода драйвера, если ничего другого), но другие языки (такие как Java, Lua, Tcl, Ruby и т. Д.) Становятся все более и более распространенными. Использование интерпретируемых языков делает перенос кода с одной платформы на другую еще проще, если платформа имеет достаточно ресурсов для обработки накладных расходов языкового интерпретатора. Любой низкоуровневый код, который напрямую взаимодействует с оборудованием (драйверами), по-прежнему обычно использует ассемблер или C, поскольку языки высокого уровня не всегда имеют возможность делать такие вещи. Все, что работает как приложение поверх встроенной операционной системы, обычно можно разработать и протестировать внутри эмулятора или виртуальной машины, поэтому вы увидите, что много кода разрабатывается на том языке, который удобен разработчику.

Версия TL; DR: C популярен, потому что это универсальный язык, с которым знакомы почти все разработчики. Сборка популярна, потому что она обеспечивает низкоуровневый доступ к оборудованию способами, которые в противном случае были бы трудными или невозможными. Интерпретируемые / скриптовые языки, такие как Java, становятся все более популярными, но требования к ресурсам интерпретаторов для этих языков могут быть слишком высокими для некоторых встроенных систем. Качество и разнообразие доступных инструментов разработки / отладки для языков C и ассемблера также делают эти варианты привлекательными.

person bta    schedule 31.07.2009

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

person Kristof Provost    schedule 01.03.2009
comment
Ну, это зависит ... если вы используете полиморфные и общие аспекты программирования C ++, он начинает казаться намного менее похожим на стандартный C.Если вы просто используете классы для инкапсуляции данных и методов (хорошо, но выполнимо в C), тогда вы как бы на первом уровне использования C ++. Когда я вижу резюме, в котором написано C / C ++, первое, что я начинаю исследовать, - это глубина знаний C ++. Обычно он довольно неглубокий. - person Dan; 09.05.2009

Я сам не использовал, но Bascom довольно популярен для микроконтроллеров AVR. Это базовая среда IDE, которая позволяет очень легко взаимодействовать с периферийными устройствами. Я встречал людей с аппаратным обеспечением, которые успешно его используют.

person kgiannakakis    schedule 27.02.2009

да. Java становится все более популярной - многие процессоры добавили инструкции, относящиеся в первую очередь к Java и подобным языкам (.net). Кроме того, uclinux работает на микроконтроллерах, поэтому вы можете использовать практически любой язык для некоторых более крупных микроконтроллеров.

Базовый по-прежнему распространен, как и сборка.

Вы увидите Аду в некоторых государственных проектах.

А некоторые инженеры даже ставят Lua и другие интерпретаторы на свои микросхемы, чтобы их клиенты могли расширить функциональность.

Но C по-прежнему доминирует.

-Адам

person Adam Davis    schedule 28.02.2009
comment
LOL при голосовании против - если вы думаете, что это неправильно, прокомментируйте, я бы хотел узнать, что я сказал неправильно, чтобы я мог исправить это или защитить! - person Adam Davis; 04.03.2009
comment
@ Adam- проголосовал за вас ... должен высказаться за моих собратьев по RT / встроенному Java ... JA - person andersoj; 13.05.2009

В начале 90-х я много разрабатывал встраиваемые системы на 8051, используя Intel PLM51 и операционную систему DCX51.

PLM - очень простой язык, но очень мощный

Теперь мы используем C

person Charles Faiga    schedule 05.03.2009

Если вы работаете в области смарт-карт, вы можете использовать Java Card. Ага, Java, на 8-битном микро. На самом деле это довольно весело. Я занимаюсь разработкой в ​​Eclipse, тестирую (и отлаживаю!) На симуляторе ПК и могу быть уверен, что он будет работать так же на карте. Жаль, что Java - ужасный язык для встраиваемых приложений :)

person Community    schedule 12.05.2009

Я использовал EC ++ (Embedded C ++) довольно широко.

Кроме того, PICBasic был популярен среди PIC'ers уже давно.

person Nate    schedule 03.03.2009

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

person Gerhard    schedule 05.03.2009

Существует компилятор Pascal для 8051.

person Charles Faiga    schedule 05.03.2009
comment
FreePascal поддерживает ARM, MIPS и некоторые другие. - person Warren P; 15.06.2010

JAL

person none    schedule 13.03.2009

Существует группа людей, работающая над тем, чтобы сделать Lua жизнеспособным вариантом для встроенной работы. Они нацелены в первую очередь на 32-битные ARM с 256 КБ флэш-памяти и 64 КБ ОЗУ или лучше и, похоже, пока довольны своей работой.

Отчасти они вдохновлены классическим BASIC-Stamp, интерпретатором BASIC, работающим на умеренно мощном PIC с программой сам хранится в последовательном устройстве EEPROM.

На работе я все еще обслуживаю встраиваемую систему клиента, написанную на скомпилированном варианте BASIC, работающем в процессоре Zilog Z180. Технология 1980-х годов повсюду, и большая часть системы все еще построена из 24-бункерных DIP-пакетов в розетках. Компилятор работает под управлением CP / M-80, работающего в симуляторе Z80, который сам работает в симуляторе MS-DOS, встроенном в Windows. Помимо удивления, что таким образом можно сделать что-либо продуктивное (и что вы все еще можете купить УФ-стираемые EPROMS 27C256, и что мой почти 20-летний программист Data / IO PROM все еще работает), я действительно хотел бы, чтобы заказчик мог позволить себе перейти на новый дизайн оборудования, чтобы система могла быть переписана на поддерживаемом языке.

person RBerteig    schedule 14.03.2009

Зависит от микроконтроллера, у многих из них есть C, но компиляторы ужасны, ассемблер обычно прост и лучше всего работает, наиболее эффективен и т. Д. Такие, как msp, avr и arm, хороши для компиляторов C, а для тех, кого я хотел бы и используйте C (в зависимости от проблемы).

Я бы придерживался C или ассемблера, вы тратите память, производительность и ресурсы, используя что-то еще.

person old_timer    schedule 14.03.2009

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

Но основной проблемой будет проблема любого компилятора! C: что вы предпочитаете, лучший компилятор / набор инструментов или предпочтительный язык.

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

В прошлом были примеры (Pascals или даже тщательно скомпилированные Basics), но C в основном является нормой. Я так и не понял почему.

person Marco van de Voort    schedule 08.05.2009

Я работал над устройством, на котором работала какая-то невероятно старая версия python (1.4 или что-то в этом роде). Не было возможности отладить его (кроме печати отладочных сообщений), поэтому, когда ваш код попадал в исключение, все просто останавливалось, и вы чесали голову в течение часа. Каждый раз, когда вы вносили изменения и обновляли выполняемый код, на его интерпретацию и компиляцию уходило около 10 минут.

Излишне говорить, что мы отказались от этого и заменили микроконтроллер на тот, который запускал C.

person James    schedule 09.05.2009
comment
Я написал систему на основе микроконтроллера со всем кодом на C, в которой использовался встроенный интерпретатор Python для расширений и сценариев. Красота. - person Warren P; 15.06.2010

См. Этот связанный вопрос:

Какие языки используются для программирования систем в реальном времени .

В ответ на ваш вопрос «почему», с точки зрения правительственных / военных закупок, существует мнение, что Java (язык, платформа и т. Д.) В наши дни является лингва-франка и что эффект масштаба на этом языке снизится стоимость приобретения и обслуживания. Есть также надежда, что можно эффективно обучить компетентного Java-программиста, чтобы он стал разумным RT / встроенным программистом на Java, быстрее, чем если бы им требовалось выучить новый язык. Это обоснование, на мой взгляд, подозрительно, но оно дает ответ на вопрос «почему».

person andersoj    schedule 12.05.2009

Если вы включите iPhone как встроенную платформу, тогда Objective-C

person sean riley    schedule 31.07.2009

Учитывая, сколько раз у меня на телефоне возникало исключение Java из-за нехватки памяти (большую часть времени я делаю что-нибудь отдаленно интересное), я бы убегал от Java, как летучая мышь из жаркого места.

Я слышал, что Erlang был разработан для мобильных телефонов. Я думаю, что Lisp - хорошая архитектура для поддержки удаленных устройств, если cna устройства обрабатывает время выполнения.

person Paul Nathan    schedule 31.07.2009

Многие пользователи домашнего пива и небольшие компании, которым нужно дешевое решение, нашли, что Tiny Tiger и Basic STAMP (с использованием BASIC) удовлетворяют их потребности.

person Warren P    schedule 15.06.2010