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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Плагин, расширяющий отладку BareMetal устройств.  (Прочитано 6852 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Декабрь 23, 2014, 16:41 »

Всем доброго времени.

Набросал тут плагин (там есть и скриншоты и более подробное описание) с помощью которого можно создавать/конфигурировать/менять отдельные конфигурации аппаратных 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..

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


« Последнее редактирование: Декабрь 23, 2014, 16:47 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #1 : Декабрь 25, 2014, 12:26 »

А ты случаем не можешь сделать плагин (или изменить имеющийся), чтобы можно было подключаться к gdbserver не только по сети, но и по последовательному порту?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Декабрь 25, 2014, 14:40 »

Если честно, то я Х.З. Я даже не знал что такое возможно. Кинь ссылок "на почитать" плз. Улыбающийся

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

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

« Последнее редактирование: Декабрь 25, 2014, 14:51 от kuzulis » Записан

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

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Январь 06, 2015, 21:07 »

Ура, закоммитили. Выйдет в QtCreator 3.4.0.
Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #4 : Январь 20, 2015, 11:13 »

Для работы с последовательным портом еще надо задавать скорость (ключ -b baud).
Цитировать
И еще, я не знаю, поддерживает ли GDB-engine из креатора последовательный протокол (хотя, по-идее должно, т.к. протокол один и для TCP/IP и для Serial).
Ему должно быть пофиг. Потому что используется собственно gdb.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Январь 20, 2015, 12:24 »

Проблема в том, что мне проверить не на чем. Ты и сам можешь это "замутить" если оно тебе так надо. Подмигивающий
Записан

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


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