Linux /proc/iomem的内容

Linux /proc/iomem的内容,linux,linux-kernel,linux-device-driver,embedded-linux,Linux,Linux Kernel,Linux Device Driver,Embedded Linux,1) 是否可以访问未在/proc/iomem中定义的物理地址 2) 如果设备的物理地址范围未出现在/proc/iomem中,是否意味着该设备尚未使用/初始化 1) 是否可以访问未在/proc/iomem中定义的物理地址 是的。 假设ARM处理器内存映射所有直接连接的外围设备,驱动程序可以执行ioremap()操作,将物理内存映射到虚拟内存进行访问。 但是正确编写的驱动程序会首先调用request\u mem\u region(),以确保它可以使用(并声称拥有)该物理地址空间。 /proc/iom

1) 是否可以访问未在/proc/iomem中定义的物理地址

2) 如果设备的物理地址范围未出现在/proc/iomem中,是否意味着该设备尚未使用/初始化

1) 是否可以访问未在/proc/iomem中定义的物理地址

是的。
假设ARM处理器内存映射所有直接连接的外围设备,驱动程序可以执行
ioremap()
操作,将物理内存映射到虚拟内存进行访问。
但是正确编写的驱动程序会首先调用
request\u mem\u region()
,以确保它可以使用(并声称拥有)该物理地址空间。
/proc/iomem
中的信息来自驱动程序调用
请求\u mem\u region()

2) 如果设备的物理地址范围未出现在/proc/iomem中,是否意味着该设备尚未使用/初始化

您必须检查驱动程序代码,以确定驱动程序编写得有多好。
ioremap()
之前是否有
request\u mem\u region()
使用
dmesg
命令检查系统日志;可能驱动程序初始化失败

假设这是一个静态链接的驱动程序,而不是一个可加载的模块,那么当每个内核设备驱动程序都调用了它的
init()
例程时,您可以通过在内核命令行上添加选项“initcall\u debug”来获得跟踪输出。如果您使用的是U-Boot,那么应该将此选项添加到“bootargs”变量(用于内核命令行)