Работа с STM32 ST-LINK Utility через консоль
Консольная утилита ST-LINK_CLI
Не для кого не секрет, что для прошивки контроллеров семейства stm32 есть утилита STM32 ST-LINK Utility с графическим интерфейсом и неплохим функционалом. В комплекте с графическим интерфейсом утилиты так же идёт консольная версия — ST-LINK_CLI.exe .
Консольная утилита ST-LINK_CLI
Графический интерфейс утилиты STM32 ST-LINK Utility хорошо подходит для ручной, наглядной, прошивки контроллера и конфигурации его памяти и регистров, консольную утилиту можно подключить к средам разработки и с её помощью автоматизировать прошивку серии контроллеров.
Функционал консольной утилиты тот же, что и у утилиты с графическим интерфейсом, только вся работа идёт через консоль.
Что бы получить перечень поддерживаемых команд утилитой ST-LINK_CLI достаточно её запустить без параметров.
Рассмотрим основные команды:
Рассмотрим основные команды:
-Rst — сброс, перезагрузка камня
-ME — очисть всю flash память
-SE — стереть выбранные сектора flash памяти (обычно один сектор занимает 1КБ или 0x0400 для low и medium семейств контроллеров)
Синтаксис: -SE <Start_Sector> [<End_Sector>]
пример:
"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -SE 0 4
STM32 ST-LINK CLI v2.0.0
STM32 ST-LINK Command Line Interface
ST-LINK SN : 0123456789ABCDEF12345678
ST-LINK Firmware version : V2J21S4
Connected via SWD.
Connection mode : Normal.
Device ID:0x440
Device flash Size : 64 Kbytes
Device family :STM32F030xx/F051xx/F071xx
Memory Sector @0x08000000 erased.
Memory Sector @0x08000400 erased.
Memory Sector @0x08000800 erased.
Memory Sector @0x08000C00 erased.
Memory Sector @0x08001000 erased.
-P — загрузка прошивки
Синтаксис: -P <File_Path> [<Address>]
пример:
C:\Users\Alex>"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\S
T-LINK Utility\ST-LINK_CLI.exe" -P "D:\project1\lite.bin" 0x08000000
STM32 ST-LINK CLI v2.0.0
STM32 ST-LINK Command Line Interface
ST-LINK SN : 0123456789ABCDEF12345678
ST-LINK Firmware version : V2J21S4
Connected via SWD.
Connection mode : Normal.
Device ID:0x440
Device flash Size : 64 Kbytes
Device family :STM32F030xx/F051xx/F071xx
Loading file...
Flash Programming:
File : D:\project1\lite.bin
Address : 0x08000000
Flash memory programming...
██████████████████████████████████████████████████ 100%
Flash memory programmed in 0s and 94ms.
Programming Complete.
-V — верификация
Работа с опциональными байтами
-OB RDP=<Level> — установка защиты от чтения памяти
0 — защита отключена
1 — защита включена
2 — защита включена (отладчик и загрузчик в SRAM использовать можно)
Используя данную утилиту можно написать скрипт, которым можно прошивать и конфигурировать контроллеры вводом одной команды. Например: прошьём и перезагрузим контроллер.
"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\S
T-LINK Utility\ST-LINK_CLI.exe" -P "D:\project1\project1.bin" 0x08000000
"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\S
T-LINK Utility\ST-LINK_CLI.exe" -Rst
Если добавить goto и pause то можно будет перепрошивать серию контроллеров одним нажатием клавиши.
Скрипт можно написать в любом текстовом редакторе, например блокноте и сохранить с разрешением *.bat, если будете его использовать проверьте пути к утилите ST-LINK_CLI.exe и укажите путь к своей прошивке.
Другой пример использования консольной утилиты ST-LINK_CLI. Есть задача по прошивки серии устройств на основе контроллера stm32. На плате во время её проектирования были предусмотрены специальные площадки для удобного подключения программатора, в который можно запаять или штыревой PLS разъём, или подсоединяться к ним нему используя специальный щуп из подпружиненных контактов. В контроллере находится 2 прошивки: основная прошивка и загрузчик, идентификатор устройства и блок данных. Контроллер нужно прошить, проверить целостность прошитых данных и защитить контроллер от считывания. Для данной цели за пару часов была написана небольшая утилита с графическим интерфейсом (в некоторых случаях на этапе отладки нужно без проблем менять некоторые параметры прошивки — это куда проще сделать щёлкнув по паре галочек), которая используя консольную утилиту ST-LINK_CLI прошивает и конфигурирует контроллер за пол минуты, когда при ручной прошивки контроллера на это уйдёт куда больше времени.
Самописная утилита для прошивки устройств
Alex_EXE | 12.03.2017 | STM32 |
Serj пишет 06.10.2018 в 00:18 #
А ещё с помощью ST-LINK_CLI можно прошивать и запускать программу из ОЗУ (RAM).
ST-LINK_CLI.exe -c SWD Freq=4000 -P Output\STMF103_LCD_ST8835.hex -Run 0x20000000 -Q -NoPrompt
Можно написать .bat или сконфигурировать внешнюю утилиту для программирования в Keil µVision и шить кнопкой Download. В µVision удобнее.
Alex_EXE пишет 22.10.2018 в 01:25 #
Спасибо, может пригодиться.
Александр пишет 30.01.2020 в 00:35 #
Для версии st-link_cli 3.5.0.0 команда для запуска программы из ОЗУ чуть изменилась.
st-link_cli -c SWD SWCLK=4000 -P «build\main.bin» 0x20000000 -Run 0x20000000 -Q -NoPrompt
И шить надо BIN, а не HEX.
Спасибо за наводку, в любом случае.
ВитГо пишет 26.12.2020 в 15:02 #
А кто нить разбирался как при помощи командной строки делается отладка ? то есть запустили с 0800 0000 и потом по шагам исполнять прошивку ?
что то я не понял как это делать, есть команда step но не получается ее использовать…
как то нужно микроконтроллер в режим отладки вводить ?
или подключаться для отладки без сброса ?
кто нить пробовал ?
p.s. нужно для этого https://vk.com/club200545792
aabdev пишет 08.01.2022 в 22:12 #
Как защитить микроконтроллер от загрузки чужеродного кода?
aabdev пишет 08.01.2022 в 22:12 #
Сохраняет ли RAM память значение после программного Reset(а)?
Alex_EXE пишет 11.01.2022 в 20:07 #
У СТМ, как и у многих контроллерв есть фьюзы защиты памяти от чтения.
Для stm32f051 и старой среды CoCoox
if(FLASH_OB_GetRDP() != SET)
{
FLASH_Unlock();
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_1);
delay_ms(1000);
FLASH_OB_Launch();
delay_ms(1000);
FLASH_Lock();
}
Там ещё нужно библиотеки подключить, включить тактирование нужных узлов…
На второй вопрос не отвечу точно. Вроде сохраняет, но выполняющаяся программа может её задействовать в своих целях.
Алексей пишет 18.09.2024 в 12:32 #
Поделитесь пожалуйста этой утилитой с графическим интерфейсом если будет такое желание. Спасибо за статью!