Разработка встроенной платформы в (! C) - PullRequest
14 голосов
/ 28 февраля 2009

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

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

Если! C, что было основной причиной?

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

Спасибо.

Ответы [ 19 ]

5 голосов
/ 28 февраля 2009

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

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

5 голосов
/ 01 августа 2009

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

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

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

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

2 голосов
/ 01 марта 2009

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

1 голос
/ 13 мая 2009

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

1 голос
/ 28 февраля 2009

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

Basic по-прежнему распространен, как и сборка.

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

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

Но С все еще доминирует.

-Adam

1 голос
/ 06 марта 2009

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

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

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

1 голос
/ 28 февраля 2009

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

0 голосов
/ 13 мая 2009

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

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

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

0 голосов
/ 09 мая 2009

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

Само собой разумеется, что мы отменили это и заменили микроконтроллер на тот, который работал C.

0 голосов
/ 08 мая 2009

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

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

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

В прошлом были примеры (Паскали, или даже сильно скомпилированные Основы), но C в основном норма. Я никогда не понимал, почему.

...