Linux kernel 如何在linux内核中为pl011 uart指定虚拟地址

Linux kernel 如何在linux内核中为pl011 uart指定虚拟地址,linux-kernel,embedded,Linux Kernel,Embedded,我是内核移植的初学者。我正在尝试将Linux内核(版本-4.9.22)移植到定制SoC(基于cpu=arm1176jzfs)上,以用于定制评估板。我的SoC中有ARM Prime cell pl011 UART。它被物理映射到0x5800_1000地址。当我试图将其用作调试UART时,内核请求它的虚拟地址。我应该如何配置此选项 i、 e: 谢谢, Vivek T.如果您有一个调试器,那么您当然可以调试内核没有启动的原因 您可以观看以下步骤: -在内核配置中,启用配置调试信息(内核黑客->编译时检

我是内核移植的初学者。我正在尝试将Linux内核(版本-4.9.22)移植到定制SoC(基于cpu=arm1176jzfs)上,以用于定制评估板。我的SoC中有ARM Prime cell pl011 UART。它被物理映射到
0x5800_1000
地址。当我试图将其用作调试UART时,内核请求它的虚拟地址。我应该如何配置此选项

i、 e:

谢谢,
Vivek T.

如果您有一个调试器,那么您当然可以调试内核没有启动的原因

您可以观看以下步骤:

-在内核配置中,启用配置调试信息(内核黑客->编译时检查和编译器选项)

-编译内核

-从调试器软件中,从elf加载符号。该命令因调试器而异

-找到符号“log_buf”,并选择“将内存显示为转储”选项


所以我认为内核日志存储在缓冲区中。也许它可以帮助您:)

标准UART地址是:

标准端口地址为:

COM1 0x3F8(1016) COM2 0x2F8(760) COM3 0x3E8(1000) COM4 0x2E8(744)

其他端口地址包括:

COM5 0x3E0(992) COM6 0x2E0(736) COM7 0x338(824)
COM8 0x238(568)

的虚拟地址只是使用一组规则(通常非常简单,如位移位和位掩码)对物理地址的映射。您需要首先弄清楚为什么驱动程序配置会要求这样做。
-> Kernel low-level debugging functions
    -> kernel low-level debugging port (Kernel low-level debugging on via ARM Ltd PL01x Primecell UART)
(0x58001000) Physical base address of debug UART
(??) Virtual base address of debug UART