Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1214603
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4004
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

分类: LINUX

2014-03-14 15:08:34

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