+ -
当前位置:首页 → 问答吧 → 请随便帮我回答一两个关于linux驱动开发问题?在线等 

请随便帮我回答一两个关于linux驱动开发问题?在线等 

时间:2006-08-09

来源:互联网

ARM里封装了SD控制器,知道了寄存器的地址如0X00210000,这应该是物理地址。
在开发驱动的时候,照理是可以直接*(long *)0x00210000来读写寄存器里的内容的,可在
linux 2.4下要把它转换成逻辑地址,通过IO_ADDRESS(0X00210000)转换成0xf02100,再用
*(long* 0xf0210000)来访问,可以理解,可是在Linux 2.6下问题来了

(1)Linux 2.6 开发驱动不能直接读取物理地址,我同样采用IO_ADDRESS后访问出错,为什么呢?

(2)听说Linux 2.6 IO_ADDRESS 宏变了,我就直接像在Linux2.4下把寄存器的地址加上0xf0000000,
再访问,有问题是什么原因?

(3)听说要用ioremap来把寄存器的地址转换成逻辑地址后再访问,我用了
ioremap转换后,用*(long * 转换后的地址)来读写,会出错,什么原因?
      a),出错后,我又用ioread32(转换后的地址)和iowrite32(转换后的地址)读写寄存器,发现
       写进去的值和读出来的值不一样,使什么原因?
      b) 怎么样知道linux2.6下的物理地址和逻辑地址的影射关系,比如+地址来映射?

请知道的朋友随便回答一个问题就好了,在线等      

作者: wuiiszsu   发布时间: 2006-08-09

论坛人气不如csdn.和linuxforum,一天了也没有人给点提示      

作者: wuiiszsu   发布时间: 2006-08-10

热门下载

更多