首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

嵌入式linux驱动求圣人指教

2012-12-17 
嵌入式linux驱动求高人指教在linux下写驱动要用虚拟地址,这个我知道。例如:要操作两个寄存器寄存器A的地址

嵌入式linux驱动求高人指教
在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)
请问以上两种映射后的虚拟地址操作的都是实际的物理地址吗,第二种映射方式是否正确。
[最优解释]
第一个ioremap 已经映射了8字节,就是把0x3cfffff0-0x3cfffff8,把B已经包含进去了,所以不用再映射一次。
重叠映射不是好习惯。
[其他解释]
ioremap是将物理地址映射成内核虚地址,供驱动io操作
[其他解释]
个人感觉都OK,有什么问题吗?什么现象?
[其他解释]
貌似对ioremap的理解有偏差,比如ioremap的形参、功能。
[其他解释]
求解释,
[其他解释]
第一种肯定不行,因为寄存器B根本没映射过去
[其他解释]
第一种 VB=VA+4才对,第2种有重叠不推荐
[其他解释]

引用:
第一种 VB=VA+4才对,第2种有重叠不推荐


重叠是怎么回事呢
[其他解释]
头有点晕,听高手解答。
[其他解释]
学习一下,本人正在学习
[其他解释]
明白,谢谢。

热点排行