USB无法识别的问题

Sniper167 2006-08-23 03:15:34
我要在pc上通过usb访问开发板上的nand flash
偶的最终目标是要做到:把开发板通过usb连到pc上(windows xp),在pc端可以对开发板的nand flash进行读、写、删除等操作

也就跟mp3一样,通过usb连上电脑,可以在电脑上往mp3里面拷歌、删歌等

可我发现现在大多mp3在windows xp下不需要驱动呀
我的开发板通过usb连在电脑上,电脑显示无法识别的usb设备

PC <----------USB---------> 开发板
windows xp <----------USB---------> Linux
USB Host <----------USB---------> USB Device
驱动A <----------USB---------> 驱动B <-------> nand flash驱动

是否要在开发板上把OHCI配置成usb device呢?
我是这样想的
在PC端写个驱动程序A,主要用来识别USB Device设备类型,获得厂商ID、设备ID啥的
然后在开发板写个驱动程序B,用来响应pc端发来的命令,并且这个程序是和nand flash的驱动是挂在一起的,即驱动B收到pc端发来的信号为read,则此程序就调用nand flash的read函数呢?

目前我的开发板一接上电脑就显示无法识别的usb设备
我用usbview看了下,偶把结果贴出来:

左边栏:
Intel(R) 82801DB/DBM USB 2.0 Enhanced Host Controller - 24CD /* 这里偶不明白,偶的开发板用的三星2410,支持的是usb1.1啊,这里怎么是USB 2.0呢? 我觉得应该显示在Intel(R) 82801DB/DBM USB Universal Host Controller这里才对啊 */
--RootHub
----[Port6]DeviceFailedEnumeration: Unknown Device

右边栏:
Device Descriptor:
bcdUSB: 0x0000
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x00 (0)
idVendor: 0x0000
idProduct: 0x0000
bcdDevice: 0x0000
iManufacturer: 0x00
iProduct: 0x00
iSerialNumber: 0x00
bNumConfigurations: 0x00

ConnectionStatus: DeviceFailedEnumeration
Current Config Value: 0x00
Device Bus Speed: Low
Device Address: 0x00
Open Pipes: 0

我的板子用的三星2410 + 三星k9k1208 + linux,是否要先在板子的驱动里面做些东西,usb才能被正确识别出来呢???

分不够再加哈
...全文
4179 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sniper167 2006-08-26
  • 打赏
  • 举报
回复
多谢楼上 :)

我也常去那个论坛

我也是新手 以后多交流吧 QQ31906073 :)
申宇田 2006-08-26
  • 打赏
  • 举报
回复
推荐你到看看下面这个连接,这个论坛应该是目前国内最好的嵌入式开发论坛。我现在也想转到嵌入式开发,以后还得请你多指点.:)
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=621321&page=1&view=collapsed&sb=5&o=0&fpart=
Sniper167 2006-08-25
  • 打赏
  • 举报
回复
多谢楼上指点
我板子上有两个usb口,一个host,一个slave,并且两个电路都正确

我现在用的内核(2.4.18)里面 linux\driver\usb 下面没有gadget这个目录 而usb salve驱动就要用到这里面的东西,现在我也没有找到下载的地方,只知道这个gadget里面有个s3c2410_udc.c跟 file_storage.c,并且都已经找到源码了,就是不知道这个gadget里面还有其他东西不

晓得的说下 感谢
申宇田 2006-08-25
  • 打赏
  • 举报
回复
楼主,你首先得弄明白一点,就是你的板子上确实有一个usb slave,因为usb host和usb slave的硬件是不一样的。或者你的板子上有个usb OTG就更好了,既可以当slave又可以当host。
申宇田 2006-08-24
  • 打赏
  • 举报
回复
不错,如果要把linux当作slave确实有点困难,我对linux不是很了解,我想如果你要通过linux对他里面的usb进行操作(主要就是读写数据,中断处理等)肯定还是要通过linux下的驱动来实现,但是这个驱动又和一般的把linux当主机的驱动有很大的不同,而且由于中间隔了一层linux不能直接操作硬件,所以感觉有点无从入手。确实有点难度。呵呵
Sniper167 2006-08-24
  • 打赏
  • 举报
回复
多谢楼上回复

我检查了下
硬件是没有问题的
主要是在linux里面,我不知道怎么做usb device,很多资料都是把linux当主机,讲的usb host,把linux当slave,资料太少了
lanjun12 2006-08-24
  • 打赏
  • 举报
回复
要在linux端写usb设备驱动!
主要完成对usb的配置,中断的处理,响应host的标准请求==
格式跟一般的linux下的设备驱动差不多.但不同与linux下的host驱动.
lz自己琢磨琢磨吧..比较考验人的
Sniper167 2006-08-24
  • 打赏
  • 举报
回复
我现在的问题就是在linux里面我不知道在哪部分动手,才能把linux做成slave(最好能在host跟slave之间自动切换)

比如ohci的配置是否跟host时一样等问题

现在pc(windows)跟开发板(linux)都是host

一但usb的两头接上pc跟开发板,windows跟linux都接收到中断,检测到有usb接入,都发命令给对方,要求对方发送厂商id,设备id等信息

DWH 2006-08-24
  • 打赏
  • 举报
回复
你将一个USB设备插入PC,PC识别到有设备插入,就会跟设备之间有通讯,你设备上的驱动程序(固件)就会将本设备的标识符,类啊什么的信息给电脑,电脑识别到你这是个什么设备,会调用对应的驱动程序,这样,你的设备才被识别,才能跟电脑通讯的!~
申宇田 2006-08-24
  • 打赏
  • 举报
回复
首先你看到的Device Descriptor都是0,显然不对,应该usb设备枚举就不成功,所以要到开发板上查硬件的问题或者固件的问题。
另外从你的描述中,你要做的是一个u盘的设备,mp3其实是u盘+播放功能,你不需要自己写windows下的驱动,因为微软已经帮你写好u盘驱动了。你要做的,首先是要保证正常的枚举过程,然后进一步,在固件里面收到通过usb协议或者准确的说是usb mass storage协议(网络上应该有,有很多种u盘协议,现在u盘不是新东西了,网络上应该有很多资料),收到read,write,format,读取容量等各种在标准协议里面定义好的命令以后,对这些命令进行正确的解析和处理。
Sniper167 2006-08-23
  • 打赏
  • 举报
回复
恩 板子上有两个usb口 一个usb host 一个usb device
我用的就是usb device 没错啊
色郎中 2006-08-23
  • 打赏
  • 举报
回复
有个主 从的吧

21,597

社区成员

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

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