Eclipse+AVR+ARM: первые шаги. Часть пятая

Рейтинг пользователей: / 2
ХудшийЛучший 
Статьи - Программирование

Шаг 6: Прошивка AVR при помощи AVRDude.

Ну вот, наконец-то мы создали проект, настроили компилятор, скомпилировали его и готовы прошить микроконтроллер, чтобы насладиться работой своей программы «в железе». И для этого нам поможет утилита avrdude, стандартно входящая в комплект WinAVR, и поддерживаемая уже упоминаемым не раз плагином avr-eclipse.

AVRDude - это универсальный программатор, поддерживающий огромное число схем программаторов, работающих через различные интерфейсы. Минус у него всего один - это утилита для работы в командной строке, что далеко не праздник. Можно выйти из положения при помощи bat-файла, но гораздо удобнее и приятнее воспользоваться сервисом IDE Eclipse.

AVRDude мы уже упоминали в предыдущей статье, теперь рассмотрим настройки и использование этой утилиты детально.

e_5На скриншоте показан вид окна настроек AVRDude для конкретного проекта. Правда, в вашем случае скорее всего в списке Programmer configuration (конфигурация программатора) будет пусто - это я не стал удалять уже ранее сделанные настройки у себя, но у вас-то из еще нет в принципе. Прежде, чем изучить процесс создания новой конфигурации AVRDude, рассмотрим, что же за параметры на этой закладе есть еще.

Если вы применяете для прошивки микроконтроллеров JTAG ICE, то вы можете добавить задержку для прошивки микроконтроллеров, работающих на частоте менее 4МГц. Задержка в микросекундах задается в окошке JTAG ICE bitlock. К сожалению, я не имею этого устройства и не знаю, что это за задержка и на что влияет. Если вам повезло больше, вы сможете поделиться со всеми в комментариях к статье.

А вот о следующей задержке Bit state change delay я знаю больше. Это задержка при смене уровня сигнала в программаторах под общим названием «bit-bang programmers». Самое подходящее русскоязычное название этого типа программаторов, это программаторы, программно дрыгающие ногами. Все знают соответствующие примочки к COM или LPT порту типа «5 проводков» - это они и есть. Так вот, если компьютер шибко быстрый, а тактовая частота программируемого МК шибко маленькая, дрыганье ножками осуществляется слишком резво, и прошивка не идет - говорят, «МК не откликается». Чтобы затормозить этот процесс и нужна эта самая задержка, подбирается она экспериментально один раз, как правило, лишь для того, чтобы переустановть фьюзы тактирования МК на бОльшую скорость, после чего все должно работать и без нее.

Итак, пробуем создать новую конфигурацию AVRDude, для чего нажимаем кнопочку New рядом с пустым (или не пустым) списком конфигураций - откроется весьма крупное окно.

e_5В строке Configuration name вводим название нашей конфигурации, в строке Description - комментарий к этой конфигурации. В списке Programmer Hardware ищем совместимую аппаратную платформу с тем программатором, который у нас имеется. Среди поддерживаемых есть STK500, STK200, разные варианты PonyProg-совместимых адаптеров к LPT и COM портам и многие другие.

Правее этого списка аппаратуры мы можем видеть соответствующее содержимое файла конфигурации AVRDude, причем показан путь к файлу и номер первой строки описываемой аппаратуры. Внимательное изучение этого содержимого для разных схем программаторов поможет уловить закономерность, а значит, даст шанс добавить к этому списку свой вариант, если это надо. Но вообще-то это чисто для информации показано.

Если ваш программатор подключен к нестандартному для выбранной схемы порту, надо вручную указать его в строке Override default port. Если это СОМ-порт, и при этом ваш программаор работает на нетипичной скорости, надо указать битрейт в окне Override default baudrate.

Далее, можно задать состояние линии RST после прошивки из следующих вариантов:
Restore to previous state - восстановить предыдущее состояние
Activated - оставить в активном состоянии (т. е. RST=LOW)
Deactivated - оставить в неактивном состоянии (т. е. RST=HIGH)

Обычно можно не трогать эти опции, оставив все по умолчанию.

Если схема программатора поддерживает управление питанием МК, можно и для VCC аналогично определить состояние после прошивки при помощи опций VCC Lines (однако, я пока с такими программаторами не сталкивался).

В окне Delay between avrdude invocations можно ввести в миллсекундах паузу между этапами прошивки. Как правило, и без этого все отлично.

Ну и в самом низу окна вы можете видеть, как все введенные вами настройки на самом деле выглядят в командной строке утилиты.

Сделав все необходимые настройки, нажимаете OK и получаете созданную конфигурацию. Она будет запомнена, и при создании следующего проекта AVR вы уже сможете просто указать ее.

Расмотрим остальные закладки окна настроек параметров прошивки.

e_5Закладка Flash/EEPROM определяет режимы прошивки памяти программ МК Upload Flash memory image и прошивки содержимого EEPROM - Upload EEPROM Image. Вариантов три для каждого вида памяти:
do not upload - не прошивать
from build - прошить результатом сборки проекта
from file - прошить содержимым указанного файла.

