COM 组件设计与应用(一)
2010-12-10 11:41
190 查看
在基于Berrydale的BSP包上,分别编译两个NK.bin,一个包含WINCE500\PLATFORM\BERRYDALE\SRC\DRIVERS\USBFN,而另一个则不包含。分别down到目标板上运行。检查usb host 以及slave口的功能。经试验发现:在两种NK下usb host均可以正常工作(usb storage);在有usbfn的NK下的usb slave口可以和pc的activesync正常通信并同步,而在没有usbfn的NK下的usb slave口不能和pc端的activesync通信,在pc端显示无法识别的usb设备。
通过以上试验可以证实usbfn下的程序其实就是usb slave的驱动程序。MS提供的usbfn的驱动程序在WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USBFN目录下:Class;Controller;Ufnclientlib。其中Class Contains the RNDIS, serial, and storage USB function client drivers, each in a separate directory(这些就是所谓的上层驱动程序)。如果 OS 选择要使用那一个 Profile 是通过下面的 Registry 决定:
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"
or
"DefaultClientDriver"="RNDIS"
or
"DefaultClientDriver"="Mass_Storage_Class"
or
"DefaultClientDriver"=- ; erase previous default
Controller 提供了usbfn的MDD和PDD的程序,而PDD目录下只提供了NET2280的。
Usbfn的驱动程序开发,只要根据实际的硬件来实现usbfn的pdd层即可。例如上述berrydale bsp包中实现的usbfn(WINCE500\PLATFORM\BERRYDALE\PUBLIC\CSP\ARM\INTEL\PXA27X\USBFN)就是一个pdd层的驱动程序。而最底层的对硬件的操作是在WINCE500\PLATFORM\BERRYDALE\SRC\DRIVERS\USBFN目录下的ms2_usbfn.cpp文件中实现的:Init、Start、Stop、IsCableAttached。
本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/58089
通过以上试验可以证实usbfn下的程序其实就是usb slave的驱动程序。MS提供的usbfn的驱动程序在WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USBFN目录下:Class;Controller;Ufnclientlib。其中Class Contains the RNDIS, serial, and storage USB function client drivers, each in a separate directory(这些就是所谓的上层驱动程序)。如果 OS 选择要使用那一个 Profile 是通过下面的 Registry 决定:
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"
or
"DefaultClientDriver"="RNDIS"
or
"DefaultClientDriver"="Mass_Storage_Class"
or
"DefaultClientDriver"=- ; erase previous default
Controller 提供了usbfn的MDD和PDD的程序,而PDD目录下只提供了NET2280的。
Usbfn的驱动程序开发,只要根据实际的硬件来实现usbfn的pdd层即可。例如上述berrydale bsp包中实现的usbfn(WINCE500\PLATFORM\BERRYDALE\PUBLIC\CSP\ARM\INTEL\PXA27X\USBFN)就是一个pdd层的驱动程序。而最底层的对硬件的操作是在WINCE500\PLATFORM\BERRYDALE\SRC\DRIVERS\USBFN目录下的ms2_usbfn.cpp文件中实现的:Init、Start、Stop、IsCableAttached。
本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/58089
相关文章推荐
- COM 组件设计与应用(十一)
- COM 组件设计与应用(十七)
- 【转载】COM 组件设计与应用(十四)——事件和通知(vc.net)
- COM 组件设计与应用(五)
- COM 组件设计与应用(八)——实现多接口
- COM 组件设计与应用(五) 用 ATL 写第一个组件
- COM 组件设计与应用(六)
- COM 组件设计与应用(二)――GUID 和 接口
- COM 组件设计与应用(十五)——连接点(vc6.0)
- COM 组件设计与应用(一)
- COM 组件设计与应用(一)
- COM 组件设计与应用(十七)——持续性
- COM 组件设计与应用(四)——简单调用组件
- COM 组件设计与应用(六)
- COM 组件设计与应用(九)——IDispatch 接口 for VC6.0
- 【转载】COM 组件设计与应用(三)——数据类型
- COM 组件设计与应用(六) 用 ATL 写第一个组件
- COM 组件设计与应用1 - 起源及复合文件
- COM 组件设计与应用(七)
- COM 组件设计与应用(三)――数据类型