在谈WinCE的USB Mass Storage实现之前,首先要具备以下条件:
1. 开发板支持USBClient设备。
2. 开发板上至少有一种存储设备可以被用来映射为U盘。
现在的处理器一般都带有USB Client或者是USB OTG控制器,并且BSP中都有相应的驱动。对于存储设备来说,Nandflash或者SD卡都可以作为存储设备。所以都不是什么问题。
驱动一般wince系统只带的,我们只需要定制就可以了:
在Catalog中将下面两个组件加上即可:
1、Core OS Services-->USB Host Support-->USB Storage Class Driver
2、Core OS Services-->File Systems and Data Store-->Storage Magager-->FAT File System
3、然后,直接Sysgen.
下面的3步(也可以加上)
4、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Function->USB Function Bus Drivers->Netchip NET2280 USB Function
5、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Function->USB Function Clients->Mass Storage
6、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Host->USB Host Controllers->OHCI
遇到的一些问题总结:
1、在wince系统开发板上插入u盘,没有u盘的图标显示;将开发板和电脑相连,可以测到插在开发板上的u盘,但是u盘里的内容显示是空的,并且不稳定,老掉。
原因:u盘没有被格式化成FAT格式。
修改之后的结果:
开发板上仍然没有u盘的图标。连接电脑时可以识别并显示u盘里的内容。
2、系统老是不识别u盘
我用了很多u盘,都识别不了。系统不是不识别u盘,而是系统可识别的u盘比较少,一般能支持小容量的u盘。
具体来说测试中用了256M u盘可以识别,1G 4G都没能识别出来。
网上搜集的一些有用资料:
一、将设备在pc上识别为u盘
Mass Storage的实际应用就是U盘,目标板和PC通过USB相连,
PC可以把目标板识别为U盘,在很多产品上都很常用。
这里介绍一下在WinCE系统中U盘功能的实现。
在谈WinCE的USB Mass Storage实现之前,首先要具备以下条件:
1. 开发板支持USBClient设备。
2. 开发板上至少有一种存储设备可以被用来映射为U盘。
现在的处理器一般都带有USB Client或者是USB OTG控制器,
并且BSP中都有相应的驱动。对于存储设备来说,
Nandflash或者SD卡都可以作为存储设备。所以都不是什么问题。
下面介绍一下步骤:
1. 选择WinCE Mass Storage组件
在定制WinCE的时候,在Catalog Items View中选择”Device Drivers”
->”USB Function”->”USB Function Clients”->”Mass Storage”。
2. 更改USB Client驱动的注册表配置 (D:/WINCE600/PUBLIC/COMMON/OAK/FILES/common.reg)
在WinCE中,USB Client驱动的注册表配置如下:
[HKEY_LOCAL_MACHINE/Drivers/USB/FunctionDrivers]
“DefaultClientDriver”:设置默认的USB Client驱动,这里应该是Mass_Storage_Class
[HKEY_LOCAL_MACHINE/Drivers/USB/FunctionDrivers/Mass_Storage_Class]
“Dll”:USB Client的驱动
“DeviceName”:被映射为U盘的存储设备的设备名
“FriendlyName”:显示设备名
“idVendor”:Vendor ID,应该向USB组织申请
“idProduct”:Product ID,由厂商定义
“Manufacturer”:厂商名
“Product”:产品名
“bcdDevice”:设备的版本号
“InterfaceSubClass”:USB Host端通过该值来枚举设备,06h表示Mass Storage。
“InterfaceProtocol”:USB设备所支持的传输协议,50h表示bulk-only。
上面对注册表的配置进行了介绍,这里给各例子:
[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:048C
"Manufacturer"="Honeywell"
"idProduct"=dword:0001
"Product"="Honeywell Mass Storage"
"bcdDevice"=dword:0
3. 重新编译WinCE工程
由于添加了新的组件,需要重新编译WinCE工程。
编译完成后,下载并运行,将设备通过USB连接到PC上,PC就会将设备识别为U盘。