/ proc / iomem的内容

时间:2013-09-02 20:38:25

标签: linux linux-kernel linux-device-driver embedded-linux

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

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

1 个答案:

答案 0 :(得分:7)

  

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

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

  

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

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

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