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

Напевно, кожен хоч раз зазирнув у встановлювальну папку Flash Loader Demo. Цікаво ж — раптом там є ще щось смачне. І що характерно, є! Я говорю про консольний варіант утиліти — STMFlashLoader.exe. Передавши їй відповідні параметри, можна автоматом заливати прошивку прямо з IAR! Зручно ж, так що приступимо.

1. Створюємо рибу в IAR
Тут все просто: Tools → Configure Tools... Далі натискаємо New:

iar-loader-1

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

2. Розкриття параметрів STMFlashLoader.exe
Відкриваємо командний рядок, заходимо в папку Flash Loader Demo і запускаємо STMFlashLoader.exe, змусивши програму відригнути Usage:

iar-loader-2

Повний переклад всіх параметрів давати сенсу не бачу, наведу лише те, що потрібно для наших цілей:

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

-i — пишемо ім'я девайса. Де взяти? Все в тому ж графічному варіанті проги:

iar-loader-3

В нашому випадку -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 Systems\Embedded 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 Systems\Embedded Workbench 6.5\arm\.
$USER_NAME$ - Ім'я (логін) поточного користувача системи Windows.
$_ENVVAR_$ - Значення змінної середовища ENVVAR. Буде підставлено значення змінної середовища з іменем без префікса $_ і суфікса _$.

3. Пишемо батник і прикріплюємо його до IAR
Батник простий, як п’ять копійок:

@echo off
"C:\Program Files\STMicroelectronics\Software\Flash Loader Demo\STMFlashLoader.exe" -c --pn %1 --br 115200 --to 2000 -i %2 -e --all -d --a 8000000 --fn %3 --v
pause

Зверніть увагу на значення аргументів %1, %2, %3. Це параметри, які буде приймати наш батник. Повернемося до налаштувань IAR:

iar-loader-4

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

4 STM32F0_3x_16K "$EXE_DIR$\$PROJ_FNAME$.bin"

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

iar-loader-5

Тепер підключаємо МК, жмемо reset... У випадку успішної прошивки буде наступне вікно:

iar-loader-6

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

Top