1)是否可以访问未在/ proc / iomem中定义的物理地址?
2)如果设备的物理地址范围未出现在/ proc / iomem中,是否表示该设备尚未被使用/初始化?
是。 假设内存映射所有直接连接的外围设备的ARM处理器,驱动程序可以执行ioremap()将物理内存映射到虚拟内存以进行访问的操作。 但是正确编写的驱动程序将首先调用request_mem_region()以确保它可以使用(并声明)该物理地址空间。 信息/proc/iomem来自驾驶员致电request_mem_region()。
ioremap()
request_mem_region()
/proc/iomem
您将必须检查驱动程序代码以确定驱动程序的编写程度。之前 有一个吗? 使用命令检查系统日志;驱动程序初始化失败。request_mem_region()``ioremap() dmesg
request_mem_region()``ioremap()
dmesg
假设这是一个静态链接的驱动程序,而不是可加载的模块,那么由于每个内核设备驱动程序都有其init()调用的例程,因此可以通过在内核命令行上添加选项“ initcall_debug”来获取跟踪输出。如果使用U-Boot,则应将此选项添加到“ bootargs”变量(用于内核命令行)。
init()