xintrea 0 26 марта, 2022 Опубликовано 26 марта, 2022 (изменено) · Жалоба Привет, народ. Купил себе на пробу STM32F103C8T6 (BluePill) с программатором STLink-V2. Вот что о нем рассказывает st-info --probe: Found 1 stlink programmers serial: 132014026315303030303032 openocd: "\x13\x20\x14\x02\x63\x15\x30\x30\x30\x30\x30\x32" flash: 65536 (pagesize: 1024) sram: 20480 chipid: 0x0410 descr: F1 Medium-density device Установил среду STM32CubeIDE Version: 1.8.0 Build: 11526_20211125_0815 (UTC). И попытался собрать и запустить программку мигания светодиодом. Сделал новый проект для STM32F103C8Tx, настройки брал из вот этого видео: https://www.youtube.com/watch?v=e_NSqz5P8Qk По-сути сгенерировался дефолный проект для STM32F103C8Tx, частота настроена на 72MHz, активирован пин PC13 на режим Output. В коде в бесконечный цикл вписаны команды: while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(500); } По ходу попыток запуска, вначале STM32CubeIDE сказал, что прошивка устарела, и надо обновить. Я согласился, но пришлось пару раз вставить-вытащиить программатор в USB, так как была ошибка: st-link is not in the DFU mode. Please restart it. Прошивка залилась, а в сети нашел инфу что если обновление прошивки предваряется такой ошибкой, то это нормально. Потом пришлось подредактировать файл stm32f1x.cfg, так как при запуске была ошибка: linux gdb ST-LINK: Could not verify ST device! Abort connection. Эту ошибку убрал по инструкции: https://stackoverflow.com/questions/58783393/atollic-couldnt-verify-st-device, заодно отладку переключил с STLink GDB Server на STLink OpenOCD (сам GDB, естественно, установлен и работает, обычный C/C++ код через него отлаживается). В результате, после устранения предыдущей ошибки, стали появляться другие ошибки: Error: STM32F103C8Tx.cpu -- clearing lockup after double fault Polling target STM32F103C8Tx.cpu failed, trying to reexamine Насколько я понял, эти ошибки возможны из-за того, что программа либо не запускается, либо крашится уже на самом микроконтроллере по причине неправильной настройки диапазонов адресного пространства или какой-то периферии. Тогда я решил снова сделать новый проект, все повторил заново, и на этот раз почти получилось. Во всяком случае, явных ошибок в логе запуска нет. Но светодиод не мигает, отладка не работает: Open On-Chip Debugger 0.11.0+dev-00438-ga75fc63 (2021-11-03-15:26) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : STLINK V2J39S7 (API v2) VID:PID 0483:3748 Info : Target voltage: 2.427853 Info : Unable to match requested speed 8000 kHz, using 4000 kHz Info : Unable to match requested speed 8000 kHz, using 4000 kHz Info : clock speed 4000 kHz Info : stlink_dap_op_connect(connect) Info : SWD DPIDR 0x2ba01477 Info : STM32F103C8Tx.cpu: Cortex-M3 r2p1 processor detected Info : STM32F103C8Tx.cpu: target has 6 breakpoints, 4 watchpoints Info : starting gdb server for STM32F103C8Tx.cpu on 3333 Info : Listening on port 3333 for gdb connections Info : accepting 'gdb' connection on tcp/3333 Info : device id = 0x20036410 Info : flash size = 64kbytes undefined debug reason 8 - target needs reset O.K. O.K.:0xE00FFFD0 undefined debug reason 8 - target needs reset shutdown command invoked Info : dropped 'gdb' connection Я пробовал собрать и запуститься в режиме релиза (переткнул и конфигурацию и билд на Release), но почему-то при запуске RUN все равно IDE пытается запустить дебаггер, ей это не удается, лог запуска все тот же. Дальше я уже не знаю что делать. Прошу посоветовать что где еще надо докрутить, чтобы помигать светодиодом. * * * UPD: Иногда запуск почему-то происходит по-другому, хотя ничего ни в коде ни в конфигурации не меняю. Запуск сопровождается появлением окна с ошибкой: Could not verify STM device! Хотя, как написано выше, такая ошибка была, и верификация устройства отключена (в начало файла stm32f1x.cfg добавлена строка set CPUTAPID 0). Выхлоп запуска при этом немного другой, строки с Info те же самые, но в конце такие ошибки: undefined debug reason 8 - target needs reset O.K. O.K.:0xE00FFFD0 Error: Failed to read memory at 0xfffffffe Error: Failed to read memory at 0xfffffffe undefined debug reason 8 - target needs reset shutdown command invoked Info : dropped 'gdb' connection Вот как выглядит скриншот: https://ibb.co/JvyD2HK Изменено 26 марта, 2022 пользователем xintrea Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба source [find interface/stlink.cfg] transport select hla_swd #ALI chip fake set CPUTAPID 0x2ba01477 source [find target/stm32f1x.cfg] reset_config connect_assert_srst Попробуйте такой конфиг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xintrea 0 26 марта, 2022 Опубликовано 26 марта, 2022 (изменено) · Жалоба 26 minutes ago, VladimirG said: Попробуйте такой конфиг. Не пойму, что нужно сделать. Нужно найти файл interface/stlink.cfg и в нем обеспечить наличие строк transport select hla_swd #ALI chip fake set CPUTAPID 0x2ba01477 И нужно найти файл target/stm32f1x.cfg, и обеспечить в нем наличие строки: reset_config connect_assert_srst Так? Или весь ваш код - это законченный конфиг? Но тогда в каком конфиг-файле этот текст должен находиться? Или это нужно понатыкать в интерфейсе проекта в STM32CubeIDE? Изменено 26 марта, 2022 пользователем xintrea Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xintrea 0 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 38 minutes ago, VladimirG said: Попробуйте такой конфиг. Поковырялся, и нашел файл конфига проекта, прямо в корне проекта, который называется <имя_проекта>.cfg. Видимо, вы его имели в виду. Сейчас конфиг выглядит так (еще не редактировал): source [find interface/stlink-dap.cfg] set WORKAREASIZE 0x5000 transport select "dapdirect_swd" set CHIPNAME STM32F103C8Tx set BOARDNAME genericBoard # Enable debug when in low power modes set ENABLE_LOW_POWER 1 # Stop Watchdog counters when halt set STOP_WATCHDOG 1 # STlink Debug clock frequency set CLOCK_FREQ 8000 # Reset configuration # use software system reset if reset done reset_config none set CONNECT_UNDER_RESET 0 set CORE_RESET 0 # ACCESS PORT NUMBER set AP_NUM 0 # GDB PORT set GDB_PORT 3333 # BCTM CPU variables source [find target/stm32f1x.cfg] Вопрос: его полностью надо заменить, или редактировать отдельные строки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 марта, 2022 Опубликовано 27 марта, 2022 · Жалоба 9 hours ago, xintrea said: Вопрос: его полностью надо заменить, или редактировать отдельные строки? Попробуйте полностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xintrea 0 28 марта, 2022 Опубликовано 28 марта, 2022 (изменено) · Жалоба On 3/27/2022 at 10:11 AM, VladimirG said: Попробуйте полностью. Происходит следующее: 1. Я меняю конфиг, сохраняю изменения в файле. 2. Запускаю Build All 3. Запускаю Run 4. Вначале отрабатывает какая-то сборка, вижу надпись finish building, затем происходит попытка запуска. В этот момент конфиг-файл прямо на экране меняется на дефолтное значение, которое я показал выше, только сверху прилепляется заголовок: # This is an genericBoard board with a single STM32F103C8Tx chip # # Generated by STM32CubeIDE # Take care that such file, as generated, may be overridden without any early notice. # Please have a look to debug launch configuration setup(s) Я залез в настройки Debug Configuration, и переставил галку в Configuration Script с Automated Generation на User Defined. Снова прописал вашу конфигурацию, пересобрал, запустил. В результате вылазит ошибка: Error in final launch sequence: Failed to execute MI command: target extended-remote localhost:3333 Error message from debugger back end: localhost:3333: Время ожидания соединения истекло. Failed to execute MI command: target extended-remote localhost:3333 Error message from debugger back end: localhost:3333: Время ожидания соединения истекло. localhost:3333: Время ожидания соединения истекло. Скриншот с этой ошибкой прикреплен. Если же переставить отладчик с STLink (OpenOCD) на STLink GDB Server, то запуск завершается такой ошибкой: Error in final launch sequence: Failed to start GDB server Failed to start GDB server Error in initializing ST-LINK device. Reason: (18) Could not verify ST device! Abort connection. Куда дальше ковырять? Изменено 28 марта, 2022 пользователем xintrea Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба Ох... Сколько возни во благо галки "опенсорс". Поставьте Keil или IAR (если дома, например), там сразу будете программировать, а не ерундой заниматься. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба Правильней разобраться. Почему-то у меня без всяких "кайло" и "кубов" получается… ТС выбрал в корне неверную стратегию. Нельзя так делать. Сначала надо документацию почитать, написать Makefile, сделать под себя стартап и ld-скрипт, скачать CMSIS под свою серию. И спокойно, без всяких гнилых псевдобиблиотек или убогих недо-IDE написать код. Если же нужна IDE, так их куча же более вменяемых! Хоть тот же qt-creator! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xintrea 0 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба 17 minutes ago, Arlleex said: Ох... Сколько возни во благо галки "опенсорс". Поставьте Keil или IAR (если дома, например), там сразу будете программировать, а не ерундой заниматься. Не понял, у меня везде Linux стоит. Это хорошо или плохо? В нем стоит проприетарная среда от производителя STM32CubeIDE. Это хорошо или плохо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба Какие-то странные у вас критерии хорошо/плохо. За 10 минут создать проект, прошить и посмотреть как работает - хорошо. Несколько дней трахаться с софтом не понимая как оно должно и почему не работает - плохо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 29 марта, 2022 Опубликовано 29 марта, 2022 · Жалоба А через STM32CubeProgrammer пробовали залить elf? Обычно всё работает сразу без проблем, с левыми чипами только нужно в конфиг 1 строчку добавлять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 29 марта, 2022 Опубликовано 29 марта, 2022 · Жалоба Как оказалось, у ТС не STM32, а GD32. Он залил свежим st-link'ом, но, похоже, то ли в калокубе дело, то ли этот GD32 бракованный, то ли еще что — но не мигает… Я ему предложил попробовать без всяких библиотек (даже CMSIS) для начала "блинк" сделать. И проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xintrea 0 29 марта, 2022 Опубликовано 29 марта, 2022 · Жалоба 8 hours ago, VladimirG said: А через STM32CubeProgrammer пробовали залить elf? Обычно всё работает сразу без проблем, с левыми чипами только нужно в конфиг 1 строчку добавлять. В какой конфиг (желательно, путь к файлу) и какую строчку добавлять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 марта, 2022 Опубликовано 29 марта, 2022 · Жалоба 7 часов назад, Eddy_Em сказал: Я ему предложил попробовать без всяких библиотек (даже CMSIS) для начала "блинк" сделать. И проверить. Для банальной проверки лапы МК даже CMSIS-ов не нужно - достаточно зайти под отладчиком в регистры RCC/GPIO и жмакать мышой по нужному светодиоду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 29 марта, 2022 Опубликовано 29 марта, 2022 · Жалоба 39 minutes ago, Arlleex said: достаточно зайти под отладчиком Чтобы это сделать, для начала нужно научиться прицеплять gdb к микроконтроллеру! Я, например, это не умею. И не собираюсь учиться. Мне и без SWD-отладки отлично живется! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться