当前位置:  技术问答>linux和unix

USB驱动 OHCI寄存器 ioremap地址映射

    来源: 互联网  发布时间:2016-07-03

    本文导语:  最近在搞USB驱动,遇到这样的问题: 为了访问OHCI寄存器,所以利用ioremap进行地址映射。于是,OHCI寄存器的物理地址0x74300000映射为虚拟地址0xC6400000,根据该虚拟基地址,读写OHCI的寄存器,发现刚写下去的值,立刻...

最近在搞USB驱动,遇到这样的问题:
为了访问OHCI寄存器,所以利用ioremap进行地址映射。于是,OHCI寄存器的物理地址0x74300000映射为虚拟地址0xC6400000,根据该虚拟基地址,读写OHCI的寄存器,发现刚写下去的值,立刻读出来居然全部都是0,也就是根据映射后的虚拟地址读写寄存器错误。
检查时钟有关的寄存器,发现应该是没有问题的,寄存器内容如下(S3C6410芯片):
四个主要的寄存器:
CLKSRC 0x542007
CLKDIV1 0x0
HCLKGATE 0xffffffff
SCLKGATE 0xffffffff

这到底是什么问题啊?ioremap后的虚拟地址不能直接访问OHCI的物理寄存器吗?如果可以,可是为什么访问结果不对呢?

|
upupup!

|
某些寄存器的各位的状态分别代表各个功能的,某些功能是可以写,某些功能是只读的。这个你在datasheet要看清楚。
另外你可以在写之前先读出来看看该寄存器的内容是什么,写的时候换多几个值试试看。

|
首先看看 datasheet, OHCI寄存器是否可以读写,有可能是寄存器的某些位只读,某些位可写。

然后看看你在ioremap调用是否返回成功。

0xC5B00000地址如果没有被用到的话,不能访问是正确的。

可以到 LinuxSRC/include/asm/arch 里面的某个头文件找找,一般板子上的那些寄存器的物理地址映射到linux上的虚拟地址都已经定义好的了。

|
你的arch里没有直接把所有的IO区域都映射到内核虚拟内存里去吗?

如果usb设计成一块Memory io,是可以这样做的,至于为什么是0, 请高手上前。。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • usb接口与usb transceiver的问题
  • 提问:arm9上对usb设备usb四根线数据的截取
  • USB同一个端口,USB协议不同对应不同的总线
  • linux主机检测不到开发板(USB-USB连接)
  • usb键盘和usb鼠标对应的设备文件是哪两个?
  • [求助]关于usb-serial---------usb转串口没有设备
  • 挂载USB后,打开USB时找不到文件,都是文件夹,求解!
  • USB驱动程序开发中,如何读取USB设备数据??
  • usb.c:usb 2(vend...) is not claimed by any active driver???
  • 有谁能告诉我USB设备驱动和USB gadget驱动究竟有什么不同么?
  • 安装usb-modeswitch时提示 找不到usb.h
  • 请教usb host和usb slave的区别
  • linux usb驱动中的usb0端口接收数据问题
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • 请问如何在USB上安装Linux,并通过USB引导
  • usb驱动与umount的问题!读懂USB驱动的大牛过来瞧瞧啊
  • (cdc-acm.c)usb转串口驱动中usb读数据问题:usb->status=-2
  • 对于linux下的usb蓝牙适配器驱动hci_usb.c中的一些宏(如HCI_RESET)是什么意思?
  • linux设备驱动程序 usb-skeleton这个程序,能不能用具体的usb设备测试它的读写功能啊??
  • 如何禁用USB鼠标和键盘,但是USB存储设备还可以使用??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3