请大家帮我看看,是哪里的问题。
添加了相关的组件:
CORRE OS-->CEBASE-->Core OS Services-->USB Function Driver 和USB Storage Class Driver
Device Drivers-->USB Funciton-->USB Function Clients-->Mass Storage
注册表增加了如下
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0228
"Manufacturer"="TECH"
"idProduct"=dword:0228
"Product"="Wince"
"bcdDevice"=dword:0
"Removable"=dword:1
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Mass_Storage_Class" ;
通过以上的修改,
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化);
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”。
54 个解决方案
#1
可以这样做?弄出来要指点一下啊。以前有人在论坛提过。
#2
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
"ResetTimeout"=dword:4000 ; msec
"CommandBlockTimeout"=dword:4000
"CommandStatusTimeout"=dword:4000
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="UDFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
"MediaPollInterval"=dword:1250; msec
"ReadSectorTimeout"=dword:2000
"WriteSectorTimeout"=dword:2000
"ScsiCommandTimeout"=dword:5000
"UnitAttnRepeat"=dword:10
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:9
"DeviceName"="DSK1:" 这个里面的 DSK1 对应的是你的设备管理器里面加载的设备,要是 Flash 为 DSK1 的话,那么连到电脑上就是你的NandFlash,如果是 SD 卡加载为 DSK1 的话,那么连到你电脑上的就是 SD 卡了。
如果你这样配置还不正确,那么就是你BSP的 Function 驱动可能有问题了。 我用的是 S3C2440,Samsung 官方 BSP 就有问题。
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
"ResetTimeout"=dword:4000 ; msec
"CommandBlockTimeout"=dword:4000
"CommandStatusTimeout"=dword:4000
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="UDFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
"MediaPollInterval"=dword:1250; msec
"ReadSectorTimeout"=dword:2000
"WriteSectorTimeout"=dword:2000
"ScsiCommandTimeout"=dword:5000
"UnitAttnRepeat"=dword:10
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:9
"DeviceName"="DSK1:" 这个里面的 DSK1 对应的是你的设备管理器里面加载的设备,要是 Flash 为 DSK1 的话,那么连到电脑上就是你的NandFlash,如果是 SD 卡加载为 DSK1 的话,那么连到你电脑上的就是 SD 卡了。
如果你这样配置还不正确,那么就是你BSP的 Function 驱动可能有问题了。 我用的是 S3C2440,Samsung 官方 BSP 就有问题。
#3
gooogleman:但愿我能搞出来,因为我现在不能确认BSP的FLASH驱动部分及BSP中的注册表这个功能的设置都是正确的
xajhuang:多谢你出手呀,我测试看看,不过我的平台不是三星的
xajhuang:多谢你出手呀,我测试看看,不过我的平台不是三星的
#4
不要查 Flash 驱动了。要是 SD 卡能行 Flash 不行才能说明 Flash 驱动有问题,要是 SD 卡 和 Flash 都不行,就是 USB 驱动或者注册表配置问题。
#5
xajhuang:
我现在的情况就是这样:
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化);
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”,有时候插上SD卡后,“设备管理器”中的出现黄色感叹号后,
“USB Mass Storage Device”这一项都没有了。
我现在的情况就是这样:
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化);
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”,有时候插上SD卡后,“设备管理器”中的出现黄色感叹号后,
“USB Mass Storage Device”这一项都没有了。
#6
第一种情况我遇到过 但是我把 USB 驱动修改后就好了。 第二种没有碰到过。
#7
修改注册表如下所示,但上述问题还是同样存在。
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\8\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\8\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
#8
把USBFN这个两用的驱动看明白就可以实现了
#9
MARK!
#10
不要只看注册表,而是要看USB的驱动。
一般原厂bsp都不会实现USB MassStorage驱动的,必须自己实现或修改。这个不改好,你的注册表搞的再好都没用的。
一般原厂bsp都不会实现USB MassStorage驱动的,必须自己实现或修改。这个不改好,你的注册表搞的再好都没用的。
#11
mark
#12
#13
#14
#15
楼上怎么搞的,多几次刷喽就封ID了
#16
to LinHanLao,
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化)
------>目前微软并没有实现 选择性的 expose一个partition到PC上,从你的描述看来,你的nand flash 应该有两个partition,第一个是binfs,第二个是fatfs,当你expose DSK0的时候,pc并不认识第一个分区 binfs,所以会pc会提示你的盘没有格式化,当你格式化的时候,okay,这个时候应该可以访问了,但是,你的binfs也就格式发成了FATFS,所以你下次再启动的时候,这个时候,wince是booting补起来的。
解决方案:重新修改 usb mass storag driver。(这个不是很难)
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”。
----->这个是微软的没实现这个功能,就是类似与 reader card的功能。微软当前的driver默认的情况下是假设你的SD card已经插上去了,所以说当你没有插入SD卡就启动 usb mass storage功能的话,现在在 Init的时候会出错。也就是会在设备管理器上出现 惊叹号。
解决方案 重新修改 usb mass storag driver。(这个可能有点困难)
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化)
------>目前微软并没有实现 选择性的 expose一个partition到PC上,从你的描述看来,你的nand flash 应该有两个partition,第一个是binfs,第二个是fatfs,当你expose DSK0的时候,pc并不认识第一个分区 binfs,所以会pc会提示你的盘没有格式化,当你格式化的时候,okay,这个时候应该可以访问了,但是,你的binfs也就格式发成了FATFS,所以你下次再启动的时候,这个时候,wince是booting补起来的。
解决方案:重新修改 usb mass storag driver。(这个不是很难)
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”。
----->这个是微软的没实现这个功能,就是类似与 reader card的功能。微软当前的driver默认的情况下是假设你的SD card已经插上去了,所以说当你没有插入SD卡就启动 usb mass storage功能的话,现在在 Init的时候会出错。也就是会在设备管理器上出现 惊叹号。
解决方案 重新修改 usb mass storag driver。(这个可能有点困难)
#17
学习中
#18
To yangkunzhen:
谢谢你的回复,第二个问题,即使是在SD卡已经插上的情况下启动设备,也是一样的现象。
谢谢你的回复,第二个问题,即使是在SD卡已经插上的情况下启动设备,也是一样的现象。
#19
牛,学习了。
#20
好
#21
不懂,up
#22
不懂,up
#23
to LinHanLao,
可能是PNP线程和ufn线程竞争的结果,也就是你的SD卡 会不停的dismount/mount,
把PNP线程的优先级调高些,try一下。(要是还不行,麻烦把你的log信息发出来)
[HKEY_LOCAL_MACHINE\System\StorageManager]
"PNPThreadPrio256"=dword:63
可能是PNP线程和ufn线程竞争的结果,也就是你的SD卡 会不停的dismount/mount,
把PNP线程的优先级调高些,try一下。(要是还不行,麻烦把你的log信息发出来)
[HKEY_LOCAL_MACHINE\System\StorageManager]
"PNPThreadPrio256"=dword:63
#24
请问以下:
如果想要把 WINCE5.0设备在PC上识别成U盘,
应该怎么处理呢?
WINCE5.0后WINCE6.0在添加这个功能的时候有什么区别?
有那些是需要自己修改的?
#25
学习。。。顶。。。
#26
还在学习,顶一下
#27
收藏了!mark一下!
#28
学习,收藏了
#29
学习,收藏了
#30
MARK
#31
学习了...
#32
顶顶顶
#33
汗。。。前两天要搞这东西,没搞定。。顶
#34
#35
老帖顶
USB MassStorage的驱动不是usbmsfn.dll吗
#36
是这样的,如果要开发usb massstorage还蛮麻烦的,不过关注中!帮楼主顶下!
不过yangkunzhen的方法似乎是可行的,有空试下!
#37
学习了....................
#38
牛人,学习了
#39
我最近也在研究这个方面的内容。你的库估计有问题。我将我的库给你一份吧。
#40
过来学习下
#41
6楼道兄弟,第一种情况是要改USB驱动哪里,可否指点下?
#42
#43
正是我要弄的 但是好像没看懂,先收藏了
#44
#45
我在Mini2440上实现了这个功能,但我需要遇到另一个问题:
我的程序中会读取SD卡上的文件,但连接上电脑后,“Storage Card”就不存在,我需要检测到已连接上电脑而停止读取文件,当从电脑上卸载后能自动重新挂接上SD卡。请问各位大大有什么办法没有?
注册表如下:
REGEDIT4
[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"=dword:534D
"Manufacturer"="Nikersoft Group"
"idProduct"=dword:2011
"Product"="SM20200 USB Disk"
"bcdDevice"=dword:0
我的程序中会读取SD卡上的文件,但连接上电脑后,“Storage Card”就不存在,我需要检测到已连接上电脑而停止读取文件,当从电脑上卸载后能自动重新挂接上SD卡。请问各位大大有什么办法没有?
注册表如下:
REGEDIT4
[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"=dword:534D
"Manufacturer"="Nikersoft Group"
"idProduct"=dword:2011
"Product"="SM20200 USB Disk"
"bcdDevice"=dword:0
#46
mark
#47
试试修改下面的配置,在BSP的根目录里的BAT文件
@REM If you want to exclude USB Function driver in BSP. Set this variable
set BSP_NOUSBFN=
@REM This select default function driver
@REM set BSP_USBFNCLASS=SERIAL
set BSP_USBFNCLASS=MASS_STORAGE
@REM If you want to exclude USB Function driver in BSP. Set this variable
set BSP_NOUSBFN=
@REM This select default function driver
@REM set BSP_USBFNCLASS=SERIAL
set BSP_USBFNCLASS=MASS_STORAGE
#48
LZ解决了么?
#49
mark
#50
学习,标记。
#1
可以这样做?弄出来要指点一下啊。以前有人在论坛提过。
#2
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
"ResetTimeout"=dword:4000 ; msec
"CommandBlockTimeout"=dword:4000
"CommandStatusTimeout"=dword:4000
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="UDFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
"MediaPollInterval"=dword:1250; msec
"ReadSectorTimeout"=dword:2000
"WriteSectorTimeout"=dword:2000
"ScsiCommandTimeout"=dword:5000
"UnitAttnRepeat"=dword:10
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:9
"DeviceName"="DSK1:" 这个里面的 DSK1 对应的是你的设备管理器里面加载的设备,要是 Flash 为 DSK1 的话,那么连到电脑上就是你的NandFlash,如果是 SD 卡加载为 DSK1 的话,那么连到你电脑上的就是 SD 卡了。
如果你这样配置还不正确,那么就是你BSP的 Function 驱动可能有问题了。 我用的是 S3C2440,Samsung 官方 BSP 就有问题。
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
"ResetTimeout"=dword:4000 ; msec
"CommandBlockTimeout"=dword:4000
"CommandStatusTimeout"=dword:4000
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="UDFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"Folder"="USB Disk"
"IOCTL"=dword:4
"MediaPollInterval"=dword:1250; msec
"ReadSectorTimeout"=dword:2000
"WriteSectorTimeout"=dword:2000
"ScsiCommandTimeout"=dword:5000
"UnitAttnRepeat"=dword:10
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:0547
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
"idProduct"=dword:2720
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:9
"DeviceName"="DSK1:" 这个里面的 DSK1 对应的是你的设备管理器里面加载的设备,要是 Flash 为 DSK1 的话,那么连到电脑上就是你的NandFlash,如果是 SD 卡加载为 DSK1 的话,那么连到你电脑上的就是 SD 卡了。
如果你这样配置还不正确,那么就是你BSP的 Function 驱动可能有问题了。 我用的是 S3C2440,Samsung 官方 BSP 就有问题。
#3
gooogleman:但愿我能搞出来,因为我现在不能确认BSP的FLASH驱动部分及BSP中的注册表这个功能的设置都是正确的
xajhuang:多谢你出手呀,我测试看看,不过我的平台不是三星的
xajhuang:多谢你出手呀,我测试看看,不过我的平台不是三星的
#4
不要查 Flash 驱动了。要是 SD 卡能行 Flash 不行才能说明 Flash 驱动有问题,要是 SD 卡 和 Flash 都不行,就是 USB 驱动或者注册表配置问题。
#5
xajhuang:
我现在的情况就是这样:
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化);
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”,有时候插上SD卡后,“设备管理器”中的出现黄色感叹号后,
“USB Mass Storage Device”这一项都没有了。
我现在的情况就是这样:
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化);
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”,有时候插上SD卡后,“设备管理器”中的出现黄色感叹号后,
“USB Mass Storage Device”这一项都没有了。
#6
第一种情况我遇到过 但是我把 USB 驱动修改后就好了。 第二种没有碰到过。
#7
修改注册表如下所示,但上述问题还是同样存在。
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\8\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:0405
"Manufacturer"="Generic Manufacturer (LifeLink)"
"idProduct"=dword:AAAA
"Product"="Generic Mass Storage (USB Smart Card)"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
;"DefaultClientDriver"="Serial_Class"
"DefaultClientDriver"="Mass_Storage_Class" ;Mass Storage
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\8\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class]
"DLL"="USBMSC.DLL"
"Prefix"="DSK"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\2]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Mass_Storage_Class\6]
"DLL"="USBDISK6.DLL"
"Prefix"="DSK"
"Folder"="USB Disk"
"MediaPollInterval"=dword:432 ; Media poll interval (1250 ms)
"ReadSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"WriteSectorTimeout"=dword:2710 ; Read sector timeout (10 s)
"ScsiCommandTimeout"=dword:1388 ; Command timeout (5 s)
"UnitAttnRepeat"=dword:A ; TEST UNIT READY repeat (reduce to 1 for large USB disk keys)
"IOCTL"=dword:4
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
#8
把USBFN这个两用的驱动看明白就可以实现了
#9
MARK!
#10
不要只看注册表,而是要看USB的驱动。
一般原厂bsp都不会实现USB MassStorage驱动的,必须自己实现或修改。这个不改好,你的注册表搞的再好都没用的。
一般原厂bsp都不会实现USB MassStorage驱动的,必须自己实现或修改。这个不改好,你的注册表搞的再好都没用的。
#11
mark
#12
#13
#14
#15
楼上怎么搞的,多几次刷喽就封ID了
#16
to LinHanLao,
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化)
------>目前微软并没有实现 选择性的 expose一个partition到PC上,从你的描述看来,你的nand flash 应该有两个partition,第一个是binfs,第二个是fatfs,当你expose DSK0的时候,pc并不认识第一个分区 binfs,所以会pc会提示你的盘没有格式化,当你格式化的时候,okay,这个时候应该可以访问了,但是,你的binfs也就格式发成了FATFS,所以你下次再启动的时候,这个时候,wince是booting补起来的。
解决方案:重新修改 usb mass storag driver。(这个不是很难)
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”。
----->这个是微软的没实现这个功能,就是类似与 reader card的功能。微软当前的driver默认的情况下是假设你的SD card已经插上去了,所以说当你没有插入SD卡就启动 usb mass storage功能的话,现在在 Init的时候会出错。也就是会在设备管理器上出现 惊叹号。
解决方案 重新修改 usb mass storag driver。(这个可能有点困难)
1 把板载的空闲NAND FLASH当成U盘:DeviceName改为“DSK0:”,连接到PC时,在PC机的“我的电脑”
中会出现“可移动磁盘”,但无法访问它(无法格式化)
------>目前微软并没有实现 选择性的 expose一个partition到PC上,从你的描述看来,你的nand flash 应该有两个partition,第一个是binfs,第二个是fatfs,当你expose DSK0的时候,pc并不认识第一个分区 binfs,所以会pc会提示你的盘没有格式化,当你格式化的时候,okay,这个时候应该可以访问了,但是,你的binfs也就格式发成了FATFS,所以你下次再启动的时候,这个时候,wince是booting补起来的。
解决方案:重新修改 usb mass storag driver。(这个不是很难)
2 把插入设备的SD卡当成U盘:DeviceName改为“DSK1:”,当把设备连接到PC(这时候没有插入SD卡),
在PC的“设备管理器”中可以看到“USB Mass Storage Device”,当在设备上插入SD卡时,
“设备管理器”中的“USB Mass Storage Device”会出现一个黄色的感叹号,“我的电脑”
中也不会出现“可移动磁盘”。
----->这个是微软的没实现这个功能,就是类似与 reader card的功能。微软当前的driver默认的情况下是假设你的SD card已经插上去了,所以说当你没有插入SD卡就启动 usb mass storage功能的话,现在在 Init的时候会出错。也就是会在设备管理器上出现 惊叹号。
解决方案 重新修改 usb mass storag driver。(这个可能有点困难)
#17
学习中
#18
To yangkunzhen:
谢谢你的回复,第二个问题,即使是在SD卡已经插上的情况下启动设备,也是一样的现象。
谢谢你的回复,第二个问题,即使是在SD卡已经插上的情况下启动设备,也是一样的现象。
#19
牛,学习了。
#20
好
#21
不懂,up
#22
不懂,up
#23
to LinHanLao,
可能是PNP线程和ufn线程竞争的结果,也就是你的SD卡 会不停的dismount/mount,
把PNP线程的优先级调高些,try一下。(要是还不行,麻烦把你的log信息发出来)
[HKEY_LOCAL_MACHINE\System\StorageManager]
"PNPThreadPrio256"=dword:63
可能是PNP线程和ufn线程竞争的结果,也就是你的SD卡 会不停的dismount/mount,
把PNP线程的优先级调高些,try一下。(要是还不行,麻烦把你的log信息发出来)
[HKEY_LOCAL_MACHINE\System\StorageManager]
"PNPThreadPrio256"=dword:63
#24
请问以下:
如果想要把 WINCE5.0设备在PC上识别成U盘,
应该怎么处理呢?
WINCE5.0后WINCE6.0在添加这个功能的时候有什么区别?
有那些是需要自己修改的?
#25
学习。。。顶。。。
#26
还在学习,顶一下
#27
收藏了!mark一下!
#28
学习,收藏了
#29
学习,收藏了
#30
MARK
#31
学习了...
#32
顶顶顶
#33
汗。。。前两天要搞这东西,没搞定。。顶
#34
#35
老帖顶
USB MassStorage的驱动不是usbmsfn.dll吗
#36
是这样的,如果要开发usb massstorage还蛮麻烦的,不过关注中!帮楼主顶下!
不过yangkunzhen的方法似乎是可行的,有空试下!
#37
学习了....................
#38
牛人,学习了
#39
我最近也在研究这个方面的内容。你的库估计有问题。我将我的库给你一份吧。
#40
过来学习下
#41
6楼道兄弟,第一种情况是要改USB驱动哪里,可否指点下?
#42
#43
正是我要弄的 但是好像没看懂,先收藏了
#44
#45
我在Mini2440上实现了这个功能,但我需要遇到另一个问题:
我的程序中会读取SD卡上的文件,但连接上电脑后,“Storage Card”就不存在,我需要检测到已连接上电脑而停止读取文件,当从电脑上卸载后能自动重新挂接上SD卡。请问各位大大有什么办法没有?
注册表如下:
REGEDIT4
[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"=dword:534D
"Manufacturer"="Nikersoft Group"
"idProduct"=dword:2011
"Product"="SM20200 USB Disk"
"bcdDevice"=dword:0
我的程序中会读取SD卡上的文件,但连接上电脑后,“Storage Card”就不存在,我需要检测到已连接上电脑而停止读取文件,当从电脑上卸载后能自动重新挂接上SD卡。请问各位大大有什么办法没有?
注册表如下:
REGEDIT4
[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"=dword:534D
"Manufacturer"="Nikersoft Group"
"idProduct"=dword:2011
"Product"="SM20200 USB Disk"
"bcdDevice"=dword:0
#46
mark
#47
试试修改下面的配置,在BSP的根目录里的BAT文件
@REM If you want to exclude USB Function driver in BSP. Set this variable
set BSP_NOUSBFN=
@REM This select default function driver
@REM set BSP_USBFNCLASS=SERIAL
set BSP_USBFNCLASS=MASS_STORAGE
@REM If you want to exclude USB Function driver in BSP. Set this variable
set BSP_NOUSBFN=
@REM This select default function driver
@REM set BSP_USBFNCLASS=SERIAL
set BSP_USBFNCLASS=MASS_STORAGE
#48
LZ解决了么?
#49
mark
#50
学习,标记。