В связи с нововведениями на сайте я решил наконец выйти из подполья и написать что-нибудь полезное.
Ну а так как я программирую различные микроконтроллеры (MCU) и являюсь поклонником Eclipse, то решил написать об этом.
Начну со своей истории знакомства с программированием PIC, а закончу советами тем, кто по долгу службы или хобби программирует на МК семейства PIC, хотя, впрочем, эти же советы подойдут и для других архитектур МК .
Среди металлистов я оказался в 2006 году, на 4-м курсе университета, когда пошел на стажировку в научно-технический центр, где, собственно, и работаю по сей день.
В то время мейнстримом в нашей компании было использование Keil uVision2 для МК на базе C51 и ARM. Однако под ПИК мне давались простые задачи, такие как мониторинг и управление одним сигналом (кнопкой включения-выключения), а моей первой средой разработки были блокноты - бумага и компьютер, плюс бумажные книги на ПОС.
Моя среда разработки выглядела примерно так:
Для компиляции файлов мне дали экзешник компилятора и bat-файл, который я использовал совершенно необдуманно — даже не знаю, что там за компилятор.
В общем, времена были суровые.
Эх, если бы мне тогда кто-нибудь сказал, что существует такое чудо, как notepad++!
Потом был MPASM, но он убогий и мне о нем почти нечего вспомнить.
Кажется, я тоже писал для него программы в блокноте.
MPLAB IDE
Совершенствуя свои навыки, я узнал, что вместо Блокнота можно использовать самую крутую, как мне тогда казалось, MPLAB IDE:Оно включает:
- CC18 и какой-нибудь другой компилятор, который можно выбрать в настройках проекта;
- хороший набор библиотечных функций;
- inc-файлы плагинов, описывающие МК семейства PIC, адаптированные для использования в ассемблере;
- встроенный отладчик и программатор;
- Но главное — поддержка языка C — для меня это было глотком свежего воздуха!
Справку по встроенным функциям библиотеки надо открывать отдельно и искать, что, где и как называется.
Для новичков это невыполнимая задача.
Однако на тематических форумах до сих пор спрашивают, какой компилятор лучше использовать; некоторые продолжают использовать MPLAB IDE.
МикроС
Задания для ПОС мне давались все реже и реже; развитие с МК серии C51, ARM7 (не путать с ARMv7!) и Cortex-M начало набирать обороты.Но иногда ко мне снова обращались за помощью в написании программ для PIC, и я из любопытства пробовал новые инструменты разработки.
К тому моменту я уже давно активно программировал в Keil uVision3 — возвращаться к допотопной MBLAB IDE мне не хотелось.
Вот так я познакомился с MikroC, который поставляется в комплекте с программатором PICKit:
Набор вкусностей практически такой же, как в MBLAB IDE, но все же богаче:
- твой собственный компилятор
- встроенные библиотеки функций с удобным поиском и доступными описаниями;
- подключаемые h-файлы, описывающие МК семейства PIC;
- набор дополнительных внешних утилит
- широкий спектр примеров с источниками
- встроенный отладчик и программатор;
- встроенные вкладки открытия файлов;
- навигация по функциям в файле
Даже новички смогут легко разобраться с помощью помощи и быстро создать работающий код. Большинство наших разработчиков, работающих с PIC, используют эту среду при разработке.
Так или иначе, завершив очередной проект в MikroC, я радостно забыл о PIC и подумал, что никогда к ним не вернусь.
Однако история любит повторяться!
Через 3 года, в 2013 году, возникла задача разработать программное обеспечение на основе готовой конструкторской документации, которая содержала PIC18F4680 .Честно говоря, я даже не знал, что среди ПИКов есть такие монстры, всегда занимался только мелочами! Задачи были нетривиальные — реализация загрузчика для внутрисхемного обновления ПО, работа в режиме жёсткого реального времени, работа с АЦП, внешними ЦАП, линиями управления и несколькими таймерами-компараторами.
Кстати, немного отвлекшись от темы: только на этом проекте я полностью понял, что такое банки памяти в PIC, как они работают и какие ограничения накладывают на разработку ПО.
Например, все банки МК имеют размер 256 байт. И хоть убей, невозможно создать структуру для PIC, превышающую по объёму эти 256 байт - ограничение выявилось в ходе реализации протокола обмена, ну да ладно, поехали.
К этому времени Keil uVision3 мне уже изрядно поднадоел, так как сложность проектов росла и мне не хватало функционала, доступного в Keil. Примерно в 2011 году я освоил Eclipse, GCC, синтаксис makefile и начал запускать все свои проекты с использованием этих инструментов.
Кроме того, у меня уже был опыт использования связки Eclipse+ СДКК для реализации проекта по С51 МК.
После появления Keil uVision4 я установил его, потестировал полчаса и снес, так как по простоте программирования он все еще сильно отстает от Eclipse.
Затмение + SDCC
В настоящее время Eclipse является фактическим стандартом в области разработки программного обеспечения для встраиваемых систем.Вот список IDE на базе Eclipse от популярных брендов:
- NXP LPCXpresso IDE
- Freescale CodeWarrior
- Студия платформы Xilinx
- Инструменты Техаса CCS
- Инструменты разработки Android
которые значительно облегчают жизнь:
Основной проблемой чистого Eclipse для разработки на C/C++ под МК является сложность вовлечения в него аппаратных программистов, заменяющих привычные инструменты, работающие после установки в 1-2 клика, какими-то плагинами, требующими настройки, или, того хуже, с ручные написанные make-файлы — все это требует значительных первоначальных усилий по чтению и изучению документации, поиску помощи и обучающих программ для новичков в Интернете.
Говорю как человек, имеющий опыт перевода команды аппаратных программистов на Eclipse. Только для моей команды разработчиков Если вы прочитали эту статью, дайте знать, я хотя бы узнаю, как читаются наши профильные хабы на Хабрахабре.
Однако, полностью освоив синтаксис за месяц и написав один раз качественный make-файл, все остальные проекты создаются по устоявшемуся шаблону и требуют лишь минимальной индивидуальной настройки.
Также нам пришлось сделать ряд дополнительных шагов по настройке проектов для PIC — по умолчанию Eclipse понимает синтаксис GCC. Различные макросы и директивы, встроенные в другие компиляторы (будь то CC18 или SDCC), приходится разделять на этапе компиляции и на этапе индексации проекта.
Чтобы редактор не выдавал ложные ошибки для неизвестных директив при навигации по коду, к исходникам проекта подключается файл.
eclipse-syntax.h : eclipse-syntax.h
Теги: #pic #mikroc #mplab ide #eclipse #цветовая тема eclipse #makefile #sdcc #gputils #keil #cc18 #programming #eclipse#ifndef ECLIPSE_SYNTAX_H_ #define ECLIPSE_SYNTAX_H_ // keyword SDCC defined when compiling with SDCC compiler #ifndef SDCC
-
Социализация
19 Oct, 24 -
Значение Статьи Реклама И Маркетинг
19 Oct, 24 -
Заткнись, Программист
19 Oct, 24 -
Кубик Радика Или Лунные Часы
19 Oct, 24 -
Что За Штука — Совместимость Hl7?
19 Oct, 24