作 者:ARM-WinCE
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 驱动的注册表配置
在 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 盘。