求教 uboot下USB的移植

Mr__YANGs 2012-10-17 10:38:25
最近公司想通过U盘对内核进行升级,用的是6410的开发板,我根据/common/cmd_usb.c入手,添加了uboot对usb的支持,和USB相关的开关也开了,但usb start 时扫描不到U盘输出:
e)start USB...
USB: CLK_SRC = 7e00f01c, CLK_DIV1 = 7e00f024,SCLK_GATE = 7e00f038
scanning bus for devices... usb_scan_device :USB_MAX_DEVICE IS 32
New Device 0
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x100 index 0x0 length 0x8


descriptor.bMaxPacketSize0 is 8
set address dev->devnum = 1
usb_control_msg: request: 0x5, requesttype: 0x0
value 0x1 index 0x0 length 0x0
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x100 index 0x0 length 0x12
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x200 index 0x0 length 0x8
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x200 index 0x0 length 0x19
get_conf_no 0 Result 25, wLength 25
if 0, ep 0
##EP epmaxpacketin[1] = 2
set configuration 1
usb_control_msg: request: 0x9, requesttype: 0x0
value 0x1 index 0x0 length 0x0
new device strings: Mfr=0, Product=1, SerialNumber=0
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x300 index 0x0 length 0xFF
USB device number 1 default language ID 0x409
usb_control_msg: request: 0x6, requesttype: 0x80
value 0x301 index 0x409 length 0xFF
Manufacturer
Product OHCI Root Hub
SerialNumber
usb_control_msg: request: 0x6, requesttype: 0xA0
value 0x2900 index 0x0 length 0x4
usb_control_msg: request: 0x6, requesttype: 0xA0
value 0x2900 index 0x0 length 0x9
usb_control_msg: request: 0x0, requesttype: 0xA0
value 0x0 index 0x0 length 0x4
1 USB Device(s) found
scanning bus for storage devices... 0 Storage Device(s) found


#usb info 时输出:
USB_MAX_DEVICE IS 32
1: Hub, USB Revision 1.10
- OHCI Root Hub
- Class: Hub
- PacketSize: 8 Configurations: 1
- Vendor: 0x0000 Product 0x0000 Version 0.0
Configuration: 1
- Interfaces: 1 Self Powered 0mA
Interface: 0
- Alternate Setting 0, Endpoints: 1
- Class Hub
- Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms

求教这是怎么回事啊??
...全文
823 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ying_593254979 2014-07-09
  • 打赏
  • 举报
回复
也遇到相同的问题,device能识别一个,storage device识别不了。问一下楼主问题解决没?
yonsnb 2013-05-22
  • 打赏
  • 举报
回复
进展怎么样,我也开始在调试了,现象和楼主一致,请问楼主进展如何。 haidao2009呢,一起探讨一下、QQ,121313380
且听风雨999 2013-05-15
  • 打赏
  • 举报
回复
请问 lz移植成功没呢? 我也遇到这个问题了。错误在DEBUG: hc_interrupt: returning.. 。然后就time out 。请问你怎么解决这个问题的呢
Mr__YANGs 2012-11-20
  • 打赏
  • 举报
回复
我想问一下,s3c6410平台下的uboot usb 到底好不好使,有没有移植成功的啊??
Mr__YANGs 2012-11-20
  • 打赏
  • 举报
回复
引用 21 楼 RoomHr 的回复:
引用 17 楼 linux_rooter 的回复:引用 14 楼 的回复:引用 9 楼 的回复: 禁用DCache和MMU,把延时加大一点。 这么做貌似可以解决一些问题,但这么做的原理是什么啊?能说说嘛,谢谢,本人比较菜,刚转行做这个不到1年,请赐教0.0 不好意思,这个回复写错了,当我禁用MMU之后我根本就无法启动板子了,uboot不好使了,怎么……
谢啦,这个我知道了,现在该改的也都改了,别人也都这么改的用着就好使,我的怎么还错误呢 DEBUG: SUB URB:[ 32b] dev: 0,ep: 0-I,type:CTRL,len:0/8 stat:0x80000000 DEBUG: SUB URB:[ 32e] dev: 0,ep: 0-I,type:CTRL,len:0/8 stat:0x80000000 DEBUG: DEBUG: USB-error/status: 5 : 57e44aa0 DEBUG: ConditionCode 0x5 DEBUG: RET(ctlr) URB:[ 334] dev: 0,ep: 0-I,type:CTRL,len:0/8 stat:0x20 dev->status == 32 USB device not responding, giving up (status=20) hub: disabling port 1 my define ....usb_clear_port_feature() INFO: submit_control_msg DEBUG: SUB URB:[ 33f] dev: 1,ep: 0-O,type:CTRL,len:0/0 stat:0x80000000 usb_ohci.c: cmd(8): 23 01 01 00 01 00 00 00 不知道什么原因,求助。。。。。
RoomHr 2012-11-13
  • 打赏
  • 举报
回复
引用 17 楼 linux_rooter 的回复:
引用 14 楼 的回复:引用 9 楼 的回复: 禁用DCache和MMU,把延时加大一点。 这么做貌似可以解决一些问题,但这么做的原理是什么啊?能说说嘛,谢谢,本人比较菜,刚转行做这个不到1年,请赐教0.0 不好意思,这个回复写错了,当我禁用MMU之后我根本就无法启动板子了,uboot不好使了,怎么回事?求指教~~ :我怎么连我……
忘了告诉你禁用MMU以后就不存在虚拟地址了,U-BOOT的内存地址要改成物理地址。
zhengmeifu 2012-11-01
  • 打赏
  • 举报