Комментарии, как говорится, излишни.

e_5Закладка Fuses. Фьюзы микроконтроллеров AVR - это сущая головная боль начинающих. Однако, это к нам не относится, т. к. мы-то будем иметь дело с очень качественным редактором фьюзов. На скриншоте вы видите содержимое окна по умолчанию. Имеется опция do not set fuse bytes - не устанавливать фьюзы (по умолчанию активирована), опция from fuse bytes file - прошить фьюзами из файла (и кому это надо?!), и самая лучшая, самая удобная опция direct hex values - задать непосредственно шестнадцатиричное значение фьюзов. Стоит выбрать эту опцию, и окно преображается.

e_5Появляется выбранный нами в свойствах проекта тип МК (на скриншоте это ATmega32), а так же в виде таблицы подробно расписанные установленные фьюзы во всех имеющихся байтах. Однако, в таблице можно только увидеть, но нельзя изменить эти биты. А изменить их можно несколькими способами.

1. Ввести HEX-значения fuse-байтов в соответствующие окна - самый неудобный метод.

2. Нажать кнопку  и установить все биты в 1

3. Нажать кнопку  и установить все биты в 0

4. Нажать кнопку  и установить значение фьюзов по умолчанию (если это возможно)

При все этом богатстве выбора я бы никогда не советовал вам пользоваться вариантами 2 и 3. Зато я настоятельнорекомендую вам способы наиболее безопасно задать нужную конфигурацию фьюзов, а именно:

1. Сначала нажать кнопку  и загрузить из подключенного к программатору МК текущее состояние его фьюзов.

2. Нажать кнопку  и открыть окно удобного редактора для коррекции фюзов.

Если первый этап невозможен, то начинайте сразу со второго.

e_5_010e_5_011Как видите, все просто и понятно: читаете, отмечаете нужные варианты, выбираете из предлагаемых списков подходящее - и все. Ошибки исключены, если вы сумеете по-английски прочесть пояснения, надеюсь, с этим проблем не будет. После нажатия ОК обновится содержимое окна просмотра фьюзов.

Как видите, и HEX-значения видны, и в табличке тоже все показано. Надеюсь, вам понравится. Единственное, о чем хочу предупредить: фьюзы - это все-таки весьма опасная штуковина. Если в процессе прошивки произойдет сбой, можно потерять кристалл навсегда или очень на долго. Чтобы риск таких потерь минимизировать, рекомендую прошивть amps только один раз - при первой прошивке МК, а затем не полениться и отключить прошивку фьюзов, активировав опцию do not set fuse bytes.

e_5_012e_5_013Переходим на закладку Lock Bits и видим, что тут почти все точно так же, как и с фьюзами, я даже пояснять ничего не стану.

Иное дело на следующей закладке Advanced.

Тут нам предлагается запретить автоматическую проверку правильности записи в МК путем установки галочки Disable automatic verify check (ускоряет процесс прошивки), отказаться от проверки сигнатуры МК (известна проблема, когда сигнатура вдруг перестает считываться или считывается неверно при полном сохранении остальной функциональности МК) галочкой Disable device signature check, включить режим симуляции прошивки галочкой Simulation mode (а нафига?!) и, наконец, запретить автоматическое стирание чипа перед прошивкой Inhibit auto chip erase (тоже не понятно, зачем, ведь нестертый чип прошить невозможно).

Самая последняя закладка Other содержит всякие дополнительные возможности.

e_5_014
Весьма интересная возможность вести подсчет количества стираний чипа. Известно, что МК AVR имеют довольно небольшой лимит перезаписей, и такой контроль может быть полезен. Однако, для этого счетчика надо будет пожертвовать последними 4 байтами EEPROM микроконтроллера, где и будет храниться это число. Если активировать Enable erase cycle counter галочкой, то можно будет вести начальное значение счетчика, а затем записать его в МК (или считать из него), в последующем этот счетчик будет автоматически изменяться по мере перепрошивок кристалла.

Как видите, простой процесс прошивки - а сколько возможностей! После сказанного даже как-то стыдно говорить о процессе прожига - ведь это всего-навсего 2 щелчка мышкой: первый раз на имени проекта в окне Project Explorer, а второй - на кнопке e_5_015, после чего останется только смотреть на процесс в консоли Eclipse. Разумеется, перед тем, как нажать на эту кнопку, следует правильно подключить программатор к порту компьютера, а сам МК - к программатору.

Вот и все. Впереди нас ждет отладка в IDE Eclipse - сначала для проектов AVR, а затем - для ARM.

 Обсудить на форуме (0 комментариев).

Возможно, вас так же заинтересует:



Темы форума

Нет сообщений для показа

Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня810
mod_vvisit_counterВчера4300
mod_vvisit_counterНа этой неделе20248
mod_vvisit_counterНа прошлой неделе24305
mod_vvisit_counterВ этом месяце95845
mod_vvisit_counterЗа все время16240748

Ваш IP: 54.167.253.186
 , 
24 Ноя. 2017