Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: kamil от Ноябрь 19, 2015, 17:30



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

Вроде бы сделал как в туториолах в интернетах, но что-то он не так работает. Приведу тут все настройки.
openocd server:
(http://zaripov.net/share/qt/1.png)

device:
(http://zaripov.net/share/qt/2.png)

gdb client:
(http://zaripov.net/share/qt/3.png)

stm32 kit:
(http://zaripov.net/share/qt/4.png)

project:
(http://zaripov.net/share/qt/5.png)

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

И все. При этом если запустить openocd вручную:
(http://zaripov.net/share/qt/7.png)

И подключиться к нему по Debug->Start Debugging->Attach to Running Debug Server:
(http://zaripov.net/share/qt/6.png)
То он нормально соединяется и отлаживает нормально. Что я делаю не так?


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kuzulis от Ноябрь 19, 2015, 18:48
Никто не проверял работу с CMake (по крайней мере я). Оно точно работало с QBS и фейковым QMake, но про CMake никто не заявлял. Как вариант, попробуй PIPE режим.

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


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kamil от Ноябрь 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 пока не могу - пока платы нет под рукой. Завтра выложу результ.


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kuzulis от Ноябрь 21, 2015, 13:12
Что-то у меня вообще ничего не работает с stm32f4discovery (креатор крешится), даже с QBS.. Возможно что-то поломали.. или это из-за того что у меня Windows 10.. я вообще без понятия в чем дело...

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


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


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kuzulis от Ноябрь 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 в топку! Нет времени разбираться что там и как (жуйте кактус сами).  ;)


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kamil от Ноябрь 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 входит в голову не сразу. Ничего страшного, разжую.


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kamil от Ноябрь 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 остается запущенным и подключенным к контроллеру после остановка отладки.


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kuzulis от Ноябрь 23, 2015, 16:56
Цитировать
может кто знает, можно ли автоматически закрывать gdb сервер автоматически

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


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: Old от Ноябрь 23, 2015, 19:34
UPD2: может кто знает, можно ли автоматически закрывать gdb сервер автоматически, после завершения отладки? А то сейчас openocd остается запущенным и подключенным к контроллеру после остановка отладки.
Под linux все закрывается. И при запуске openocd в режиме tcp/ip, и через пайпы.


Название: Re: Удаленная отладка stm32 BareMetal
Отправлено: kuzulis от Ноябрь 29, 2015, 19:02
Цитировать
может кто знает, можно ли автоматически закрывать gdb сервер автоматически

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

Если повезет, то будет в 3.6. ;)