St link utility ��� linux

Содержание
  1. stm32: работа с st-link в linux
  2. Программирование микроконтроллеров stm32 при помощи stlink
  3. Отладка программы для stm32 при помощи st-link
  4. Installing ST-Link v2 to flash STM32 targets on Linux
  5. Related Posts
  6. Comments
  7. 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
  8. Микроконтроллер STM32F103C8. Характеристики
  9. На плате STM32F103C8 доступны
  10. Прошивка STM32 с помощью USB-Uart переходника под Windows
  11. Программное обеспечение для прошивки
  12. Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)
  13. Устанавливаем stm32flash
  14. Получить информацию о чипе
  15. Читаем с чипа в файл dump.bin
  16. Пишем в чип
  17. Прошивка STM32 с помощью ST-Link программатора под Windows
  18. Прошивка STM32 с помощью ST-Link программатора под Linux (Ubuntu)
  19. Устанавливаем софт для работы с ST-Link
  20. Проверяем видно ли программатор и чип
  21. Читаем с чипа в файл dump.bin
  22. Программируем STM32
  23. Памятка
  24. Документация
  25. Что можно почитать
  26. Маркировка STM32
  27. Как снять защиту от записи / чтения?

Микроконтроллеры stm32 прошиваются разными способами, например, через COM порт, или по USB, используя режим dfu. Также прошивку можно заливить по интерфейсу SWD.

Для подключения к SWD используется или отдельное устройство st-link, или st-link, входящий в отладочные платы семейства discovery.

Программирование микроконтроллеров stm32 при помощи stlink

Для того чтобы залить прошивку на микроконтроллер stm32 из под linux потребуется утилита st-flash. Готовых пакетов с этой утилитой нет, поэтому её надо собирать из исходников.

Скачиваем исходники st-link:

Добавляем правило для udev, чтобы к st-link был доступ не только у root’a:

Теперь можно прошивать:

Отладка программы для stm32 при помощи st-link

Используя st-link можно не только заливать прошивку но и отлаживать её. Для этого запускаем gdb сервер st-util.

Затем запускаем arm-none-eabi-gdb и в нем выполняем команды.

Подключаемся к gdb серверу:

Загруженный файл заливаем в микроконтроллер:

Устанавливаем breakpoint на функцию main:

Запускаем выполнение программы:

Поле того, как отладчик остановится на функции main, можно выполнять пошаговую отладку:

В арсенале отладчика gdb есть ещё куча полезных команд. А если связать gdb c eclipse, то получиться довольно удобная среда с графическим интерфейсом.

Источник

This guide is targeting Linux users and ST-Link v2 hardware.

First, we are going to install the necessary libraries and build tools:

Now, we will download and build the ST-Link utilities:

Now we copy the built binaries to their place:

then udev rules:

Now, plug the ST-Link device into the USB port, but DON’T CONNECT the target board, then type:

If everything went OK, you should see something like this:

Now, disconnect the ST-LINK from USB, connect the four wires to the target board as in the picture

then plug back the ST-Link to the USB and type:

You should see something like:

If the target board is not connected, the ST-Link device will be identified, but you (obviously) will get an error during memory read.

We can decide it is correctly installed.

Читайте также:  Отключить спящий режим windows 10 gpo

Please add comments if you encounter any issue using this guide. I hope it will help you.

Thanks for the effort to all contributors to this repository https://github.com/stlink-org/stlink .

The older version of this post is here.

Comments

I found the st-* files under /bin directory , not under /stlink .
Must the other files ” test-* ” also being copied to /usr/local/bin or is that not important ?

Thanks for letting me know about the issue, I have corrected. If you think you’ll never need those test binaries, don’t copy them.

You are the best! Working well

😉 Thanks. Keep an eye on the page.

evething goes well,
marco@marco:

/stm32/stlink/bin$ lsusb
Bus 002 Device 005: ID 046d:c526 Logitech, Inc. Nano Receiver
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0483:3748 STMicroelectronics ST-LINK/V2
Bus 001 Device 003: ID 0781:556b SanDisk Corp. Cruzer Edge
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

/stm32/stlink/bin$ st-info –probe
2020-06-04T03:44:35 ERROR usb.c: Could not open USB device 0x0483:0x3748, access error.
Found 0 stlink programmers

the device shows up, but probing it returns error.
what do i need to do now?

please, i would love to finally compile the blinking led example.

Hi,
Perhaps a nice addition, also with Linux build.
https://github.com/EmBitz/EBlink

I started this project 4 years ago because I was a bit frustrated about texane in those days. For every new device a lot of changes and rebuild were necessary.

