您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: