Develop WinCE USB Driver using WinDriver

WinCE下的驱动程序是一个DLL,需要自己写USBDeviceAttach等函数,用WinDriver生成的代码使用WinDriver提供的dll库,使用统一函数(Win2k,xp,wince,linux等系统生成的代码外表看起来区别不大)包装了硬件接口函数,这样就屏蔽了底层,应用程序只需要对WinDriver提供的接口函数进行处理就可以了。驱动写好后,要通过Platform Builder烧入设备,设计修改注册表,还要用一个测试应用程序做测试。

1)WinDriver(DDKUSBVIEW)pc上得到设备的vid/pid比如USB鼠标信息如下:

           vendor id:04fc

Product id:0013

Manufacturer name:Sunplus Technology Co.,Ltd

记录id转化成十进制,1276,0019

WinDriver重新注册设备Generate inf选择自定义class后生成Embedded vc代码。

2)用Embedded VC将刚生成的项目文件打开,选择正确的BSP(如果菜单上没有自己的BSP,重装之)。然后可以修改程序(比如生成的项目是ibm_mouse,则测试程序主函数在ibm_mouse_diag.c,主要修改usb_diag_lib.c即可,再底层是windriver包装的型如WDU_XXXX函数)修改满足调试需要,等34做完才能编译。

3)pb打开,生成一个新的platform,将WinDriver/redist/里面对应设备CPUwindrvr6.dll拷贝到pb的当前release目录里(build菜单里有release目录的快捷方式)。修改注册表project.reg

仿造WinDriver/samples/wince_install/PROJECT_WD.REG加入

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/WinDriver]

   "Prefix"="WDR"

   "Dll"="windrvr6.dll"

   "Order"=dword:9

   "Index"=dword:1

[HKEY_LOCAL_MACHINE/Drivers/USB/LoadClients/1276_0019/Default/Default/WDR] :

   "Dll"="windrvr6.dll"

其中最后一个usb device name要和generate code时的名字保持一致,vid/uid为十进制

也可以再修改project.bibwindriver的库加入kernel,

可参考WinDriver/samples/wince_install/PROJECT_WD.bib,这里不改它

4)

编译pbplatform,编译的时候不要覆盖release目录,否则windrvr6.dll就没了。

编译成功后释放到release目录,再拷贝一份windrvr6.dllrelease目录调试用。

然后生成run-time image之后add device烧到设备里。

5)如果上述步骤没有问题,下面就要烧入测试程序。将刚才改好的evc的程序编译连接pb,使用ActiveSync或者manual server,这里使用后者,事先将三个文件(网上搜一下)cemgrc.exe,cetlstub.dll,tcpipc.dll拷贝到设备闪存里,evc里设置用manual server连接设备,编译工程,会提示运行cemgrc的格式,设备里按照格式运行,若在pb中调试会让选择cemgrcpc对应的路径,不要选它,cancel掉,在evcok,成功的花会把测试程序下载到设备根目录。

6)在设备里运行测试程序,如果未出现USB驱动初始化失败就成功了一半,监视pbdebug信息,将USB设备插入设备,正确情况设备将调用windrvr6.dll,这时候evc的程序就可以使用了,evc的程序不对,应该是前面修改的问题,应该不是装驱动的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值