Добрый день.

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

Через gdb можем проверить содержимое этой структуры и попробовать обратиться к регистру MCR, находящемся по смещению 0x10.

Код
(gdb) p/x serial_platform_data2.mapbase
$34 = 0x49020000
(gdb) p/x serial_platform_data2.membase
$35 = 0xfb020000
(gdb) x serial_platform_data2.membase+0x10
0xfb020000:    Cannot access memory at address 0xfb020000
(gdb) x serial_platform_data2.mapbase+0x10
0x49020000:    Cannot access memory at address 0x49020000


Поле membase содержит виртуальный базовый адрес получаемый после вызова ioremap(). Насколько я понимаю, что "рабочими" адресами для ядра являются все-таки виртуальные.
Однако ни по физическому, ни по виртуальному адресу прочитать не удалось. В чем проблема?

Заранее спасибо за помощь.