请问WINCE定制的终端系统如何识别U盘,要加入哪些组件才能识别U盘?

时间:2022-07-08 05:52:45
   我做了下面五步的工作:
 1、添加Catalog->Core OS->Windows CE devices->Core OS Services->USB Host Support->USB Storage Class Driver 
2、添加Catalog->Core OS->Windows CE devices->Core OS Services->File Systems and Data Store->Storage Manager->FAT File System 
3、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Function->USB Function Bus Drivers->Netchip NET2280 USB Function 
4、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Function->USB Function Clients->Mass Storage 
5、添加Catalog->Core OS->Windows CE devices->Device Drivers->USB Host->USB Host Controllers->OHCI 

出现的现象是在wince系统开发板上插入u盘,没有u盘的图标显示;将开发板和电脑相连,可以测到插在开发板上的u盘,但是u盘里的内容显示是空的,并且不稳定,老掉。
      后来看了别人的贴子之后把u盘格式话成FAT的之后。开发板上仍然没有u盘的图标。连接电脑时可以识别并显示u盘里的内容。
       请问大叫有没有遇到过这样的问题,应该怎么解决。

9 个解决方案

#1


帮顶下,
MARK,学习下、

#2


注册表也应该相应改一下
!

#3


mark

#4


howtodiy,注册表要改什么内容呢?

#5


"DefaultClientDriver"="Mass_Storage_Class"--你现在需要改变的
"DefaultClientDriver"="Serial_Class"--应该是你现在定义的

#6


如果你找不到的话,就用工具去搜索关键字就可以了

#7


注册表里,有好几个"DefaultClientDriver"的定义。我只改了"DefaultClientDriver"="Serial_Class"这一个?没有起作用,是不是还有别的也要改啊?

#8


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盘。

#9


我现在的问题不是连接到PC上识别不到U盘,是在开发板上插上u盘,wince系统上没有显示出u盘的图标


出现的现象是在wince系统开发板上插入u盘,没有u盘的图标显示;将开发板和电脑相连,可以测到插在开发板上的u盘,但是u盘里的内容显示是空的,并且不稳定,老掉。 
      后来看了别人的贴子之后把u盘格式话成FAT的之后。开发板上仍然没有u盘的图标。连接电脑时可以识别并显示u盘里的内容。 

#1


帮顶下,
MARK,学习下、

#2


注册表也应该相应改一下
!

#3


mark

#4


howtodiy,注册表要改什么内容呢?

#5


"DefaultClientDriver"="Mass_Storage_Class"--你现在需要改变的
"DefaultClientDriver"="Serial_Class"--应该是你现在定义的

#6


如果你找不到的话,就用工具去搜索关键字就可以了

#7


注册表里,有好几个"DefaultClientDriver"的定义。我只改了"DefaultClientDriver"="Serial_Class"这一个?没有起作用,是不是还有别的也要改啊?

#8


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盘。

#9


我现在的问题不是连接到PC上识别不到U盘,是在开发板上插上u盘,wince系统上没有显示出u盘的图标


出现的现象是在wince系统开发板上插入u盘,没有u盘的图标显示;将开发板和电脑相连,可以测到插在开发板上的u盘,但是u盘里的内容显示是空的,并且不稳定,老掉。 
      后来看了别人的贴子之后把u盘格式话成FAT的之后。开发板上仍然没有u盘的图标。连接电脑时可以识别并显示u盘里的内容。