2

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

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

4

1 回答 1

9

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

是的。
假设一个 ARM 处理器的内存映射所有直接连接的外围设备,驱动程序可以执行一个ioremap()操作来将物理内存映射到虚拟内存以供访问。
但是正确编写的驱动程序会首先调用request_mem_region()以确保它可以使用(并声称可以使用)该物理地址空间。
里面的信息/proc/iomem来自司机打电话request_mem_region()

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

您必须检查驱动程序代码以确定驱动程序的编写情况。之前有
吗? 使用命令查看系统日志;也许驱动程序初始化失败。request_mem_region()ioremap()
dmesg

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

于 2013-09-03T02:16:39.240 回答