一尘不染

/ proc / iomem的内容

linux

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

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


阅读 666

收藏
2020-06-03

共1个答案

一尘不染

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”变量(用于内核命令行)。

2020-06-03