Отладка STM32 в среде Eclipse+GCC

Так как я недавно перешел на использование связки Eclipse+CodeSourcery G++ Lite в качестве среды разработки для микроконтроллеров STM32, то у меня встал вопрос об отладке с помощью ST-Link.
Решение было найдено в виде ST-Link gdbserver, который легко прикручивается к Eclipse. О чем я кратко и расскажу в этой статье.

Взять ST-Link gdbserver можно из дистрибутива Atollic TrueStudio или скачать сдесь.

Если у вас не установленны драйвера для ST-Link то необходимо их установить (идут в комплекте с gdb сервером, ST-Link_V2_USBdriver).


Приступим к настройке Eclipse. Для начала необходимо установить плагин для аппаратной отладки Help->Install New Software...


Далее идём в меню Run->External Tools->External Tools Configurations... и создадим новую конфигурацию для запуска GDB сервера, примерно как показанно на скриншоте.


В поле Location путь к GDB серверу, в поле Arguments ключи с которыми будем его запускать.
-e: Enable persistent mode.
-d: Enable SWD debug mode.


Сохраняем настройки и приступаем к следующему шагу, настройке проекта.
Идём в меню Run->Debug Configurations и создадим новую конфигурацию отладчика.



В поле C/C++ Application указываем расположение и название *.elf файла, в поле Project название проекта.
Далее переходим на вкладку Debugger.



В поле GDB Command укажем путь к GDB клиенту, у меня это C:\CodeSourcery\bin\arm-none-eabi-gdb.exe, в поле Port number укажем порт к которому будет подключатся GDB клиент, ST-Link gdbserver работает на порту 61234.
Далее переходим на вкладку Startup и настроим стартовые опции, примерно как на скриншоте.


На этом настройку отладчика можно считать законченной и можно приступать к отладке нашего проекта.

Для начала отладки сначала запускаем GDB сервер


Затем запускаем отладку


Теперь можно пошагать по нашему проекту


На этом всё…

Комментарии (48)

RSS свернуть / развернуть
Перебросил в стм32
0
Спасибо за статью!
0
как быстро, происходит отладка, в сравнении например с отладкой в IAR-е?
сам не пользуюсь, но просто интересно, когда начинал работать с арм пробовал отладку, в разы дольше проходила.
0
  • avatar
  • ZiB
  • 22 июня 2011, 13:49
