Какие «противоположные» взгляды вы слышали? В некоторой степени это будет зависеть от микроконтроллера и приложения. Однако C доступен почти для всех архитектур (я не решаюсь сказать все, но, вероятно, все, с чем вы когда-либо столкнетесь); так что только в этом отношении изучение C даст вам наибольший охват.
Для всех архитектур наличие ассемблера и компилятора C в значительной степени является само собой разумеющимся. Для 32-битных и большинства 16-битных архитектур также будет доступен C ++. Заметными исключениями, с которыми я столкнулся, являются части Microchip PIC24 / dsPIC, для которых C ++ не поддерживается собственным компилятором Microchip на основе GNU (хотя сторонние компиляторы могут это делать).
Хотя существуют компиляторы C ++ для 8-битных микроконтроллеров, C ++ не является повсеместным на таких платформах, и часто компиляторы являются подмножествами полного языка. Для типов (или, точнее, размера) приложений, для которых обычно используется 8-битный, C ++ может быть полезен, но не в той степени, в которой он используется в гораздо более крупных приложениях, поэтому C обычно подходит.
Существует множество мифов о C ++ во встроенных системах; хотя язык больше, чем C, и имеет конструкции, которые могут поставить под угрозу производительность или емкость вашей системы, вы платите только за то, что используете с C ++. Но, конечно, если вы используете только подмножество C, C в любом случае будет адекватным.
Суть C (и C ++) в том, что это язык системного уровня; он будет работать на вашем микропроцессоре без дополнительной поддержки, за исключением очень простого запуска среды выполнения для инициализации процессора (и, возможно, внешней SDRAM), инициализации статических данных, создания стека и, в случае C ++, вызова статических конструкторов. Вот почему вместе с целевым ассемблером он используется для сборки операционных систем и ядер - для работы ему не требуется ни операционная система, ни само ядро.
Одна из причин, по которой я предположил, что это может зависеть от микроконтроллера, заключается в том, что, например, это ARM9 с несколькими МБ внешней SDRAM и, по крайней мере, 4 МБ Flash (также обычно внешняя - память занимает много места на кристалле) , то вы можете запустить на нем «тяжелую» ОС, такую как Linux, WinCE или Symbian, или даже большую ОСРВ, такую как QNX или VxWorks. Тогда на ваш выбор языка (как только у вас заработает ОС) будет влиять ОС, хотя для приложений реального времени C и C ++ все равно будут доминировать (или часто Ada в военных, авионике и некоторых транспортных приложениях).
Для приложений среднего размера - несколько сотен килобайт кода и пространство данных - возможен C #, работающий на платформе .NET-Micro; Однако я присутствовал на презентации этого на выставке Embedded Systems Show в Великобритании несколько лет назад, сразу после того, как он был запущен; Когда я задал вопрос «а это в реальном времени?», и мне сказали: «Для этого вам не нужен WinCE», большая часть аудитории вздохнула и застонала, а некоторые перестали тратить время зря и покинули презентацию тут же (включая меня).
Так что меня все еще интересуют «противоположные» мнения, которые вы слышали; потому что, хотя возможно использовать другие языки; ответ на ваш вопрос:
Какой язык больше всего используется в отрасли для программирования микроконтроллеров?
тогда окончательный ответ - C; по причинам, которые я указал. Для тех, кто решит оспорить это утверждение, вот статистика (обратите внимание на разные метод обследования после 2004 г. объяснен в тексте). Однако просто чтобы добавить к коллекции альтернатив, я однажды потратил два года на программирование на Forth во встроенных системах, и я знаю людей, которые все еще используют его, но это своего рода ниша.
person
Clifford
schedule
22.12.2009