LINUX.ORG.RU

Использование kgdb для доступа к регистрам периферии Cortex-A8

 , , , ,


0

2

Имеется ядро 2.6.32 на AM3517 (Cortex-A8). Все необходимые драйвера включены непосредственно в него. Пытаюсь разобраться с отладкой ядра с помощью встроенного отладчика kgdb. Ядро собрано с отладочной информацией и поддержкой отладчика KGDB. С компьютера по последовательному порту подключаюсь к плате с помощью gdb. В принципе, kgdb работает. Установка точек останова, просмотр глобальных переменных ядра не вызывают никаких проблем. Однако столнулся с тем, что никак не удается прочитать значения регистров периферии.

Допустим, пытаемся прочитать регистр MCR UART3. В ядре информация об UART3 находится в следующей структуре.

static struct plat_serial8250_port serial_platform_data2[] = {
    {
        .mapbase    = OMAP_UART3_BASE,
        .irq        = 74,
        .iotype        = UPIO_MEM,
        .regshift    = 2,

Поле mapbase - это физический адрес из Technical Reference Manual. Для UART3 он будет 0x49020000

Поле membase этой структуры содержит виртуальный базовый адрес, получаемый после вызова ioremap() при инициализации UART.

Через gdb можем проверить содержимое этой структуры:

(gdb) p/x serial_platform_data2.mapbase
$34 = 0x49020000
(gdb) p/x serial_platform_data2.membase
$35 = 0xfb020000

Теперь пробуем обратиться к регистру MCR, находящемся по смещению 0x10 относительно базового адреса регистров UART, согласно Technical Reference Manual.

(gdb) x serial_platform_data2.membase+0x10
0xfb020000:    Cannot access memory at address 0xfb020010
(gdb) x serial_platform_data2.mapbase+0x10
0x49020000:    Cannot access memory at address 0x49020010

Ни по физическому, ни по виртуальному адресу прочитать не удалось. Почему так? Подозреваю, что я что-то в корне неверно понимаю тут. Подскажите, куда копать дальше.


Ответ на: комментарий от anonymous

Аналогично

(gdb) p *0xfb020010
Cannot access memory at address 0xfb020010
(gdb) p *0x49020010
Cannot access memory at address 0x49020010
skvorli
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.