wince设备被识别为U盘问题

wsbighead 2009-11-21 11:05:24
大家好。
我的开发平台是S3C2410+WINCE5.0,目的是想让WINCE设备通过USB线接到PC时被识别为U盘。
我按照网上查的资料把相关的注册表项都改了,比如:
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Mass_Storage_Class"

[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
; idVendor must be changed. 045E belongs to Microsoft and is only to be used for
; prototype devices in your labs. Visit http://www.usb.org to obtain a vendor id.
"idVendor"=dword:0547
"Manufacturer"="Generic Manufacturer (PROTOTYPE--Remember to change idVendor)"
"idProduct"=dword:2720
"Product"="Generic Mass Storage (PROTOTYPE--Remember to change idVendor)"
"bcdDevice"=dword:0
等等。
在添加组件的时候也选上core os service下面那个usb host support,usb storeage class driver,在Catalog Items View中还选择”Device Drivers”->”USB Function”->”USB Function Clients”->”Mass Storage”。但是还是没起作用。
碰到的问题是:插上USB时,串口会打印一系列信息,从这些信息可以看出sc2410_usb_ser.c和sc2410_usb_hw.c都运行到了,但是在“设备管理器”里看到的确是“wince usb device”,并没有被识别为mass storage。感觉好象usbmsfn.dll根本没有起作用,因为bot.cpp里的调试信息并没被打印出来,而从source文件看bot.cpp是构成usbmsfn.dll的组成部分。如果我把注册表项:[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\USB]
"Dll"="sc2410_usb_ser.Dll"
"IoBase"=dword:B1200000
"Irq"=dword:B
"IoLen"=dword:130
"Tsp"="Unimodem.dll"
"DeviceArrayIndex"=dword:0
"Prefix"="COM"
"Order"=dword:2
"DeviceType"=dword:0
"FriendlyName"="SC2410 USB Cable:"
; Eliminate flow control bit
"DevConfig"=hex: 10,00,00,00,05,00,00,00,00,01,00,00,00,4B,00,00,00,00,08,00,00,00,00,00,00
注释掉的话,插上USB,串口没有任何调试信息输出,PC机显示无法识别的USB设备。
我的疑惑是:(1)usbmsfn.dll到底和sc2410_usb_ser.dll有没有关系?我的理解是usbmsfn.dll是MDD层的东西,它应该要调用底层的东西,底层的东西是不是在BSP包smdk2410\DRIVERS\USB\FUNCTION里,但是这个文件夹里又只有sc2410_usb_hw.c和sc2410_usb_ser.c,这两个文件是生成sc2410_usb_ser.dll的。
(2)怎么让usbmsfn.dll被正确加载并被调用?让程序跑到bot.cpp里?感觉要是跑到bot.cpp里应该就快成功了。插上USB后wince的整个调用机制是怎样的?

初次到这里来,没什么积分,USB也是刚开始接触,希望大家能大力支持。非常感谢。








...全文
1078 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
bikong7 2012-02-10
  • 打赏
  • 举报
回复
我想弄一个WINCE6.0 和PC 通过USB线通信,PC上和WINCE6.0上各一个软件,实现互通数据。。。没头绪呀。。。
xuefeng_baggio 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 wsbighead 的回复:]
我现在把HIVE注册表去掉了,USB接上PC时,open store终于成功了, WINCE上Nand Flash的盘符也消失了,但在PC上还是认不到U盘, USB DEVICE那有个感叹号. 我用USB HOUND抓数据发现set config fail, 是什么原因导致set config失败呢?
[/Quote]
请教下 你是怎么把hive注册表去掉的??这是什么意思?是不是组件中去掉即可!
wsbighead 2009-12-03
  • 打赏
  • 举报
回复
对. 卸载驱动或者改IDVENDOR都可以解决的. 因为PC已经把同步软件的驱动和IDVENDOR绑定了.
xuefeng_baggio 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 wsbighead 的回复:]
哈哈,终于搞定了,是我之前装了个同步软件的驱动影响的.散分了.
[/Quote]
楼主分享下经验呀?这个同步软件是什么?activesync吗?你是怎么解决的呢??
wsbighead 2009-12-03
  • 打赏
  • 举报
回复
还有个问题,当我把USB线插上的时候,WINCE上NAND FLASH的盘符消失,同时PC上显示U盘盘符;但是当我拔掉USB线时,PC上的盘符小时,而WINCE上的盘符却没有显示出来,这个问题怎么解决啊?
wsbighead 2009-12-03
  • 打赏
  • 举报
回复
对.
xuefeng_baggio 2009-12-02
  • 打赏
  • 举报
回复
楼主呢?问题还解决了??我今天也搞这个问题一起看看怎么回事呀??
wsbighead 2009-12-02
  • 打赏
  • 举报
回复
哈哈,终于搞定了,是我之前装了个同步软件的驱动影响的.散分了.
ZTG328 2009-12-02
  • 打赏
  • 举报
回复
顶 留名
wsbighead 2009-12-02
  • 打赏
  • 举报
回复
从调试信息看代码已经运行到ProcessSetConfiguration()函数中,也没看到有什么异常. 但为什么BUS HOUND总是报"set config fail"呢??
wsbighead 2009-12-02
  • 打赏
  • 举报
回复
有没有解决了这个问题的兄弟啊?急啊
wuzukui 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 wsbighead 的回复:]
我把HIVE注册表去掉这个问题是没有了.但是还是不能识别为U盘,插上USB后, USB主机多半会连续发4个RESET,很奇怪. 如果不发那么多RESET的话就会正常走GET DISCRIPTOR SET ADDRESS等步骤,但会在SET CONFIG的时候失败.
[/Quote]
我也是这个问题
wsbighead 2009-12-02
  • 打赏
  • 举报
回复
还没解决.老是在SET CONFIG的时候失败, 而且在PC机的"设备"里出现"windows CE USB devices",这里面又有带感叹号的"Anchor USB EZ-Link cable". 照理说如果加载了MASS STORAGE的驱动,PC机应该认不出来这是个WINCE DEVICE吧?郁闷
wsbighead 2009-12-01
  • 打赏
  • 举报
回复
是OpenStore()函数产生的错误,无法打开DSK1.我也试过DSK0\DSK2等,都不行.
我的NAND FLASH有3个分区:BOOTLOADER, WINCE(Binfs),EXTPartition(Fat),是不是跟多个分区有关系?
博说医械研发 2009-12-01
  • 打赏
  • 举报
回复
copy到BSP里边编译会快一点。
STORE_Init: failed to open store DSK1:; error = 4319

查看一下4319对应的是什么错误
wsbighead 2009-12-01
  • 打赏
  • 举报
回复
PC端肯定不用装驱动的.弄好一定分享.
xuefeng_baggio 2009-12-01
  • 打赏
  • 举报
回复
我觉得是不是应该在pc下还有做个驱动呢??因为如果usb-serial,是需要在pc下装个驱动的??现在这块也不是很清楚了,楼主弄好了一定要分享下呀!!
wsbighead 2009-12-01
  • 打赏
  • 举报
回复
不用COPY,可以直接在PUBLIC下编译.
xuefeng_baggio 2009-12-01
  • 打赏
  • 举报
回复
关注中,也想做这个功能,你现在就是把pubilc下代码直接copy到platform下吗??可能不行吧?是不是很合文件系统有关呢?也就是说pc访问的是flash的那块空间呢??
wsbighead 2009-12-01
  • 打赏
  • 举报
回复
自己顶下.兄弟们碰到这种问题怎么解决的啊?
加载更多回复(28)

19,502

社区成员

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

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