回复
看我给你的私信。Q26451602交流一下。
Mr__YANGs 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
你的USB驱动是HOST驱动还是device驱动呀?要host驱动才能检测U盘插入,才能给u盘供电。应该跟DCASH和MMU没有关系,也和延时没有关系的。USB驱动是要host先发起通讯,device回应。
[/Quote]


是host 驱动现在的情况是
stat = 000000ff
MY: we will join in the hc_interrupt()
stat = 000000ff
MY: we will join in the hc_interrupt()

stat = 000000ff
MY: we will join in the hc_interrupt()

stat = 000000ff
MY: we will join in the hc_interrupt()

stat = 000000ff
ERROR: CTL:TIMEOUT
DEBUG: submit_common_msg: TO status ff

DEBUG: roothub.a: 02001202 POTPGT=2 NOCP NPS NDP=2
DEBUG: roothub.b: 00000000 PPCM=0000 DR=0000
DEBUG: roothub.status: 00000000
DEBUG: roothub.portstatus [0] = 0x00000103 PPS PES CCS
DEBUG: roothub.portstatus [1] = 0x00000100 PPS
MY: we will join in the rh_check_port_status()

MY: dev->status = 80000000

DEBUG: RET(ctlr) URB:[ 0] dev: 0,ep: 0-I,type:CTRL,len:0/8 stat:0x20
MY: we will join in the urb_free_priv()


dev->status == 32

USB device not responding, giving up (status=20)
hub: disabling port
......................
......................
DEBUG: RET(rh) URB:[ 0] dev: 1,ep: 0-I,type:CTRL,len:4/4 stat:0x0
usb_ohci.c: cmd(8): a3 00 00 00 02 00 04 00
usb_ohci.c: data(4/4): 00 01 00 00
Port 2 Status 100 Change 0
2 USB Device(s) found
zhengmeifu 2012-10-31
  • 打赏
  • 举报
回复
你的USB驱动是HOST驱动还是device驱动呀?要host驱动才能检测U盘插入,才能给u盘供电。应该跟DCASH和MMU没有关系,也和延时没有关系的。USB驱动是要host先发起通讯,device回应。
Mr__YANGs 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
USB device not responding, giving up (status=20)
这样看来还是U盘没有响应。从你之前的描述来看,硬件上是OK的,重点查驱动吧。
这里status代表什么意思?
[/Quote]
第一个是是usb_ohci.c文件中sub_comm_msg(struct usb_device *dev,...)中的在usb_def.h中查找是USB_ST_NOT_PROC 0X8000000 //not yet process 不知道是什么意思,也没找到是在哪里赋的值

第二个status 是usb.c文件下usb_control_msg()中的,它是在submit_control_msg(struct usb_device *dev,..)中给的值,这个值是其实就是DEBUG: RET(ctlr) URB:[ 0] dev: 0,ep: 0-I,type:CTRL,len:0/8 stat:0x20
中stat的值,只不过它是十进制的,
if(dev->status == 0)
return dev->act_len;
else{
return -1;
}
很显然此地方返回的是-1,所以下面错了。

现在怀疑是timeout = rh_check_port_status(&gohci);里某部分出错了,导致出现超时错误。
我是把S3C2410上的usb_ohci.c往s3c6410上移植呢,由于是第一次弄,不知道改哪里,请多指教~~
daviddb7 2012-10-31
  • 打赏
  • 举报
回复
USB device not responding, giving up (status=20)
这样看来还是U盘没有响应。从你之前的描述来看,硬件上是OK的,重点查驱动吧。
这里status代表什么意思?
Mr__YANGs 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 9 楼 的回复:
禁用DCache和MMU,把延时加大一点。


这么做貌似可以解决一些问题,但这么做的原理是什么啊?能说说嘛,谢谢,本人比较菜,刚转行做这个不到1年,请赐教0.0
[/Quote]


不好意思,这个回复写错了,当我禁用MMU之后我根本就无法启动板子了,uboot不好使了,怎么回事?求指教~~ :我怎么连我自己发的帖子都没有权限删除,有没有搞错啊!!
Mr__YANGs 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
禁用DCache和MMU,把延时加大一点。
[/Quote]

这么做貌似可以解决一些问题,但这么做的原理是什么啊?能说说嘛,谢谢,本人比较菜,刚转行做这个不到1年,请赐教0.0
Mr__YANGs 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
U盘也是一种文件系统, 根据你的描述, 在文件系统挂载后,U盘可以识别(灯亮), 那就是你初始化U盘的时候,文件系统还没初始化啊! 你把初始化检测U盘的代码,移到挂载文件系统之后,是不是就好了呢?
[/Quote]

还没有到那里呢,现在是检测usb的阶段
Mr__YANGs 2012-10-19
  • 打赏
  • 举报
回复
沉啦,就这么沉啦!!
海信飞人 2012-10-19
  • 打赏
  • 举报
回复
还没到这里
RoomHr 2012-10-19
  • 打赏
  • 举报
回复
USB设备在检测阶段和文件系统没有关系。
  • 打赏
  • 举报
回复
U盘也是一种文件系统, 根据你的描述, 在文件系统挂载后,U盘可以识别(灯亮), 那就是你初始化U盘的时候,文件系统还没初始化啊! 你把初始化检测U盘的代码,移到挂载文件系统之后,是不是就好了呢?
RoomHr 2012-10-19
  • 打赏
  • 举报
回复
禁用DCache和MMU,把延时加大一点。
chenzifei316 2012-10-18
  • 打赏
  • 举报
回复
帮忙顶下~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~别沉了~~~~~~~~~~~~~~~~~~
加载更多回复(6)

21,600

社区成员

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

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