Большой разницы в скорости я не заметил, примерно одинаково.
0
Под STM32Discovery чет не хочет работать(
GDBserver запускается, в дебаг захожу, а там «No source available for „main() at ..“
ЧЯДН?
0
вероятно, стандартная трабла — пробел или кирилица в пути
0
Файл для дебага — C:\Users\Frolls\workspace\stm32\target\target.elf
0
Случайно отправил.

Файл для дебага — C:\Users\Frolls\workspace\stm32\target\target.elf
Путь к отладчику — C:\eclipse\STLink\ST-LINK_gdbserver\ST-LINK_gdbserver.exe

Так что все вроде нормально
0
только что попробовал, стало интересно.
с русскими буквами ошибка как у вас, скопировал проект в корень, все заработало.
блин, но ооочеееннььь медленно отладка идет, в иаре просто летает.
0
IAR денег стоит
0
да, тут я соглашусь. но вот что странно, железо ведь одно :)
0
Блин, наверно, уже почти все перепробовал, — не хочет дебажить. На буке, на компе, и пути пробовал разные ставить, не помогло((
В иаре с полпинка завел, но хочется именно в эклипсе
0
Долго сам допереть не мог в чем дело, а дело то в том, что необходимо сказать компилятору чтоб добавил инфу для GBD(-ggdb).
Если ты настраивал компилятор как и я используя статью sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/setting-up-eclipse-for-stm32-discovery-development Tо! Просто необходимо! вместо строки -c -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd написать -c -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd -ggdb в GCC и G++.
0
Народ, помогите, пожалуйста… Я в арм'ах новичок. Пытаюсь скрестить Eclipse и Code Sourcery.
Все делал как написано здесь: sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/setting-up-eclipse-for-stm32-discovery-development
Все скомпилировалось, появился bin файлик, но при попытке его открытия в St-link utility вылезает ошибка:
«Cannot open the selected file for reading.»
Подскажите, пожалуйста, что делать. Заранее спасибо!
0
Пробуй прошить *hex файл, бинарник у меня тоже не получалось прошить.
+1
Спасибо большое! Все заработало. Вместо строчки
arm-none-eabi-objcopy ${ProjName} ${ProjName}.bin -O binary
нужно использовать:
arm-none-eabi-objcopy ${ProjName} ${ProjName}.hex -O ihex
тогда получается *.hex и все работает.
Кстати, там есть одна маленькая ошибка… При копировании текста файла stm32_flash.ld нужно добавить в конце еще одну скобку }
0
Вылезла проблема.
Не хочет запускаться отладка.
Вывод консоли

Starting server with the following options: 
        Persistant Mode            : Enabled 
        LogFile Name               : debug_log.txt
        Logging Level              : 31
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Enabled 
        SWD Debug                  : Enabled 
NVIC_DFSR_REG	= 0x00000009
NVIC_CFGFSR_REG	= 0x00000000
ST_LINK Major version =2 Jtag version =14
ST_LINK VID=1155 PID=14152
ST_LINK device status: HALT_MODE
Hardware watchpoint supported by the target 
FuncEntry
STM32 device: id =20036410 
STM32 device: Flash size =64
FuncExit
FuncEntry
FuncExit
Connected to the ST-Link Debugger.
Start Logging
Waiting for client to connect on port 61234 ...

По выводу видно что GDB запустился успешно, и ждет подключения. Но подключения не происходит.
Есть мысли в какую сторону копать?
0
Сделал видео(ВПЕРВЫЕ!!!) как работает у меня, может поможет. Удачи.
www.youtube.com/watch?v=9k9as_beI0c&feature=g-upl&context=G2c647cbAUAAAAAAAAAA
0
Помогло, спасибо) Ошибся в номере порта в Debug
0
кто-либо прикручивал отладку и gсс к STM8S/L под Eclipse?
0
  • avatar
  • valio
  • 30 августа 2012, 14:21
Насколько я знаю, версии GCC под STM8 нет.
0
ожидаемого всеми такого порта нет, это точно.
Но есть консольные райзоненс и космик.
Только не понятно как прикрутить отладку.
0
если они умеют делать православный эльф со всей информацией для дебага, то точно так же.
0
Нужен еще соответствующий GDB и сервер (там тоже зависимость от платформы)
0
Хотя да…
0
Приветсятвую.
Делал все как написано. Но что-то не выходит:

Сервер стартует


при запуске отладки вылезает такая бяка


и сервер отваливается


Подскажите пожалуйста где косяк. Все настройки вроде перерыл, ничего не помогает ((
0
еще вот
0
А чем вам проверенный GDB-сервер в виде OpenOCD не нравится?
Есть под все платформы, с эклипсой работает…
По гуглу легко найдете как исходники, так и бинари для Windows.
0
Не факт, что он работает с ST-Link «искаропки». Впрочем, для этого случая есть github.com/texane/stlink (насчет винды, правда, не уверен). Под линухом работает отлично.
0
на робокрафте говорят, что и под виндой работает.
0
работает из коробки под виндой/линухом. и с st-link-ом и с кучей других.
0
Да OpenOCD работает из под винды с ST-Link-ом.
Но не нравится 2 момента:
— После отключения от устройства целевой проц висит, ресет кнопкой не помогает, полагаю что в ресете он как раз его и оставляет
— Замороченный конфиг
monitor reset halt
file Debug/t3.elf
monitor flash write_image erase z\:\\_projects_\\_eclipse_workspace_\\t3\\Debug\\t3.elf 0 elf

file… — он хватает из папки проекта, т.е. путь относительно корня проекта
а
monitor flash write_image erase… — требует путь относительно места запуска файла openocd.exe, у меня это d:\_ARM_\openocd-0.6.0-rc2
а стартует из батника так — .\bin-x64\openocd-x64-0.6.0-rc2 -f .\scripts\board\stm32f0discovery.cfg

Это если обмозговать можно конечно привести к нормальному виду, но мозг еще пока тошнит от разборов с настройками эклипса ))

