yil*_*lah 1 linux linux-device-driver linux-kernel embedded-linux
1)是否可以访问/ proc/iomem中未定义的物理地址?
2)如果设备的物理地址范围没有出现在/ proc/iomem中,是否意味着该设备尚未被使用/初始化?
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"变量(用于内核命令行).