14571|47

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince设备被识别为U盘问题 [复制链接]

大家好。
我的开发平台是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也是刚开始接触,希望大家能大力支持。非常感谢。








最新回复

对.  详情 回复 发表于 2009-12-3 14:44
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己顶一下.
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
看一下你的.bat文件设置,是否设置成USB的驱动为wince usb device而非MASS STORAGE,
PC没有把它识别成MASS STORAGE是由于描述符不是MASS STORAGE的。也就是MDD层没有调用MASS STORAGE的代码。
或者是你的USB代码将其设置成wince usb device了?
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢Veabol.
看哪个地方的.bat文件呢?我的理解是把注册表改成"DefaultClientDriver"="Mass_Storage_Class"就应该调用MASS STORAGE的代码 。我感觉usbmsfn.dll压根就没有运行起来,usbmsfn.dll是不是MDD层和PDD层都包含了?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
BSP目录下的.bat文件设置了一些变量,有可能会对你的驱动有些影响,(我有在.bat文件中加变量来控制我的代码)。
usbmsfn.dll应该是和PDD层没什么关系,系统会先获取"DefaultClientDriver"来决定是否加载usbmsfn.dll,启动WINCE后你看下这个值,虽然你设置了"DefaultClientDriver"="Mass_Storage_Class",但是是否其它地方又改了它,所以你在WINCE下看到的才是最终的。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 
启动WINCE后我看了DefaultClientDriver的确是Mass_Storage_Class,而且在Windows目录下也有usbmsfn.dll,但是PC上还是显示"无法识别的USB设备".
   usbmsfn.dll和sc2410_usb_ser.dll是不是有关系呢?我看每次插入USB时,sc2410_usb_ser.dll里的代码都会被调用(调试信息显示:
++SC2400_USB_Init
HW_USBClocks::IDLE
[DMA3 is Stopped]
……
   但是usbmsfn.dll中的信息始终打不出来。我有个疑问:usbmsfn.dll和PDD层没关系的话,它是怎么和具体的底层硬件关联上的呢?谢谢。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
usbmsfn.dll是MDD层调用的,而MDD层又和PDD层交互,所以如果不把usbmsfn.dll归为MDD则和PDD是间接的关系。

看下你的sc2410_usb_ser.dll代码吧,看名字就像是个serial的驱动,也许并不是标准的PDD代码,即不能随意更改serial和mass storage的模式。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
我看了一下sc2410_usb_ser.dll代码, 的确象是serial的驱动.
实现MASS STORAGE的PDD层代码是不是在SMDK2410\DRIVERS\USB\FUCTION目录下?这里面主要的文件就只有sc2410_usb_hw.c和sc2410_usb_ser.c,都不象是实现MASS STORAGE的,难道是我的BSP包里缺少文件?
但是我看其他的BSP包,比如2440的,在SMDK2440\DRIVERS\USB\FUCTION目录下也是只有sc2440_usb_hw.c和sc2440_usb_ser.c这两个文件嘛.
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

9
 
刚才看了下QQ2440的BSP,USB部分的确像是serial的,连访问的函数都是COM_Init之类的。
如果想实现mass storage之类的功能要具有UfnPdd_Init等函数。
不知道是不是需要自己重新写代码,有人做过吗?
我的BSP是自带这些代码的。
你可以看下\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USBFN\CONTROLLER\NET2280中的代码,类似于这些内容。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
非常感谢,我先看下代码,不清楚再来请教.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
我有点迷糊了,在c:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\SAMSUNG\S3C2410X\USBFUNCTION这个目录下有sc2410pdd.cpp,这里面就有Vealbol提到的UFN_Init等函数了.可是这个目录下的东西都是安装PB的时候就自带的,和我的BSP包并没有关系啊.这个目录对MASS STORAGE起不起作用呢?
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 wsbighead 的回复:
我有点迷糊了,在c:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\SAMSUNG\S3C2410X\USBFUNCTION这个目录下有sc2410pdd.cpp,这里面就有Vealbol提到的UFN_Init等函数了.可是这个目录下的东西都是安装PB的时候就自带的,和我的BSP包并没有关系啊.这个目录对MASS STORAGE起不起作用呢?

当然不起作用了,那只是一个sample
先了解一下usb的结构吧
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 10 楼 wsbighead 的回复:
我有点迷糊了,在c:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\SAMSUNG\S3C2410X\USBFUNCTION这个目录下有sc2410pdd.cpp,这里面就有Vealbol提到的UFN_Init等函数了.可是这个目录下的东西都是安装PB的时候就自带的,和我的BSP包并没有关系啊.这个目录对MASS STORAGE起不起作用呢?


那你复制过来到你的BSP下边,再针对你的板子做些修改应该就可以了
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

14
 
谢谢veabol的提示.现在我的usbmsfn.dll终于跑起来了.但是调试信息里却出现:
STORE_Init: failed to open store DSK1:; error = 4319
…… ……
还是无法识别为U盘。和FLASH DRIVER有关的注册表项是:
HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDrv]
    "Dll"="FLASHDRV.dll"
    "Prefix"="DSK"
    "Index" =dword:1        
    "Order"=dword:0   
    "Profile"="FlashDrv"
    "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
    "MountFlags"=dword:10
    "BootPhase"=dword:0
感觉象是注册表项有问题,或者和FLASH驱动有关。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

15
 
自己顶下.兄弟们碰到这种问题怎么解决的啊?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

16
 
关注中,也想做这个功能,你现在就是把pubilc下代码直接copy到platform下吗??可能不行吧?是不是很合文件系统有关呢?也就是说pc访问的是flash的那块空间呢??
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
不用COPY,可以直接在PUBLIC下编译.
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

18
 
我觉得是不是应该在pc下还有做个驱动呢??因为如果usb-serial,是需要在pc下装个驱动的??现在这块也不是很清楚了,楼主弄好了一定要分享下呀!!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
PC端肯定不用装驱动的.弄好一定分享.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

20
 
copy到BSP里边编译会快一点。
STORE_Init: failed to open store DSK1:; error = 4319

查看一下4319对应的是什么错误
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表