Atmel Studio: настройка программирования Flip DFU Печать
Добавил(а) microsin   

В среде программирования Atmel Studio есть удобное меню для вызова внешних программ и утилит: Tools. В это меню с помощью редактора меню External Tools... можно добавить запуск сервисных программ. Например, это может быть запуск AVRDUDE для программирования микроконтроллера. В этой статье на примере описывается настройка программирования AVR ATmega34U4 через его штатный USB-загрузчик FlipDFU (в среде Atmel Studio 7.0, Windows 10 Pro 64 бита, версия 1809).

Микросхемы AVR с интерфейсом USB можно программировать с помощью утилит командной строки. Для этого существует фирменная утилита Atmel batchisp.exe (примеры её использования см. по ссылкам [2,3,4]) и GNU-утилита dfu-programmer [1] (пример её использования см. в [5]).

[Программирование с помощью dfu-programmer.exe]

dfu-programmer.exe это бесплатная утилита командной строки, которая заменяет утилиту программирования batchisp.exe от Atmel. Подразумевается, что Вы скачали исполняемый файл dfu-programmer.exe, и записали его в произвольную папку на диске (в этом примере используется каталог C:\Program Files (x86)\dfu-programmer\).

Процесс по шагам в среде Atmel Studio:

1. Зайдите в меню Tools, выберите пункт меню External Tools..., откроется диалог настройки дополнительных пользовательских инструментов External Tools.

2. В поле ввода Title: введите произвольный текст, обозначающий Вашу запускаемую утилиту / действие. Этот текст появится как дополнительный пункт в меню Tools. Например, введите текст DFU-ATmega32U4.

AS7 External Tools Title

3. Создайте командный файл program-DFU.bat следующего содержания:

"%ProgramFiles%\dfu-programmer\dfu-programmer.exe" atmega32u4 erase --force
"%ProgramFiles%\dfu-programmer\dfu-programmer.exe" atmega32u4 flash %1
"%ProgramFiles%\dfu-programmer\dfu-programmer.exe" atmega32u4 launch --no-reset

В первой строке утилита dfu-programmer.exe сотрет память FLASH микроконтроллера ATmega32U4, вторая запишет в него программу. Записываемый двоичный файл программы представлен опцией командной строки %1, это параметр, который будет передан в файл program-DFU.bat. Третья строка задает прямой запуск записанной программы без использования сторожевого таймера.

Командный файл program-DFU.bat запишите в корневой каталог проекта (там, где находится файл проекта Atmel Studio с расширением *.atsln), или можете сохранить его в любое доступное место. В этом примере для удобства я создал подкаталог util в папке проекта, и записал туда файл program-DFU.bat.

4. В диалоге External Tools заполните в поле ввода Command: путь до файла program-DFU.bat. Если он находится в текущем каталоге проекта, то просто укажите program-DFU.bat, а если он находится в подкаталоге util, то введите путь util\program-DFU.bat.

AS7 External Tools Command

5. В поле Arguments: введите путь до файла прошивки, которая должна быть записана в память FLASH микроконтроллера:

$(BinDir)\$(TargetName).hex

Здесь имена, начинающиеся на $, это макросы, которые система Atmel Studio заменит на известные ей текстовые значения. $(BinDir) будет заменен на каталог, где находится конечный скомпилированный файл, и $(TargetName) будет замен на цель компиляции (по умолчанию это имя проекта без расширения). В результате в командный файл вместо %1 будет подставлен полный путь до файла прошивки.

AS7 External Tools Arguments

6. Галочка "Use Output window" перенаправит весь вывод командного файла program-DFU.bat в окно Output среды разработки Atmel Studio. Если эту галочку снять, то будет запускаться черное окно консоли cmd.exe, и станет доступной опция галочки "Close on exit" (закрывать окно консоли по окончании работы утилиты).

Если поставить галочку "Prompt for arguments", то будет выводиться запрос на ввод аргументов для запуска, которые будут использоваться вместо поля Arguments:.

Галочка "Treat output as Unicode" иногда может помочь с правильным отображением русского текста в выводе консоли Output.

Нажмите в диалоге External Tools кнопку OK, на этом настройка завершена. В меню Tools появится дополнительный пункт DFU-ATmega32U4, который был введен в поле Title на шаге 2:

AS7 External Tools menu added new DFU item

Подключите через USB программируемый микроконтроллер, и выберите в меню пункт Tools -> DFU-ATmega32U4. Запустится командный файл program-DFU.bat, и в окно Output будет выведен примерно такой текст:

C:\MyProj\FM-RRD-102>"C:\Program Files (x86)\dfu-programmer\dfu-programmer.exe"
 atmega32u4 erase --force 
Erasing flash...  Success
Checking memory from 0x0 to 0x6FFF...  Empty.
 
C:\MyProj\FM-RRD-102>"C:\Program Files (x86)\dfu-programmer\dfu-programmer.exe"
 atmega32u4 flash "C:\MyProj\FM-RRD-102\Release\FM-RRD-102.hex" 
Checking memory from 0x0 to 0x227F... Empty. 0% 100% Programming 0x2280 bytes... [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success 0% 100% Reading 0x7000 bytes... [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success Validating... Success 0x2280 bytes written into 0x7000 bytes memory (30.80%).

AS7 External Tools DFU item executed

Можно создать на панели инструментов кнопку для запуска нового созданного пункта меню. Для этого перейдите в меню Tools -> Customize..., откроется окно диалога настройки панелей управления. Перейдите на закладку Commands, выберите выпадающий список Toolbar:, в выпадающем списке выберите Device and Debugger, нажмите кнопку Add Command..., в списке Categories: выберите Tools, в списке Commands: выберите External Command 1. Нажмите OK и Close. На панели Atmel Studio появится новая кнопка DFU-ATmega32U4.

AS7 External Tools Add Command 1

[Ссылки]

1. dfu-programmer site:github.io.
2. Макетная плата AVR-USB162.
3. Макетная плата AVR-USB162MU.
4. Использование MS Visual Studio IDE для программирования AVR/Arduino.
5. Альтернативы для Atmel DFU Flip.