当前位置: 代码迷 >> 驱动开发 >> 嵌入式linux驱动求高人指教,该怎么处理
  详细解决方案

嵌入式linux驱动求高人指教,该怎么处理

热度:31   发布时间:2016-04-28 10:34:09.0
嵌入式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是将物理地址映射成内核虚地址,供驱动io操作
------解决方案--------------------
个人感觉都OK,有什么问题吗?什么现象?
------解决方案--------------------
第一个ioremap 已经映射了8字节,就是把0x3cfffff0-0x3cfffff8,把B已经包含进去了,所以不用再映射一次。
重叠映射不是好习惯。