Настройка Eclipse для работы с avrdude
Шауэрман Александр А. shamrel@yandex.ru
В учебном стенде LESO6 загрузка hex-файла в память программ микроконтроллера может осуществляться в двух режимах. В первом режиме микроконтроллер доступен через интерфейс ISP (In-System Programmable), который обеспечивает полный доступ к памяти, fuse и lock битам. Известно, что неверно установленные fuse могут вывести микроконтроллер из строя, потому этот режим использует для первоначальной установки fuse и записи в старшие адреса памяти специальной программы-загрузчика (bootloader). Во втором режиме при сбросе микроконтроллера (кнопка "Reset" – SW1) или подачи питания управление передается загрузчику, расположенному в старших адресах памяти программ. Загрузчик инициализирует последовательный порт uart (115200 бит/сек, 8-бит, 1 стоп) и некоторое время ждет по нему приход спецсимвола, означающего, что далее последует загрузка кода. Если за контрольный промежуток времени спецсимвол не получен, загрузчик передает управление в нулевой адрес – начинает выполнятся основная программа. Если спецсимвол получен, загрузчик ожидает hex-файл. По другому заставить загрузчик ожидать hex-файл можно выполнив сброс при удержании нажатой кнопки "1" клавиатуры. Текущее состояние загрузчика показывают светодиоды. Если программирование производится с использованием загрузчика, биты блокировки и fuse биты доступны только для чтения, что исключает возможность вывода из строя учебного стенда.
Переключение режима программирования ISP/bootloader выполняется перемычкой, для доступа к которой нужно раскрутить корпус. В обоих режимах на стороне компьютера для доступа к памяти микроконтроллера можно использовать программу avrdude.
Программа avrdude – это консольное приложение, которое, используя определенные аппаратные программаторы, осуществляет доступ к памяти микроконтроллера. Avrdude может выполнять операции чтения и записи памяти программ (Programm Flash) и памяти данных (EEPROM), а также писать и читать биты конфигурации – fuse-биты. Avrdude – кросплатформенное приложение, существует для различных операционных систем и распространяется в виде исходного кода. Официальный сайт проекта: www.nongnu.org/avrdude.
Для установки в операционной системе Linux (на примере Ubuntu 14.04) следует выполнить в терминале:
sudo apt-get install avrdude
Для установки в операционной системе Windows avrdude можно скачать архив с нашего сайта и распаковать в любую директорию.
Использование avdrude совместно с AVR-Eclipse
В свойства среды ("Window" -> "Preferences") в пункте "AVR" -> "Paths" для "AVRdude" указываем путь к avrdude.exe.
В пункте "AVR" -> "AVRDude" добавляем новую конфигурацию программатора.
В окне "Edit AVRDude Programmer Configuration" в строке "Configuration name" вводим название конфигурации. Название может быть произвольным, в примере – "leso6". Для загрузки hex-файла в память программ микроконтроллера ATMEGA128RFA1 стенда LESO6 используется встроенный загрузчик (bootloader), совместимый с программатором AVR911. В окне "Programmer Hardware" выбираем строку, содержащую "AVR911". В строке "Override default port" вводим последовательный порт, к которому подключен стенд. Если работаете в операционной системе Windows, то запись имеет вид "COMx", где "х" – номер COM-PORT, например, COM6. Если операционная система Linux – /dev/ttyUSBx, где "х" – номер устройства. Если к компьютеру подключено всего одно устройство с преобразователем "USB/serial", то устройство будет /dev/ttyUSB0. Устанавливаем скорость соединения с загрузчиком 115200 (бит/с). Остальные значения оставляем поумолчанию. Нажимаем "Ок".
В настройках проекта в пункте "AVR" -> "AVRDude" на вкладке "Programmer" указываем созданную нами конфигурацию. На остальных вкладках можно настроить поведение программатора. В большинстве случаем нам подойдут настройки по умолчанию.
Настройка программатора выполнена. Загрузка hex-файла в микроконтроллер выполняется нажатием пиктограммы "AVR*", либо сочетанием клавиш "Ctrl+Alt+U". Естественно, перед загрузкой проект должен быть оттранслирован и успешно создан hex-файл.
avdrude как внешний инструмент
При создании проекта из готовых исходных файлов с существующим Makefile плагин AVR-Eclipse не активен, и потому в настройках проекта отсутствует пункт меню "AVR" -> "AVRDude". В этом случае avrdude должен быть подключен как внешний инструмент. Настройка внешних инструментов производиться в окне "External Tools Configuration". Вызвать это окно можно разными способами, например, в меню "Run" выбрать "External Tools" -> "External Tools Configurations..." или на панели инструментов нажать соответствующую пиктограмму.
В окне "External Tools Configuration" нам предстоит ввести некоторые параметры и опции. Для того чтобы понять что вводить, следует познакомиться с интерфейсом avrdude. Как уже говорилось, avrdude – консольная программа, а это значит, что запускать ее следует в интерпретаторе командной строки, для Windows – это cmd, для Linux – любой эмулятор терминала. Запуск производится с некоторыми опциями, определяющими поведение программы. Рассмотрим основные:
-p – тип микроконтроллера. В нашем случае m128rfa1.
-b – скорость обмена данными по последовательному порту. Для стенда leso6 – 115200.
-c – тип программатора. Загрузчик стенда leso6 поддерживает avr911.
-P – последовательный порт (например, COMx, /dev/ttyUSBx).
-U – операции с памятью.
Формат опции -U следующий: -U memtype:op:filename[:format], где memtype – тип памяти; op – тип операции; filename – имя файла, из которого будет читаться данные, если мы производим операцию записи в память контроллера, если же мы читаем из контроллера, то filename – имя файла, в который будут данные записаны; format – опциональный параметр, указывает тип файла, например i – Intel hex, a – тип файла определится автоматически. Параметр memtype может принимать значения: flash (память программ), eeprom (память данных), lfuse (младший байт fuse), hfuse (старший байт fuse), efuse (дополнительные байт fuse) и некоторые другие. Параметр op может принимать значения: r (читаем из памяти микроконтроллера), w (записываем в память микроконтроллера), v (верифицируем память, сравниваем данные в памяти микроконтроллера с тем, что записано в указанном файле). Другие команды и параметры можно узнать обратившись к справке по avrdude.
Таким образом, для того чтобы загрузить hex-файл "probe.hex" в память программ микроконтроллера, в командной строке нужно выполнить:
avrdude -p m128rfa1 -c avr911 -PCOM6 -b115200 -U flash:w:probe.hex:a
Пояснение: программируем контроллер m128rfa1 (ATMEGA128RFA1) с помощью программатора avr911, который подключен через COM-port с номером 6 (COM6) на скорости 115200 бит/с. Записываем (w) в память программ (flash) файл probe.hex, тип файла определяем автоматически (a).
Если прошить не получается, то (напоминаю) можно выполнить сброс удерживая нажатой кнопку "1" клавиатуры, заставляя загрузчик ожидать hex-файл.
Настраиваем конфигурацию программатора в окне "Run-> External Tools->External Tools Configuration". В строке "Name" вводим имя нашей конфигурации, например "leso6". В строке "Location" прописываем путь к исполняемому файлу avrdude. В строке "Working Directory" указываем путь к директории с hex-файлом. В области "Argumets" зададим основные опции avrdude: -p m128rfa1 -c avr911 -PCOM6 -b115200 -U flash:w:probe.hex:a. Нажимаем "Apply", а затем "Close".
Для того, чтобы для каждого проекта не нужно было настраивать программатор, опции можно задать через глобальные переменные среды. Так вместо имени файла, можно указать переменную ${project_name}, путь к файлу можно описать через переменную, содержащую путь к текущему проекту ${project_loc}. Увидеть весь список переменных поможет кнопка "Variables...". В области "Argumets" строка примет вид: -p m128rfa1 -c avr911 -PCOM6 -b115200 -U flash:w:${project_name}.hex:a.
Запустить программатор можно через меню "Run" -> "External Tools" -> "leso6", либо через соответствующую пиктограмму на панели инструментов.
Если вы используете несколько конфигураций, или по какой-либо причине конфигурация "leso6" не отобразилась в списке "External Tools", следует выполнить "Organize Favorites...".
Вложение | Дата | Размер |
---|---|---|
avrdude для Windows | 02/07/2015 | 546.08 КБ |
Комментарии:
чт, 09/03/2015 - 02:16
Постоянная ссылка (Permalink)
Ubuntu 14.04. Как запустить? Нет, не так!
Как запустить понятно. Но работает только под sudo. Как сделать так, чтоб для прошивки устройства не требовались права СуперЗвера?
чт, 09/03/2015 - 19:45
Постоянная ссылка (Permalink)
Для начала посмотрите, в какие группы входит пользователь (команда
groups
), если среди групп нетdialout
, то добавьте текущего пользователя туда:команда
whoami
- в обратных кавычках, если будет ругаться, то просто напишите на этом месте имя текущего пользователя. Теперь нужно выйти из системы и зайти снова, и проверить командойgroups
все ли у нас получилось. Теперь для доступа к ttyUSB права суперюзера не нужны.