嵌入式linux驱动求高人指教

chinayangbo2011 2012-11-19 10:18:32
在linux下写驱动要用虚拟地址,这个我知道。
例如:要操作两个寄存器 寄存器A的地址为0x3cfffff0,寄存器B的地址是0x3cfffff4,问题来了。
当我进行虚拟地址映射的时候分两中操作,
第一种vA=(volate unsigned int *)ioremap(0x3cfffff0,8)
vB=vA+1;
第二种:vA==(volate unsigned int *)ioremap(0x3cfffff0,8)
vB==(volate unsigned int *)ioremap(0x3cfffff4,8)
请问以上两种映射后的虚拟地址操作的都是实际的物理地址吗,第二种映射方式是否正确。
...全文
211 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinayangbo2011 2012-11-22
  • 打赏
  • 举报
回复
明白,谢谢。
nadleeh 2012-11-21
  • 打赏
  • 举报
回复
第一个ioremap 已经映射了8字节,就是把0x3cfffff0-0x3cfffff8,把B已经包含进去了,所以不用再映射一次。 重叠映射不是好习惯。
yshzhang 2012-11-20
  • 打赏
  • 举报
回复
学习一下,本人正在学习
falloutmx 2012-11-20
  • 打赏
  • 举报
回复
第一种肯定不行,因为寄存器B根本没映射过去
zhenghn2010 2012-11-20
  • 打赏
  • 举报
回复
ioremap是将物理地址映射成内核虚地址,供驱动io操作
chinayangbo2011 2012-11-20
  • 打赏
  • 举报
回复
求解释,
wesley 2012-11-20
  • 打赏
  • 举报
回复
头有点晕,听高手解答。
dongdchongcao1111 2012-11-20
  • 打赏
  • 举报
回复
个人感觉都OK,有什么问题吗?什么现象?
chinayangbo2011 2012-11-20
  • 打赏
  • 举报
回复
引用 5 楼 nadleeh123 的回复:
第一种 VB=VA+4才对,第2种有重叠不推荐
重叠是怎么回事呢
nadleeh 2012-11-20
  • 打赏
  • 举报
回复
第一种 VB=VA+4才对,第2种有重叠不推荐
阿曼 2012-11-19
  • 打赏
  • 举报
回复
貌似对ioremap的理解有偏差,比如ioremap的形参、功能。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