Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: kuzulis от Декабрь 23, 2014, 16:41



Название: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: kuzulis от Декабрь 23, 2014, 16:41
Всем доброго времени.

Набросал тут (https://bugreports.qt-project.org/browse/QTCREATORBUG-13686) плагин (там есть и скриншоты и более подробное описание) с помощью которого можно создавать/конфигурировать/менять отдельные конфигурации аппаратных GDB серверов для отладки On-Chip систем (MCU). Кто работал с Keil/IAR/CoCox - тот в теме.

В настоящее время BareMetal поддерживает только GDB сервера (GDB протокол). Но сейчас неудобно задавать хост/порт для удаленного GDB сервера. Т.е. имею ввиду что если вдруг хочу использовать другой GDB сервер, то надо редактировать эти самые хост/порт. Кроме того, сейчас BareMetal не может автоматом стартануть GDB сервер перед отладкой - приходится ручками запускать сервак отдельно, а потом уже коннектиться к нему и отлаживаться.

Конечно, я слукавил: есть небольшой хак чтобы автоматом запускать OpenOCD сервер в Pipe режиме, но это только для OpenOCD (т.к. из известных мне серверов только он нормально поддерживает Pipes).

Но в целом, для кастомных серверов невозможно автоматом их стартовать.

Поэтому мой патч дает такую возможность, кроме того, он юзер-френдли.

Порядок действий такой (на примере OpenOCD):

0. Устанавливаем OpenOCD.
1. Создаем новую OpenOCD конфигурацию: задаем путь к екзешке, нужным конфигам, задаем дополнительные аргументы (если надо).
2. Создаем новое BareMetal устройство и в комбо-боксе выбираем любую конфигурацию GDB сервера (например какую-нить из OpenOCD или прочих других).
3. Создаем BareMetal Kit: указываем компилятор, отладчик, выбираем BareMetal устройство (в общем, как обычно).
4. Создаем или открываем любой QBS проект для голой железки (именно QBS - т.к. это проще всего и предпочтительнее). Далее, компилим и отлаживаем его как хотим.
Можем создать еще другие конфигурации GDB серверов и их выбирать вместо OpenOCD..

В общем, если кому интересно - то плюсуйте в баг-трекере.. Если у кого есть другие идеи - тоже пишите.. В любом случае, даже если патч не примут - то может быть, кому-то он пригодится и упростит жизнь. :)




Название: Re: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: b-s-a от Декабрь 25, 2014, 12:26
А ты случаем не можешь сделать плагин (или изменить имеющийся), чтобы можно было подключаться к gdbserver не только по сети, но и по последовательному порту?


Название: Re: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: kuzulis от Декабрь 25, 2014, 14:40
Если честно, то я Х.З. Я даже не знал что такое возможно. Кинь ссылок "на почитать" плз. :)

UPD:
Ах, кажется достаточно на хосте делать:
Цитировать
(gdb) target remote /dev/ttyb
вместо:
Цитировать
(gdb) target remote the-target:2345

Если так - то это должно быть просто. Достаточно менять только поле ввода где вместо хост/порт задавать имя последовательного порта. Но мне не на чем проверить serial режим.. Также я не знаю, будет ли оно работать на Windows (имею ввиду, задавать сериал порт тогда просто как COMxx?).
И еще, я не знаю, поддерживает ли GDB-engine из креатора последовательный протокол (хотя, по-идее должно, т.к. протокол один и для TCP/IP и для Serial).



Название: Re: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: kuzulis от Январь 06, 2015, 21:07
Ура, закоммитили. Выйдет в QtCreator 3.4.0.


Название: Re: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: b-s-a от Январь 20, 2015, 11:13
Для работы с последовательным портом еще надо задавать скорость (ключ -b baud).
Цитировать
И еще, я не знаю, поддерживает ли GDB-engine из креатора последовательный протокол (хотя, по-идее должно, т.к. протокол один и для TCP/IP и для Serial).
Ему должно быть пофиг. Потому что используется собственно gdb.


Название: Re: Плагин, расширяющий отладку BareMetal устройств.
Отправлено: kuzulis от Январь 20, 2015, 12:24
Проблема в том, что мне проверить не на чем. Ты и сам можешь это "замутить" если оно тебе так надо. ;)