Си или Си++ для микроконтроллеров, объясните пожалуйста?

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Встал на лапы
Сообщения: 114
Зарегистрирован: Вс окт 20, 2013 05:40:40

Сообщение Victor_CCCP »

Всем привет!
Уважаемые embed-программисты, подскажите пожалуйста - применяется ли для программирования микроконтроллеров (AVR, STM8) язык программирования C++?
То есть, именно плюсы, которые с ООП, булевым типом данных и другими, более "высокоуровневыми" отличиями от обычного ANSI C, который, я знаю, точно применяется для программирования микроконтроллеров.

Почему такой вопрос - я очень хочу научиться разрабатывать устройства на микроконтроллерах, за полмесяца изучил синтаксис классического Си (ANSI C, обучался в IDE Pelles C).
Теперь стою перед выбором - "прокачать" дальше теорию в C++, т.е. ООП, двигаться "выше" или перейти к специализированному курсу по C для микроконтроллеров, побитовые операторы, работа с памятью, регистрами, т.е. "ниже", ближе к аппаратному.

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

Понимаю, что язык - это всего лишь диалект, изучаемый за пару дней, важнее опыт, правильное мышление и понимание, но я так и не могу понять - используется ли C++ для МК со своими высокоуровневыми методами решения задач или там применяется только чистый Си?

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

Большое спасибо!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6345
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Думаю, стоит потратить время на изучение архитектуры выбранного ряда МК, больше пользы будет. А ООП на МК, на мой не претендующий на конечную истину взгляд - это кривая пародия для понтования. К тому же, никакой язык, вопреки спекулятивным рекламным восторгам об "автоматизации программирования", не может заменить работу программера по составлению, реализации и отладке алгоритма.
Изображение
Реклама
Встал на лапы
Сообщения: 114
Зарегистрирован: Вс окт 20, 2013 05:40:40

Сообщение Victor_CCCP »

Джек, спасибо за ответ!
Мне тоже не хочется учить C++, а более углубленно проработать еще раз Си уже для МК и особенности микроконтроллеров AVR. Но я просто не до конца понимаю, нужен ли мне будет C++ в embed-программировании, ведь о нем много хвалебных отзывов, а я еще не настолько хорошо знаю эту область, чтобы делать выводы.

То есть, есть ли смысл для embed-программиста, который будет только работать с микроконтроллерами, изучать C++ или вполне хватит из этих двух языков только C?

Спасибо!
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

не нужен. В общем, конечно, зависит от жирности контроллера, под "большие" ARM-ы можно писать развесистые программулины хоть на питоне, но это уже на вкус и цвет. Если цель стоит "уметь писать прошивки для МК" - С хватит за глаза, а плюсы осиливайте тогда, когда (и если вообще) это непосредственно понадобится.
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

Из двух упомянутых альтернатив, нужны обе, но не одновременно. Если время ограничено, да к тому же Вы в начале пути, лучше отдать это время углубленному курсу по Си для м/к.
Что до C++, то его время придет, когда нужно будет работать со сложными м/к, имеющими большое количество внутренних зависимостей. И если Вы этим:
Victor_CCCP писал(а):Понимаю, что язык - это всего лишь диалект, изучаемый за пару дней
подразумеваете, что С++ есть диалект С, то это ошибка. Да и за пару дней его не изучить.
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Сообщение SubDia »

Ну, вообще, это не два языка, прямо скажем.))

Я в своей жизни встречал только один проект для МК на Си++. Одна эмбеддерская контора разрабатывала плату на изделие для моей фирмы - там была связка ПЛИС и МК STM32. Они передали мне проект ПО МК, и он был написан на СИ++. Там контроллер был задействован по полной - эмуляция ISA шины, плотная работа с ПЛИС, и передача данных по USB. Плюс программная эмуляция еще кое-чего специализированного, что мне бессмысленно тут сейчас растолковывать.

В общем и целом, для начинающего эмбеддера я не вижу смысла ковырять СИ++. Там другая философия, это же ООП, сами понимаете. Не забивайте голову, Вам и так есть на что тратить время и силы.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Реклама
Встал на лапы
Сообщения: 114
Зарегистрирован: Вс окт 20, 2013 05:40:40

Сообщение Victor_CCCP »

arkhnchul, Pnjom-Penb, SubDia, огромное спасибо!
Все понял, все хорошо разжевали, пойду учить курс Си для микроконтроллеров AVR.
:beer:
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

SubDia писал(а):[C и C++] это не два языка, прямо скажем.))
Ага, это всего лишь 1,999 языка. :)))
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Присоединяюсь к высказавшимся комментаторам. Поначалу не забивайте себе голову ООП, оно в эмбеде в 98% случаев ни к чему. Где начинается нужда в ООП, там, собственно, в некотором смысле кончается эмбед. Лучше почитайте, например, про MISRA.

Хотя, конечно, контроллеры бывают очень разные. На каком-нибудь Cortex-M4 с мегабайтом флеша и внешней SRAM, работающем на частоте 80 МГц, который должен рулить ЖК-экраном с тачскрином и пр., не грех уже и uCLinux запустить и на C++ писать. Но такие задачи, прямо скажем, встречаются нечасто.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»