IAR и STM32 CORTEX M0. Часть 0x04 Автоматизация прошивки IAR

Наверное, каждый хоть раз заглядывал в установочную папку Flash Loader Demo. Интересно же — вдруг там есть ещё что вкусного. И что характерно, есть! Я говорю о консольном варианте утилиты — STMFlashLoader.exe. Передав ей соответствующие параметры, можно автоматом заливать прошивку прямо из IAR! Удобно, ведь, так что приступим.

1. Создаем рыбу в IAR
Тут все просто: Tools → Configure Tools… Далее нажимаем New:

В поле Menu Text придумываем какое-то осмысленное название тулзы, можно сильно не заморачиваться, все равно хоткей на нее вешать будем, я назвал Loader. Жмем ОК, пока тут нет ничего интересного.

2. Раскурка параметров STMFlashLoader.exe
Открываем командную строку, заходим в папку Flash Loader Demo и запускаем STMFlashLoader.exe, заставив программу отрыгнуть Usage:

Полный перевод всех параметров давать смысла не вижу, приведу лишь то, что нужно для наших целей:

-c — настройка com-порта, нас интересуют следующие аргументы:
—pn — после него пишем номер COM-порта
—br — скорость порта (baudrate), ставим такой же, какую использовали в гуевом варианте проги, я ставлю 115200
—to — время ожидания реакции мк, задается в мс, секунда-две — оптимально (хотя можно и меньше — на страх и риск)

-i — пишем имя девайса. Где взять? Все в том же гуевом варианте проги:

В нашем случае -i STM32F0_3x_16K
-e — очистить мк, -u — upload прошивки, -d — download прошивки. Если вы уже прошивали, то вероятно обратили внимание, что, вопреки здравому смыслу, с микроконтроллера на комп прошивку мы закачиваем (upload), а в микроконтроллер — скачиваем (download). То есть, для прошивки мк нам нужен параметр:
-d — загрузка прошивки на мк, аргументы:
—a — стартовый адрес, куда будем записывать; на картинке выше видно, что нулевой странице (Page0) соответствует адрес 8000000
—fn — полный путь к файлу прошивки (*,hex, *.bin, *.s19)
—v — проверить после прошивки, очень полезная фича, желательно всегда включат

Также параметр -e —all пригодится — лучше мк предварительно очищать.

Вот и все, можно писать батник. В качестве аргументов он будет принимать номер com-порта, имя девайса и полный путь к файлу прошивки. Кстати, о полном пути к прошивке, где его взять? В IAR на такой случай предусмотрены глобальные переменные. Найти их можно в мануале, а полный перевод представлен на странице microsin.net, позволю себе небольшую копипасту:

$CONFIG_NAME$ — Имя текущей, активной в настоящий момент конфигурации. К примеру, это может быть конфигурация Debug или Release.
$CUR_DIR$ — Текущая директория.
$CUR_LINE$ — Текущая строка.
$DATE$ — Сегодняшняя дата.
$EW_DIR$ — Директория верхнего уровня, в которой установлена система IAR Embedded Workbench, например это может быть каталог C:Program Files (x86)IAR SystemsEmbedded Workbench 6.5.
$EXE_DIR$ — Каталог, куда попадает выходной двоичный исполняемый файл.
$FILE_BNAME$ — Имя файла без расширения.
$FILE_BPATH$ — Полный путь файла без расширения имени файла.
$FILE_DIR$ — Каталог активного файла (путь до файла без имени файла).
$FILE_FNAME$ — Имя активного файла без полного пути до него.
$FILE_PATH$ — Полный путь до активного файла (открытого в окне редактора Editor, окне проекта Project или окне сообщения Message).
$LIST_DIR$ — Папка, куда записываются файлы листинга компиляции.
$OBJ_DIR$ — Папка, куда записываются объектные файлы компиляции.
$PROJ_DIR$ — Корневой каталог проекта (папка, где лежит файл проекта с расширением *.ewp).
$PROJ_FNAME$ — Имя файла проекта без полного пути до него.
$PROJ_PATH$ — Полный путь до файла проекта (путь + имя файла).
$TARGET_DIR$ — Каталог главного выходного файла.
$TARGET_BNAME$ — Имя главного выходного файла без расширения и пути.
$TARGET_BPATH$ — Полный путь до главного выходного файла без расширения имени файла.
$TARGET_FNAME$ — Имя главного выходного файла без пути до него.
$TARGET_PATH$ — Полный путь до главного выходного файла.
$TOOLKIT_DIR$ — Каталог активного продукта, например это может быть папка C:Program Files (x86)IAR SystemsEmbedded Workbench 6.5arm.
$USER_NAME$ — Имя (логин) текущего пользователя системы Windows.
$_ENVVAR_$ — Значение переменной окружения ENVVAR. Будет подставлено значение переменной окружения с именем без префикса $_ и суффикса _$.

3. Пишем батник и прикручиваем его к IAR
Батник прост, как пять копеек:

@echo off
«C:Program FilesSTMicroelectronicsSoftwareFlash Loader DemoSTMFlashLoader.exe» -c —pn %1 —br 115200 —to 2000 -i %2 -e —all -d —a 8000000 —fn %3 —v
pause

Обратите внимание на значения аргументов %1, %2, %3. Это параметры, которые будет принимать наш батник. Вернемся к настройкам IAR:

В поле Command указывается полный путь к батнику, в поле Argument — аргументы, которые будем батнику скармливать (порт, девайс, путь к прошивке):

4 STM32F0_3x_16K «$EXE_DIR$$PROJ_FNAME$.bin»

Теперь можно запустить Tools → Loader, но так не интересно, мы же автоматизировать решили. Так что заходим Tools → Options… → Key Bindings. Далее: Menu → Tools → Loader и выбираем удобное сочетание клавиш:

Теперь подключаем МК, жмем reset… В случае успешной прошивки будет следующее окно:

4. Заключение
Вот так, путем довольно простых манипуляций (они были простыми, ведь правда?) можно сэкономить себе кучу времени на прошивке микроконтроллеров. Ну а что проще: нажатие 2-3 горячих клавиш или куча манипуляций в графическом варианте прошивальщика — решать вам. Лично же у меня желания возвращаться к гуевому варианту нет совершенно.

Добавить комментарий

Ваш адрес email не будет опубликован.