Pull to refresh

Comments 13

UFO just landed and posted this here
спасибо за статью, очень здорово!

у меня вопрос: а почему именно эта IDE? Т.е. как я понимаю, она платная и только под win. Что именно из IDE нужно студентам? Средства отладки? Просто как я понимаю, проект-то учебный, маленький, его можно хоть в блокноте накидать.
Почему C++ а не C? Я в микроконтроллерах совсем чайник, но всегда казалось что C++ для многих задач — явный оверкил.
Здравствуйте,
IAR лицензионный мы используем на работе, и привыкли к нему, задача наша, найти толковыъ студнтов и потом по возможности взять на работу, а ведь хорошо, когда они уже знают среду в которой мы работаем.
Триал версия IAR для ARM доступна со всеми фичами для приложений до 30 кБ кода. Собтсвенно, это меня устраивает, код получился значительно меньше.
С++ мне нравится по одной простой причине — что при грамотном подходе код получается очень читабельным и понятным. Кроме того, поскольку кодирование это вообще у нас второстепенно :) на первом месте разработка архитектуры, а она у нас делается на UML. С диаграмм UML потом очень удобно все перекладывать в код и классы, чисто теоретически можно их потом автоматом генерить (но это моветон). Для коммерческих проектов, конечно все это делается вручную. Зато по архитектуре сразу понятна задумка автора и можно на раннем этапе указать на ошибки.
А вообще микроконтроллеры шагнули далеко вперед за 8 лет :) И вот микроконтроллер за 2 бакса с 16 кБатам ОЗУ и 128 ПЗУ. поэтому использование С++ тут как бы уже нормально, но если очень надо, можно использовать С++ и на более мелких микроконтроллерах, только надо будет например переопределить new, чтобы динамически память не выделялась, по возможности не использовать виртуальные функции и и еще ряд ухищрений, но думаю, что сейчас это уже не нужно — памяти хватит для любого нашего проекта :)
С одной стороны мотивация ясна, и все же с IDE задумка несколько спорная: велик риск получить на выходе не толкового студента, а мартышку которая научилась по кнопкам в IDE нажимать. Я понимаю, если задача сложная, когда разбираешь какое-нибудь хитрое состояние гонок, там да, и дебаггер был бы полезен, или когда рефакторишь крупный проект — то крутые возможности IDE — очень кстати, — но все эти плюшки, на мой взгляд, нужно давать уже состоявшемуся специалисту, а никак не зеленому студенту, от которого требуется понимание как компилятор запустить, код зальется на микроконтроллер и т.п.

По поводу C++: все правильно пишете — код читаемый получается при грамотном подходе, а чтобы подход с C++ был грамотным — ему нужно лет 5 обучаться, собирать все шишки и грабли. Если вы хорошо разбираетесь в C++ — то вам будет относительно просто писать код, а студенты, которые ничего в этом не понимают, при первой же ошибке впадут в ступор и ничего не дадут на выходе. Опять же, для больших проектов — да, может быть C++ в плане организации архитектуры кода хорош, но для маленьких учебных задач — оверкил.
Я какое-то время назад (пол-года примерно) тоже спрашивал у опытных в Embedded коллег, почему IAR, а не Eclipse + GCC, например.
Были случаи, когда GCC генерировал приложение, зависавшее через некоторое время работы (несколько часов — сутки, где-то). Серьезные проблемы были в продакшене. При этом компилятор IAR выдавал полностью рабочее приложение по тем же сорцам. Конечно, мог иметь место человеческий фактор при портировании кода в иную среду компиляции. Однако, по моим «умозрительным» оценкам IAR выдает значительно более компактный машинный код. Возможно, у IAR более компактные подмены стандартным функциям Си или еще что-то.
А причину зависаний не искали? Просто интересно же.
Вставлю свои пять копеек.
В настоящее время для разработки под arm и в частности stm32 наиболее распространены 4 ide(не претендую на истину).
Первые две, это IAR и KEIL. Коммерческие ide, специально созданные для создания по встраиваемых систем. Они платны, есть триал версии с ограничением кода прошивки.
Вторые две это eclipse + gcc для arm или собранный на его основе Cocoox. Они бесплатны.
Собственно главное различие в том, что iar и keil работают из коробки, под них есть масса примеров, драйвера для программаторов встроены в дистрибутив и.т.п.
Во вторых двух совершенно другая история, как пример, в eclipse нельзя просто залить код в микроконтроллер, есть кнопка залить и запустить дебаггер, периодически глючит просмотр регистров контроллера.
Теперь представьте себе человека, который только знакомится с микроконтроллерами серии стм32. Reference manual (20мб) на серию stm32f4 это тысяча с лишним страниц описывающих периферию контроллера. Обилие конфигурирующих дефайнов и файлов в проекте, совершенно не понятных студенту, но без которых ничего работать не, расчёт адресов памяти для линкера. И не разобравшись в КАЖДОМ из пунктов досконально, не получится даже поморгать светодиодом.
У вас есть 2 варианта: поставить свободную ide типа eclipse и зарыться в непонятных для новичка вещах, разгребая которые вы потеряете весь энтузиазм.
Или же поставить iar keil, запустить готовый проект коих тысяча и наслаждаться моргающим светодиодом, параллельно разбираясь зачем в проекте подключен тот или иной файл.
ps Сам пишу в Eclipse +gcc на C++ под stm32, но начинал с keil.
Сейчас еще есть CubeIDE — официальная программа от ST для их микроконтроллеров. Она бесплатная. Но она довольно сырая. При попытке работы с платой blue pill не проходила верификация, так как контроллеры китайцы ставят туда левые. При некоторых танцах с бубном можно запустить и китайский камень. Но в регистрах при отладке происходят странные вещи. Например у меня не выставлялся бит в регистре на PB4, даже ставя его вручную он тут же скидывался. Проблема с верификацией решилась перепайкой чипа на оригинальный. Но с пином PB4 проблему решить не удалось. Вообще IDE попадаются довольно кривые. Был у меня случай с Delphi. Бился неделю с багом, все проверил до буквы и запятой, но код не работал. В итоге снес IDE и поставил заново. Проблема решилась. Через некоторое время опять начались глюки IDE. Такие же траблы были и с C++. Через некоторое время таких глюков пропадает охота вообще заниматься программированием, потому что помимо освоения огромного количества информации по языку потом еще нифига не работает, потому что разрабы написали кривую IDE

