Как лучше открыть таблицу регистров периферии в gdb (openocd)?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: понужнобилось отладить stm32f103c8t6. Пишу в блокноте, заливаю через стлинк. Запустил сервер openocd, подключился в gdb. Отладка работает, это конечно здорово, но состояние регистров ядра мне многое не говорит.
Сейчас ситуация такая: наверное, если начать это понимать, станешь магистром черной магии, но не думаю, что мне хватит духа.
Сейчас ситуация такая: как проверять значения переменных (желательно таблицей) и регистров их буквенными обозначениями. Накопал в интернетах svd-файл, но не накопал как его прикрутить без питоно-плясок. Слышал, что в иаре используются ddf (device description file), но о них вообще в интернете тишина.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

В GDB/OpenOCD “таблицу регистров периферии” обычно открывают не как красивое окно, а через чтение memory-mapped registers по адресам из reference manual. OpenOCD даёт доступ к памяти микроконтроллера, а GDB может читать конкретные адреса командами x, monitor mdw или через SVD-инструменты.

Пример чтения слова по адресу в GDB:

x/1wx 0x40021000
x/16wx 0x40021000

x/1wx 0x40021000 x/16wx 0x40021000

Через OpenOCD monitor:

monitor mdw 0x40021000 16

monitor mdw 0x40021000 16

Чтобы было удобно, используйте SVD-файлы. Для многих ARM Cortex-M есть CMSIS-SVD, где описаны периферийные регистры. Некоторые IDE и расширения умеют показывать их в виде дерева: Cortex-Debug для VS Code, Ozone, STM32CubeIDE, CLion embedded tools.

Если работаете только в консоли, можно сделать GDB-команды/скрипты с именованными адресами:

set $RCC_BASE = 0x40021000
x/8wx $RCC_BASE

set $RCC_BASE = 0x40021000 x/8wx $RCC_BASE

Важно: чтение некоторых регистров может иметь side effects, например сбрасывать флаги. Поэтому сверяйтесь с reference manual.

Итог: напрямую в GDB читайте memory-mapped адреса через x или monitor mdw. Для нормальной таблицы регистров подключайте SVD-инструменты или IDE, которая умеет отображать периферию по SVD.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно