[Программирование микроконтроллеров] Что делать, если ты уже научился программировать микроконтроллеры?

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
13-Дек-2020 06:32

Привет Хабровчанин,
В данной статье я хочу порассуждать на тему, как развиваться программисту микроконтроллеров. Данная статья — это небольшое чтиво для тех, кто как и я когда-то, не знал, куда дальше развиваться в своей профессии. Возможно, ты сможешь тут подчерпнуть что-нибудь интересное.
На данный момент я работаю программистом уже 3 года, и до недавнего времени, я не видел, что делать дальше. Однако, тогда я повстречал человека с 20+ лет стажем программирования встраиваемых систем, и общаясь с ним, я выделил некоторые аспекты, в которых можно развиваться. Здесь я и хочу поделиться ими, а также свои личным опытом. Я ни в коем случае не хочу никого учить, я просто поделюсь своими наработками, а ты уже сам решай, полезны эти советы или нет.
Каждый месяц появляется очередная статья для начинающих, с мигающим светодиодом. В свою очередь, статей для программистов среднего уровня просто нету. Здесь же я хочу показать, что правильно программирование микроконтроллеров задача нетривиальная. Этому нельзя научится за пару лет. В 2020 году она мало чем отличается от задачи программирования обычных систем, так как МК становятся все мощнее и мощнее. Разумеется, я говорю о проектах в миллион строк и более.
Похоже что вступление несколько затянулось, поэтому перехожу к делу. В данной статье будет рассмотрен только аспект программирования, схемотехнику я не затрагиваю. Я постарался распределить пункты по приоритету, однако разница между первым и последним невелика, все пункты важны.
1. Изучай язык С++.
Это банальный совет, однако, я посчитал нужным это выделить. Дело в том, что почти все, кого я знаю, продолжают и сейчас программировать на чистом Си. Почему это плохо? По разным данным, проект, в котором более 100000 строк (что не является большим количеством), становится практически не поддерживаемым на Си. В 2020 году, компиляторы для МК вышли на такой уровень компиляции исходного кода, что выхлоп с Си и С++ не будет отличаться. А вот читаемость кода будет совершенно иная. Классы, ООП, виртуальные функции, умные указатели и т.п. — все это сильные помощники программисту. К сожалению, выделить и посоветовать какую-то одну книгу не представляется возможным, так как их слишком много.
2. Изучай паттерны проектирования.
Не секрет, что написать хорошую программу на С++ та еще задача. Слишком уж обширен этот язык, слишком многими инструментами он изобилует. Что такое паттерн проектирования? Это некое руководство по решению часто повторяющихся задач. Тут я могу порекомендовать классику, а именно труд банды четырех «Паттерны объектно-ориентированного проектирования Гамма Эрих, Хелм Ричард». Сложно найти обычного программиста на С++ который это не читал, чем мы хуже?
3. Открой для себя дивный мир STL
Думаю, что эта библиотека не нуждается в представлении. Для тех кто все же не знает что это — это стандартная библиотека шаблонов. Она позволяет делать код короче и понятнее за счёт обобщенного программирования. Этот инструмент уже встроен в С++. Однако по непонятным причинам, очень сложно найти проект под МК, где она используется. Хотя современные компиляторы (тот же IAR) её поддерживают.
4. Прицепи к своим проектам Unit tests.
Тут мне особо написать нечего. О том что это такое, и для чего — написано бесчисленное количество трудов. Эффект от Юнит тестов и разработки через тестирования значительный. Данные тесты позволяют отловить много багов еще до того, как фиксы отдается в ОТ. К тому же, есть замечательная книга по этому вопросу: «Jeff Langr — Modern C++ Programming with Test-Driven Development (2013)».
5. Изучи Ядро
Не смотря на то, что мы программируем разные микроконтроллеры, у большинства это ядра серии CortexM. У ядер есть много различных фишек, такие как битовые маски или отладочные таймера. Все это может пригодится. Также полезно знать, как например, сохраняются РОНы при прерывании. Тут я могу порекомендовать «Ядро Cortex-M3 компании ARM. Полное руководство Джозеф Ю».
6. Изучи Ассемблер
Это может показаться смешным, но я считаю, что знать ассемблер для отладки приложений просто необходимо. К тому же писать на нем довольно весело. С помощью Ассемблера, можно чётко понимать, что у тебя происходит в данной конкретной точке остановки. Тут также подойдет книга из предыдущего пункта.
7. Пару слов об IDE
Последнее время я перешёл на связку VS+VGDB. Эта связка имеет кучу плюсов, и вместе они перевешивают единственный плюс IAR, размер бинарника. В gcc можно поставить флаги расширенных предупреждений, а также флаг того, чтобы предупреждение считалось ошибкой (в IAR это тоже есть, кстати). При таком подходе, твоя IDE сама помогает тебе кодить чисто. Об этом есть хорошая статьяна хабре. Кстати, я встречал такие компании, которые для тестового задания (при собеседовании) обязуют писать код с этими флагами.
Вот пожалуй и все. Надеюсь, если вы прошли по ссылке, то нашли то, что искали. Пожалуйста, поделитесь в комментариях, какие ещё пути развития могут быть у Embedded программистов.
P.S. В данной статье есть такие вещи, о которых не говорится, например программирование сложной периферии через регистры или RTOS. Подразумевается, что читатель уже владеет этими навыками, или по крайней мере, знает об их существовании.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_stm32, #_programmirovanie_mikrokontrollerov (программирование микроконтроллеров), #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 21-Май 05:46
Часовой пояс: UTC + 5