Russian Qt Forum
Ноябрь 24, 2024, 07:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаленная отладка stm32 BareMetal  (Прочитано 9634 раз)
kamil
Гость
« : Ноябрь 19, 2015, 17:30 »

Есть некоторый код, для микроконтроллера stm32, который хорошо было бы отлаживать в qt creator'e. Проект использует cmake для сборки, и пока неплохо работает в связке с qt creator. Пока можно компилировать и заливать на плату. Осталось сделать последний шаг - отладку.

Вроде бы сделал как в туториолах в интернетах, но что-то он не так работает. Приведу тут все настройки.
openocd server:


device:


gdb client:


stm32 kit:


project:


Но в данном случае при вызове дебага или при нажатии на F5 ничего не происходит, ни ошибок, на сообщений, только в Application output:
Код:
Debugging starts
Debugging has finished

И все. При этом если запустить openocd вручную:


И подключиться к нему по Debug->Start Debugging->Attach to Running Debug Server:

То он нормально соединяется и отлаживает нормально. Что я делаю не так?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Ноябрь 19, 2015, 18:48 »

Никто не проверял работу с CMake (по крайней мере я). Оно точно работало с QBS и фейковым QMake, но про CMake никто не заявлял. Как вариант, попробуй PIPE режим.

UPD: Посмотри что выводится в Debugger View (QtCreator->Window->Views->Debugger View или как-то так).
UPD2: И выложи-ка минимальный CMake проект (просто с main.cpp и стартап файлом без использования всякой периферии и прочего). Если будет время - я могу посмотреть.
« Последнее редактирование: Ноябрь 19, 2015, 19:02 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kamil
Гость
« Ответ #2 : Ноябрь 20, 2015, 02:24 »

Никто не проверял работу с CMake (по крайней мере я). Оно точно работало с QBS и фейковым QMake, но про CMake никто не заявлял. Как вариант, попробуй PIPE режим.

UPD: Посмотри что выводится в Debugger View (QtCreator->Window->Views->Debugger View или как-то так).
UPD2: И выложи-ка минимальный CMake проект (просто с main.cpp и стартап файлом без использования всякой периферии и прочего). Если будет время - я могу посмотреть.

Тут выложил простейший компилируемый проект из одного main.c:
https://drive.google.com/folderview?id=0By2N30gBjyToVzE5bUxNeWtHdFk&usp=sharing

Что выводит Debugger View пока не могу - пока платы нет под рукой. Завтра выложу результ.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Ноябрь 21, 2015, 13:12 »

Что-то у меня вообще ничего не работает с stm32f4discovery (креатор крешится), даже с QBS.. Возможно что-то поломали.. или это из-за того что у меня Windows 10.. я вообще без понятия в чем дело...

UPD: Даже старые версии креатора (3.4.x) тоже крешатся..
Записан

ArchLinux x86_64 / Win10 64 bit
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Ноябрь 21, 2015, 18:19 »

Но в данном случае при вызове дебага или при нажатии на F5 ничего не происходит, ни ошибок, на сообщений, только в Application output:
Код:
Debugging starts
Debugging has finished
Зайдите на вкладку настройки параметров проекта (Project) -> подзакладка запуска (Run) -> конфигурация запуска
и выберите запуск вашего проекта через сервер GDB или аппаратный отладчик.
И все будет работать. По крайней мере у меня в linux все работает с последним креатером и CMake. Улыбающийся
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Ноябрь 23, 2015, 14:31 »

Сейчас проверил с QtCreator 3.6.x (самосборный) в связке с QBS на Windows 8.1 x32 - все работает...
UPD: И также все работает в QtCreator 3.5.1 (оффициальный) на Windows 8.1 x32 хосте.

UPD2: А по поводу CMake примера - я даже не смог его открыть (я вообще не использую CMake, поэтому не знаю/забыл как там надо). Я просто скачал все файлы и папочки (main.c , CMakeLists.txt и tools/) и попробовал открыть.. Креатор спросил о выборе генератора, я выбрал "Unix generator (ARM)", и жмакнул на "Run CMake"... оно мне выдало сто-пицот ошибок.

Итого: CMake в топку! Нет времени разбираться что там и как (жуйте кактус сами).  Подмигивающий
« Последнее редактирование: Ноябрь 23, 2015, 14:52 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kamil
Гость
« Ответ #6 : Ноябрь 23, 2015, 15:44 »

Сейчас проверил с QtCreator 3.6.x (самосборный) в связке с QBS на Windows 8.1 x32 - все работает...
UPD: И также все работает в QtCreator 3.5.1 (оффициальный) на Windows 8.1 x32 хосте.

UPD2: А по поводу CMake примера - я даже не смог его открыть (я вообще не использую CMake, поэтому не знаю/забыл как там надо). Я просто скачал все файлы и папочки (main.c , CMakeLists.txt и tools/) и попробовал открыть.. Креатор спросил о выборе генератора, я выбрал "Unix generator (ARM)", и жмакнул на "Run CMake"... оно мне выдало сто-пицот ошибок.

Итого: CMake в топку! Нет времени разбираться что там и как (жуйте кактус сами).  Подмигивающий

Да, Cmake входит в голову не сразу. Ничего страшного, разжую.
Записан
kamil
Гость
« Ответ #7 : Ноябрь 23, 2015, 15:53 »

Но в данном случае при вызове дебага или при нажатии на F5 ничего не происходит, ни ошибок, на сообщений, только в Application output:
Код:
Debugging starts
Debugging has finished
Зайдите на вкладку настройки параметров проекта (Project) -> подзакладка запуска (Run) -> конфигурация запуска
и выберите запуск вашего проекта через сервер GDB или аппаратный отладчик.
И все будет работать. По крайней мере у меня в linux все работает с последним креатером и CMake. Улыбающийся

Да, точно. Теперь все работает.
Только правда крашится при попытке остановится или приостановится, но с этим постараюсь разобраться сам.

UPD: если у кого тоже будет крашится: надо зачекать Tools->Options...->GDB Extended->Use asynchronus mode to control the inferior.

UPD2: может кто знает, можно ли автоматически закрывать gdb сервер автоматически, после завершения отладки? А то сейчас openocd остается запущенным и подключенным к контроллеру после остановка отладки.
« Последнее редактирование: Ноябрь 23, 2015, 16:18 от kamil » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Ноябрь 23, 2015, 16:56 »

Цитировать
может кто знает, можно ли автоматически закрывать gdb сервер автоматически

Неа, еще не реализовано... хотя в Linux оно останавливает openocd (как-то само собой работает). Попробуй PIPE режим, как вариант.
Записан

ArchLinux x86_64 / Win10 64 bit
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #9 : Ноябрь 23, 2015, 19:34 »

UPD2: может кто знает, можно ли автоматически закрывать gdb сервер автоматически, после завершения отладки? А то сейчас openocd остается запущенным и подключенным к контроллеру после остановка отладки.
Под linux все закрывается. И при запуске openocd в режиме tcp/ip, и через пайпы.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Ноябрь 29, 2015, 19:02 »

Цитировать
может кто знает, можно ли автоматически закрывать gdb сервер автоматически

Вот, я вроде пофиксил: https://codereview.qt-project.org/142408

Если повезет, то будет в 3.6. Подмигивающий
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 22.