Привет Гиктаймс!!! Новогодние праздники подходят к концу, все салаты съедены, шампанское выпито, и жизнь потихоньку начинает возвращаться в привычное русло. И это хорошо. Но речь совсем не об этом.
А дело собственно, вот в чем: многие из нас, начиная свой путь программирования микроконтроллеров с платы Arduino, подходили наконец к такому моменту,
когда в родной среде Arduino IDE становилось тесновато, а крутые среды разработки типа Atmel Studio, Keil, Microsoft VS пугали обилием настроек и инструментов.
Мне, например, очень удобно работать с механизмом вкладок Arduino IDE, разрабатывая большие проекты, это чисто мое предпочтение — на самом деле очень много времени занимает перенос кода, функций и переменных в заголовочные файлы и классы. Но на самом деле, есть более весомые аргументы в пользу перехода от Arduino IDE к более серьезным инструментам разработки. Это в первую очередь, наличие отладчика. Для начинающих программистов микроконтроллеров это кажется несущественным, но когда время идет, и сложность программ увеличивается, увеличиваются и требования к работоспособности и функционалу кода МК. И тут как раз возникает необходимость понимать, и видеть, как работает твой код на микроконтроллере. Даже если ты не обзавелся каким нибудь jtag — девайсом, очень приятно наблюдать даже в симуляторе, как нужные значения падают в нужные регистры во время работы программы. Ну и конечно же, если вы всерьез решили изучить программирование микроконтроллеров и архитектуру AVR — то без дебаггера просто никак не обойтись. Я уже молчу про скрытую работу wiring — препроцессора Arduino IDE, который позволяет писать более простые программы, используя функционал библиотек Arduino, и который добавляет в программу очень много мусора, который занимает память программ контроллера, и использует вхолостую ресурсы МК. Также немаловажным фактором является скромность редактора исходного кода среды Arduino IDE. И как водиться в миру, настоящие хардкорные разработчики встраиваемых систем и автоматики пишут только на си и ассемблере, полагаясь на собственный интеллект и опыт, а не на разработки итальянских студентов (против которых ничего плохого не имею, и камней в их огород бросать не буду).
Если вы согласны с вышесказанным — значит вы уже пробовали, или только собираетесь установить и использовать Atmel Studio 7. Я сам программист начинающий, можно сказать, программирование учил очень давно в школе, это был интерпретируемый Бейсик на машинах MSX. И лишь только пару лет назад пришлось, как говорится, по долгу службы приступить к изучению и освоению си и с++. Поэтому с небольшой высоты колокольни собственного опыта, хочу порекомендовать AVR Studio, а именно Atmel Studio 7. На самом деле, эта среда доставила мне достаточно нервотрепки с ее установкой и запуском («окна» я использую исключительно для работы и потехи, причем это Win 7 SP1 64), было несколько попыток установить ее с разбегу, но это заканчивалось фэйлом, пока на чистую систему я не установил обновление «Windows6.1-KB3033929-x64.msu», после чего все таки мои старания были вознаграждены, и среда запустилась. После было много сказано отнюдь не литературных слов и выражений, пока среда не стала более менее адекватно работать (Atmel Studio 7 у меня жутко тормозила поначалу, на машине с хорошим Core i7 и 8 гигами шустрой ОЗУ DDR4, не пойму, что стало потом, то ли среда каким то мистическим образом прокэшировалась в системе, или же я привык, но сейчас все неплохо работает). Также я хочу подметить, что эта среда так или иначе разработана и выпущена разработчиками AVR и ARM контроллеров Atmel, и посему поддерживает все свои контроллеры, и предоставляет все необходимые для работы библиотеки на с/с++. Огромный плюсом, и как я полагаю, неотъемлемой частью является наличие ассемблера для описанных выше платформ. Также в седьмой версии программы появилась поддержка конвертации скетчей Arduino в код программы для контроллера на языке си. Опция эта работает пока что несовершенно, и неспособна преобразовывать скетчи с несколькими вкладками, из-за чего теряет пока что определенную актуальность.
Но есть у этой среды и определенный недостаток: она не поддерживает наиболее популярный, и самый дешевый программатор USBaSP, и не поддерживает из «коробки» возможность программирования напрямую(используя порт USB) плат Arduino. И поэтому я в этой статье хочу поделиться определенным «лайфхаком», и я надеюсь, что это кому то будет действительно полезным.
Итак, приступим. Что нам необходимо иметь: ПК с установленными Atmel Studio 7, Arduino IDE желательно последней версии, и драйверами для вашей платы Arduino, ну и собственно, сам «пациент». Подключаем контроллер к ПК, дальше устанавливаются драйвера, и после вы должны выполнить несколько манипуляций, но это нужно будет сделать один раз для разных плат Arduino.
Сначала открываем среду Arduino IDE, выбираем любимый наш Блинк, и включаем вывод компилятора в окно компиляции внизу редактора:
Потом компилируем скетч, не загружая его в контроллер:
После вам необходимо открыть какой нибудь текстовый редактор, и выполнить пару вещей — скопировать команды для компилятора и флаги компиляции в окно редактора, и отредактировать подобным образом:
После, открыв среду Atmel Studio 7, выбираем во вкладке Tools пункт External Tools, cоздаем новый профиль (можете сделать несколько разных профилей для каждой отдельной платы Arduino, где в соответсвующие строки вставляем наши параметры, где указаны адрес программы avrdude, и команды для компилятора:
Потом можно создать любой проект, написав, к примеру, тот же код любимой моргалки, но уже на си, и загрузить наш код в контроллер, сначала собрав ваш проект, нажав F7 (Build project), и после кликнув на пункте с именем вашего профиля программирования во вкладке Tools:
Программа ваша будет записана в память программ контроллера, загрузчик останется на своем месте, и вы всегда сможете открыть Arduino IDE и записать ваш код привычным способом. Благодарю всех за внимание, и надуюсь, что данный совет будет кому нибудь полезен.
Источник