Для старта - кокос, для работы - cube ide вполне годно. Mx cube в него интегрирован. Всё бесплатно

Про студентов, возможно вы и правы. Но предполагалось, что все даваться им будет на последнем курсе, когда микроконтроллеры уже пройдены, у них отдельный курс по ним есть. Хотя да, предполагаю, что будет так как вы говорите — но попробуем, рассматриваю студентов, как выразился один мой коллега, в качестве стволовой клетки — можно сделать кого угодно, главное чтобы был интерес

По поводу IDE, тут стоит уточнить, что IDE мы используем только для отладки и очень редко. Для сборки используется обычный make файл, сборка прошивается сразу в плату где проходят смоке тесты. И только в случае, если что-то вдруг не работает, делает тестовый проект в IDE для отладки. Но на моей практике, такое было редко. Кстати мейк есть и в моем проекте, просто я не доделал и бросил — это не входило в мою задачу. Там и линтом, например обертка проверялась, чтобы более менее код чистый был.
С++ мы используем у себя во всех проектах, поэтому если студент пришел к нам скажем на практику, первым делом он должен хотя бы на начальном уровне знать его — дальше дело практики.
Основное требование — простота кода и его поддерживаемость, чтобы, скажем — через 3 года, любой инженер мог открыть архитектуру, посмотреть код и быстро все понять. Чистый Си в этом плане проигрывает С++, раньше мы на Си программировали как на С++ для этого, используя структуры в качестве классов. Но это тоже еще то извращение.
Скажите, а что означает маленькая буква «с» перед именем каждой функции? Это ваш корпоративный стандарт или тлетворное влияние freeRTOS?
Это стандарт кодирования, обзначает class. Наследие использования Си и структур в качестве классов.
Подход с C++ мне понравился — красиво получается. А как вы собираетесь «оборачивать» разного рода стеки (TCP/IP, lwip тот же, GUI, файловые системы)? По протоколам, тоже интересно, как Вы собираетесь сделать? У IAR кстати есть похожая штука, позволят получать неплохие результаты.

А вот что касается мотивации, я не могу не воздержаться от критического комментария. У меня такое ощущение, что работодатели не понимают простого правила — хороший специалист стоит денег. И то, что он не хочет идти к Вам за малые деньги, так он полностью прав. Если у вас нет денег на специалиста, то вариантов у вас собственно два, либо вообще не занимайтесь тем, чем занимаетесь, либо нанимайте студентов. Вот только во втором случае будьте готовы, во-первых, к низкому качеству по-началу, и, во-вторых, к тому, что он уйдет от вас, в другую контору за большие деньги когда наберется профессионализма и будет прав. А писать гуевые обертки, что-бы программировать «мышкой», я думаю это полезно только тем кто пишет эти обертки. Тот, кто будет ей пользоваться рискует стать бестолковой мартышкой без понимания сути того, что происходит внутри. Профессионализм — это результат долгого и упорного труда, за месяц или даже год, хорошего спеца не получить. А как только он им становится — он растет в цене.
Sign up to leave a comment.

Articles