St link unity linux

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

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 и выбираем порт с которым будем работать, и устанавливаем параметры порта.

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

Читайте также:  Windows developer sdk download

Нажимаем 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. Снимаем защиту от чтения а затем от записи:

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

Источник

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

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

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

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

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

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

Читайте также:  Сетевой драйвер для windows 10 64 bit broadcom

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

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

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

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

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

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

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

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

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

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

Источник

I have a STM32 that I programm in Windows, I connected them like this:

Now, I moved to Linux (Ubuntu 18.04) but the Arduino IDE cannot find the ST LINK, I got the following

Am I missing some configuration?

1 Answer 1

These are my personal notes I wrote to myself a while back. See if they work for you too. Some of the filenames and versions may be slightly more up-to-date now, but I think this should be what you need. I look forward to hearing back from you to hear if this works for you.

STM32CubeProgrammer Linux install instructions:

Extract the zip file, but do not install it. There is no need to install it, as this tool comes built-in to the STM32CubeProgrammer tool above too, and all we really need from this STSW-LINK007 zip file is the readme and some udev rules.

Reference the readme here: stsw-link007_2.32.22/readme.txt , or even better, the readme here: stsw-link007_2.32.22/AllPlatforms/StlinkRulesFilesForLinux/Readme.txt

Install the udev rules:

Referencing section 1.2.1 of UM2237 (download link above):

Unplug and plug in the STLink programmer.

Open and Run STM32CubeProgrammer GUI to verify things.

Make a symbolic link to the programmer CLI executable so we can run it as STM32_Programmer_CLI :

If this is the first time ever creating and using your

/bin directory, where we just placed the executable symbolic link above, log out and log back in to have Ubuntu automatically place this folder into your PATH.

Now flash your chip with the programmer. Example flash command:
(Refer to UM2237—link above—for more info on commands.)

Источник

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.

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 ?

Читайте также:  Offensive security com kali linux vmware virtualbox image download

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

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.

Источник

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