Подтвердить что ты не робот

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

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

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

Если? C, в чем была основная причина?

  • Поддержка компилятора для целей
  • Trace\static analysis tools
  • другой...

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Основные все еще распространены, как и сборка.

Вы увидите Ada в некоторых проектах gov't.

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

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

-Adam

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

JAL

Ответ 12

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

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

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

Ответ 13

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

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

Ответ 14

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

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

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

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

Ответ 15

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

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

Ответ 16

Смотрите этот вопрос:

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

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

Ответ 17

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

Ответ 18

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

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

Ответ 19

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