Когда вы говорите «встроенная разработка», имейте в виду, что вы должны учитывать масштаб проекта.
При программировании чего-либо в масштабе микроконтроллера или прошивки для 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