事情是这样,我被突然调来解决wince的驱动问题。
看了许多书,有许多问题搞不明白。
我用的平台是pb4.2 ,下面是我脑中的浆糊:
1、wince(D:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\USB) 自带的驱动是什么情况下可以用的?然后我假如的一块sl811芯片,和自带的驱动有什么关系?
2、我知道他是分层的,比如我要实现一个鼠标驱动要直接在这里实现可以吗?要修改哪些文件(实现那些接口我知道)
3、假如我实现了第二步我接下来做的事情是,用pb的命令行定位到(D:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\USB)下面,然后用build -c直接编译,对吧?紧接着做什么?
4、在第3步的基础上我接下来做的事情是把Catalog下的Core OS->Display based devices -> Core OS Services->USB host Support->USB HID Class Driver->USB hid mouse Only加到pb项目中,这就是我修改影响到的代码吗?
5.接下来我修改了reg和bib文件:
::::::::::::::::::
::::project.reg:::
::::::::::::::::::
;这些原来的人已经把他注释起来了,我把这些的注释解开了
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\UHCI]
"Prefix"="HCD"
"Dll"="uhci.dll"
"Order"=dword:1
"Index"=dword:1
"Class"=dword:0C
"SubClass"=dword:03
"ProgIF"=dword:00
"IoBase"=dword:BF800000
"SysIntr"=dword:23
;usb mouse
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\3\Hid_Class]
"DLL"="USBHID.DLL"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Hid_Class]
"DLL"="USBHID.DLL"
"Prefix"="HID"
[HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\Default\Default\1_2\Mouse]
"DLL"="MOUHID.DLL"
::::::::::::::::::
::::project.bib:::
::::::::::::::::::
;接着我把如下的注释也去掉了
;uhci.dll $(_FLATRELEASEDIR)\uhci.dll NK SH
;usbd.dll $(_FLATRELEASEDIR)\usbd.dll NK SH
;usbhid.dll $(_FLATRELEASEDIR)\usbhid.dll NK SH
;mouhid.dll $(_FLATRELEASEDIR)\mouhid.dll
这些步骤有没有问题?
下面我就是整个rebuild platform-> make image 烧程序然后启动程序在串口下我看到了如下的错误:
Data Abort: Thread=83c6d504 Proc=819a6d30 'device.exe'
每一步我都有怀疑,走到最后一部~错误我实在无法定位了,请各位帮忙~哪怕是指出我的一点点的细节操作错误,多谢!
做一个鼠标驱动,确切的说是加一个别人原来已经做好的鼠标驱动~前人就留下来一个和D:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\USB相同的目录
经过人提醒好像缺少sysgen,但好像不太会用,同时请教
usb鼠标驱动PB不是已经有的吗??
直接添加就可以啦??
对,USB鼠标驱动不用做,直接增加组件就可以。当然前提是你的主板那边的USB HOST驱动已经做好,我估计你的问题出在这里。
引用: 引用 6 楼 gooogleman 的回复:
哎,还要搞个SL811,搞不明白你为什么这么做。
这个我也不太明白~我只知道原来的那个USB是用来做文件传送的,是从口,现在sl811接的usb是主的
现在的情况又有了些变化~原来的中断地址有问题,我把他改过来了,鼠标插入有了中断,但是原来的USB口又不能用了~冲突了?哪里?
o y~
鼠标终于能动了,迈出一大步,但还有如下问题,鼠标只能在系统启动以后使用,启动前插入检测不到,拔下鼠标再插入就不认识了~一定是中断还有问题~继续解决
我也开发此类驱动。好了。现在有个问题,在CPU不忙时,我的USB主机所操作的键盘鼠标工作挺正常,一旦CPU忙时,驱动内采集线程就开始变慢。通过USB分析仪跟踪,CPU不忙时,线程能保证几毫秒采集一次,CPU忙时,就变成了几十毫秒。我把线程优先级提高到0,,还是不行。理论上CPU时间片不是根据优先级来分配的吗,为什么我提高到了最高级,CPU时间片还是抢不其他线程,难道还有其他设置,实在不解!!!!!!!!!!
引用: 引用 10 楼 xooxoo 的回复:
o y~
鼠标终于能动了,迈出一大步,但还有如下问题,鼠标只能在系统启动以后使用,启动前插入检测不到,拔下鼠标再插入就不认识了~一定是中断还有问题~继续解决
看看下边的帖子,前边有人讨论过
[url=http://topic.eeworld.net/u/20090916/10/6009396f-54a7-427e-90c0-f2723e58cf4f.html?seed=415955654&r=59851966#r_59851966][/url]
引用: 引用 10 楼 xooxoo 的回复:
o y~
鼠标终于能动了,迈出一大步,但还有如下问题,鼠标只能在系统启动以后使用,启动前插入检测不到,拔下鼠标再插入就不认识了~一定是中断还有问题~继续解决
这个你自己要做驱动检测了,wince都是这样的,u盘插入也是。要重新插拔一次系统才知道,这个和中断有关系吧!
同意16楼观点,我们这边做USB同步也是这样,一定要重新插才成,插着直接开机后面就没提示连接,如果谁能解决,一并说一下,关注中。。