on October 24, 2020

I consider adding a post about using GDB with stlink. Thanks for the idea.

on October 24, 2020

marco@marco:/home/marco# st-info –probe
[!] send_recv read reply failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_ENTER
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_JTAG_DRIVE_NRST
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_RESETSYS
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_READCOREID
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_JTAG_READDEBUG_32BIT
Found 1 stlink programmers
serial: 493f6e066772565630332267
hla-serial: “\x49\x3f\x6e\x06\x67\x72\x56\x56\x30\x33\x22\x67”
flash: 0 (pagesize: 0)
sram: 0
chipid: 0x0000
descr: unknown device
marco@marco:/home/marco# st-flash –debug read dummy.file 0 256
st-flash 1.6.0-368-gade735d
2020-06-04T03:57:01 DEBUG common.c: *** looking up stlink version
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_GET_VERSION
2020-06-04T03:57:04 DEBUG common.c: *** looking up stlink version
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_GET_VERSION
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_GET_CURRENT_MODE
2020-06-04T03:57:10 DEBUG common.c: stlink mode: unknown!
2020-06-04T03:57:10 DEBUG usb.c: JTAG/SWD freq set to 0
2020-06-04T03:57:10 DEBUG common.c: *** set_swdclk ***
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_GET_CURRENT_MODE
2020-06-04T03:57:13 DEBUG common.c: stlink mode: unknown!
2020-06-04T03:57:13 DEBUG common.c: *** stlink_enter_swd_mode ***
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_ENTER
2020-06-04T03:57:16 DEBUG common.c: *** stlink_jtag_reset ***
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_JTAG_DRIVE_NRST
2020-06-04T03:57:19 DEBUG common.c: *** stlink_reset ***
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_RESETSYS
2020-06-04T03:57:22 DEBUG common.c: Loading device parameters….
2020-06-04T03:57:22 DEBUG common.c: *** stlink_core_id ***
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_DEBUG_READCOREID
2020-06-04T03:57:25 ERROR common.c: Failed to read core_id
[!] send_recv send request failed: LIBUSB_ERROR_TIMEOUT
[!] send_recv STLINK_JTAG_READDEBUG_32BIT
2020-06-04T03:57:28 WARN common.c: unknown chip id! 0x7f90
Failed to connect to target

Читайте также:  Windows 10 cursors default

st-flash –debug read dummy.file 0 256

what do i need to do now?

now, i have a different serial number and a chipid show up.

found 1 stlink programmers
serial: 303030303030303030303031
hla-serial: “\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31”
flash: 0 (pagesize: 0)
sram: 0
chipid: 0x0f79

Hello ‘By Natural’
I had exactly the same problem as you.

Источник

1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор

Микроконтроллеры STM32 приобретают все большую популярность благодаря своей мощности, достаточно разнородной периферии, и своей гибкости. Мы начнем изучать STM32F103C8T6, используя бюджетную тестовую плату, стоимость которой не превышает 2 $ (у китайцев). Еще нам понадобится ST-Link программатор, стоимость которого около 2.5 $ (у китайцев). Такие суммы расходов доступны и студентам и школьникам, поэтому именно с такого бюджетного варианта я и предлагаю начать.

Этот микроконтроллер не является самым мощным среди STM32, но и не самый слабый. Существуют различные платы с STM32, в томе числе Discovery которые по цене стоят около 20 $. На таких платах почти все то же, что и на нашей плате, плюс программатор. В нашем случае мы будем использовать программатор отдельно.

Микроконтроллер STM32F103C8. Характеристики

  • Ядро ARM 32-bit Cortex-M3
  • Максимальная частота 72МГц
  • 64Кб Флеш память для программ
  • 20Кб SRAM памяти
  • Питание 2.0 . 3.3В
  • 2 x 12-біт АЦП (0 . 3.6В)
  • DMA контролер
  • 37 входов / выходов толерантных к 5В
  • 4 16-розрядних таймера
  • 2 watchdog таймера
  • I2C — 2 шины
  • USART — 3 шины
  • SPI — 2 шины
  • CAN
  • USB 2.0 full-speed interface
  • RTC — встроенные часы

На плате STM32F103C8 доступны

Скачать тестовый файл для прошивки можно здесь. Программа мигает светодиодом на плате.

Прошивка STM32 с помощью USB-Uart переходника под Windows

Подключаем RX и TX выходы к соответствующим выводам USART1 микроконтроллера. RX переходника подключаем к TX микроконтроллера (A9). TX переходника подключаем к RX микроконтроллера (A10). Поскольку USART-USB имеет выходы питания 3.3В подадим питания на плату от него.

