问题:分配mmio(request_mem_region)后,得到的是物理地址,按理只需要将其转换为虚拟地址后(内核中,低端内存只是一个偏移而已),
应该就可以直接访问了吧?但是为什么还需要使用ioremap将其转换为线性地址后才能访问呢?
解答:分配的mmio的物理地址在内核中不一定能直接访问,比如:
1、x86 32位环境中,mmio的地址范围就在3G-4G直接,位于高端内存,内核中不能直接访问,需要进行映射。
2、一些体系架构中,IO内存根本就不能直接访问,必须建立相应的映射后才行,相应的映射工作由架构相关的ioremap完成
ioremap完成相应的物理地址到内核空间中的线性地址(虚拟地址)的映射,并建立相应页表。
阅读(2265) | 评论(0) | 转发(1) |