Больше конечно напрягает то что девайс не отпускает после отключения.
0
Да и еще после Zadig-а родной софт ST-Link не видит и ST-Link gdbserver от Атолик-а
0
может я что-то делаю не так — но у меня шьется без проблем (правда шью я батником, вызывая тузлы от СТ), а отлаживаю из eclipse, используя openocd.
дрова штатные, задиг не пользовал.
еклипс настраивал как тут описано: www.chibios.org/dokuwiki/doku.php?id=chibios:guides:eclipse2#debugging
опеносд брал 0.6.0 релиз.
плата — F4 discovery, просто тупо скопировал конфиг openocd, ничего не писал.
0
Тоже пытаюсь запустить отладку через ST-link (до этого отлаживал китайским J-link и сеггеровским сервером). Картина та же, что и у Sprutx.
Какую версию Eclips вы используете? Я пытаюсь запустить на juno, сейчас на Indigo попробую
0
на немецком форуме тоже жалуются на эту проблему
www.mikrocontroller.net/topic/251009
0
Ага, скачал версию 1.3 по ссылке в начале топика (вместо 1.6 с сайта Atolic), и на ней работает, правда тормоза жуткие.
0
в итоге скачал версию 1.5.6
upwap.ru/2811078
она работает нормально
+1
А может есть у кого ST-Link gdbserver от версии 3.1.0 или 3.0.0?
На 3.0.0 вроде как должно работать
0
смотри, выше ответил, ссылка на версию 1.3.0 есть в топике, ссылку на 1.5.6 я дал
0
Ага спасибо, я туже ссылку нашел уже )) Пашет норм и проц отпускает при дисконнекте.
0
Работающие настройки для ST-LINK_gdbserver v1.5.6

target remote localhost:61234
monitor reset init
monitor debug_level 2
monitor soft_reset_halt
set mem inaccessible-by-default off
monitor debug_level 0
file z:/_projects_/_eclipse_workspace_/t3/Debug/t3.elf
load
monitor reset init

0
если убрать ключ -e, то ST-Link gdbserver будет останавливаться после останова отладки
0
Возможно ли добавить в проект файл *.с не прибегая к функции импортирования, которая тупо копирует файл из какой-либо папки в папку с текущим проектом, а сделать в текущем проекте ссылку на *.с файл расположенный за пределами папки текущего проекта?
0
При запуске отладки возникает ошибка.

В чем причина может быть?
0
проблема указанная выше, насколько я понимаю, это не правильно выбранный дебаг, т.е. «name-file.elf» а надо «name-file Dubug»

У меня проблема такая



Использую:

Eclipse IDE for C/C++ Developers
Version: Indigo Service Release 2
Build id: 20120216-1857

Atollic TrueSTUDIO gdbserver for ST-Link. Version 1.3.0 Pro
Developed by Atollic AB for STMicroelectronics
Copyright 2010-2011, Atollic AB and STMicroelectronics

Для настройки eclipse использовал вот эту статью
0
коллеги. кто нибудь сталкивался. почему отладчик при пошаговой отладке пропускает команды, и еще не заходит внутрь цикла? eclipse st-link
0
Кажется решил проблему. Перепробовал OpenOCD, ST-LINK_gdbserver, st-util, — первый вообще не смог запустить, второй запускается через раз, а вот с последним получилось шагать более менее не пропуская строк. Понимаю конечно что с первыми двумя просто я не разобрался до конца, но пока что так.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.