Чтобы перевести микроконтроллер в режим программирования, надо установить выводы BOOT0 и BOOT1 в нужное состояние и перезагрузить его кнопкой Reset или выключить и включить питание микроконтроллера. Для этого у нас есть перемычки. Различные комбинации загоняют микроконтроллер в различные режимы. Нас интересует только один режим. Для этого у микроконтроллера на выводе BOOT0 должно быть логическая единица, а на выводе BOOT1 — логический ноль. На плате это следующее положение перемычек:

После нажатия кнопки Reset или отключения и подключения питания, микроконтроллер должен перейти в режим программирования.

Программное обеспечение для прошивки

После включения схемы с правильно выставленными перемычками контроллер готов к работе с Flash Loader Demonstrator.

Запускаем Flash Loader Demonstrator и выбираем порт с которым будем работать, и устанавливаем параметры порта.

Читайте также:  Linux fdisk форматирование флешки

После выбора параметров порта нажимаем Next после чего должны увидеть «светофор» и информацию по микроконтроллеру. Если этого не происходит, тогда проверяем корректность установленных параметров связи и проверяем действительно ли микроконтроллер введен в режим программирования.

Нажимаем Next,

На этой странице выбираем файл для загрузки в микроконтроллер. Файл может быть в формате bin или hex.

Нажимаем Next и ждем.

Чтобы вывести контроллер из режима программирования, возвращаем перемычки в исходное состояние и нажимаем кнопку Reset. Программа в микроконтроллере должен заработать.

Прошивка STM32 с помощью USB-Uart переходника под Linux (Ubuntu)

Устанавливаем stm32flash

Если используем USB-UART переходник, имя порта буде примерно такое /dev/ttyUSB0

Получить информацию о чипе

Читаем с чипа в файл dump.bin

Пишем в чип

При использовании программатора ST-Link выводы BOOT0 и BOOT1 не используются и должны стоять в стандартном положении для нормальной работы контроллера.

Качаем с сайта st.com Утилиту STM32 ST-LINK Utility. Устанавливаем ее. С ней должен быть установлен и драйвер для ST-Link. Если нет, качаем и устанавливаем драйвера ST-Link: http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html Подключаем ST-Link в USB- разъем компьютера, а соответствующие выводы программатора подключаем к выводам тестовой платы согласно маркировки.

Запускаем программу STM32 ST-LINK Utility

Выполняем пункт меню Target -> Connect

Выполняем пункт меню Target -> Erase Chip

Выполняем пункт меню File -> Open file. Выбираем файл для загрузки в микроконтроллер.

Выполняем пункт меню Target -> Programm & Verify.

После завершения прошивки и проверки, загруженная программа автоматически запустится.

Пришлось устанавливать autoconf и libusb-1.0:

Проверяем видно ли программатор и чип

Читаем с чипа в файл dump.bin

Программируем STM32

Памятка

Документация

Что можно почитать

Маркировка STM32

Device family Product type Device subfamily Pin count Flash memory size Package Temperature range
STM32 = ARM-based 32-bit microcontroller F = General-purpose L = Ultra-low-power TS = TouchScreen W = wireless system-on-chip 60 = multitouch resistive 103 = performance line F = 20 pins G = 28 pins K = 32 pins T = 36 pins H = 40 pins C = 48/49 pins R = 64 pins O = 90 pins V = 100 pins Z = 144 pins I = 176 pins B = 208 pins N = 216 pins 4 = 16 Kbytes of Flash memory 6 = 32 Kbytes of Flash memory 8 = 64 Kbytes of Flash memory B = 128 Kbytes of Flash memory Z = 192 Kbytes of Flash memory C = 256 Kbytes of Flash memory D = 384 Kbytes of Flash memory E = 512 Kbytes of Flash memory F = 768 Kbytes of Flash memory G = 1024 Kbytes of Flash memory I = 2048 Kbytes of Flash memory H = UFBGA N = TFBGA P = TSSOP T = LQFP U = V/UFQFPN Y = WLCSP 6 = Industrial temperature range, –40…+85 °C. 7 = Industrial temperature range, -40…+ 105 °C.
STM32 F 103 C 8 T 6

UPD:

Как снять защиту от записи / чтения?

Я это буду делать из под Ubuntu с помощью утилиты stm32flash.

1. Проверяем видно ли микроконтроллер:

Должны получить что-то такое:

2. Снимаем защиту от чтения а затем от записи:

Теперь можно нормально работать с микроконтроллером.

Источник

Оцените статью