各位英雄:
我的目标板已经固化了内核,但调试发现其中有一个驱动有问题,需要修改,但不想修改后重新编译内核并下载固化;能不能在PB中编译驱动后,把新的驱动dll文件直接替换目标机中的同名dll?如果可以,同名dll在何处?为什么我开机用同步器查看,没有发现有关驱动的dll?
可以............
不过很复杂,已经有牛人搞过驱动调试助手了。
http://www.cnblogs.com/we-hjb/archive/2008/10/19/1314562.html——这个牛人偶尔也会来eeworld的,
他的博客每篇都是精品哦。
——————这个驱动调试不方便是wince的重大缺陷。我现在也正为这件事情郁闷
不过号称最难的linux调试驱动却可以动态加载。微软咋就没有认识这点呢?
所有驱动的Dll都在目标机的windows文件夹下面,这些dll一般都是隐藏属性的,所以你要看见的话需要修改系统的显示属性,在菜单或者视图中能修改。
另外,能不直接替换,这个取决与之前的dll是否是只读属性,如果是只读属性的话是不允许替换的。如果不是只读属性,那你就走运了,可以直接替换。lz不妨试试!
一般的CE的文件系统是RAM的文件系统,替换掉是没有用的,下次开机就又是以前的文件了,
如果是ROM的文件,那是替换不掉的,一般情况下Image是做了保护的
在Mobile下面有办法单独升级一个驱动,那是用Package的方式,而且需要做ImageUpdate的支持
LZ如果只是调试的话可以把PB编译出来的驱动拷贝到Windows目录下面,替换掉原来的文件,然后实现Reset,注意这个Reset不能清SDRAM的Reset
这样系统重新起来后就会用你最新下载进去的驱动
这个topic值得思考,和推荐。
——不知道大家有没有好的手段。
wince的系统文件一般以binfs加载,在系统中能看但不能写。即便覆盖了,也仅仅是在sdram中的。不要嫌更新镜像麻烦。当你选择了M$,你就无法摆脱麻烦。
这个很难实现。就像hzdysymbol 说的,在RAM中替换是可以的,但是ColdBoot起来还是之前的。
在Rom上的很难改。
引用: 引用 6 楼 shuiyan 的回复:
wince的系统文件一般以binfs加载,在系统中能看但不能写。即便覆盖了,也仅仅是在sdram中的。不要嫌更新镜像麻烦。当你选择了M$,你就无法摆脱麻烦。
——————————————————————
这个很难实现。就像hzdysymbol 说的,在RAM中替换是可以的,但是ColdBoot起来还是之前的。
在Rom上的很难改。
看来那个驱动调试助手的方法是唯一的方法。
引用: 引用 3 楼 hzdysymbol 的回复:
一般的CE的文件系统是RAM的文件系统,替换掉是没有用的,下次开机就又是以前的文件了,
如果是ROM的文件,那是替换不掉的,一般情况下Image是做了保护的
在Mobile下面有办法单独升级一个驱动,那是用Package的方式,而且需要做ImageUpdate的支持
一直没有弄懂WM是怎么可以更新驱动,在Reset后还能保证\Windows\下程序不丢失的
感激各位英雄给小弟的指点先!
我的platform.reg文件是这样加载驱动的:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPB]
"Index"=dword:2
"Prefix"="GPB"
"Dll"="ms2y526c.dll"
"Order"=dword:2
系统启动成功后,我打开windows文件夹,然后替换用新编译的ms2y526c.dll替换原来的同名文件;不重启系统,直接再打开应用程序,应用程序中调用
CreateFile(_T("GPB2:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
打开驱动,然后调用驱动中的导出函数。
请问这样的操作过程,是不是应用程序在访问新的驱动程序(dll)呢?
引用: 引用 10 楼 daigua04 的回复:
感激各位英雄给小弟的指点先!
我的platform.reg文件是这样加载驱动的:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPB]
"Index"=dword:2
"Prefix"="GPB"
"Dll"="ms2y526c.dll"
"Order"=dword:2
系统启动成功后,我打开windows文件夹,然后替换用新编译的ms2y526c.dll替换原来的同名文件;不重启系统,直接再打开应用程序,应用程序中调用
CreateFile(_T("GPB2:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXIST…
你可以修改一下驱动的打印信息,看看是否真的更新了。我也好想这么做啊。
如果成功了通知一声啊哦
引用: 引用 10 楼 daigua04 的回复:
感激各位英雄给小弟的指点先!
我的platform.reg文件是这样加载驱动的:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPB]
"Index"=dword:2
"Prefix"="GPB"
"Dll"="ms2y526c.dll"
"Order"=dword:2
系统启动成功后,我打开windows文件夹,然后替换用新编译的ms2y526c.dll替换原来的同名文件;不重启系统,直接再打开应用程序,应用程序中调用
CreateFile(_T("GPB2:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXIST…
不是
看来wince驱动修改后,还需要重新编译内核并下载固化啊,太麻烦了!不知道还有没有更好调试驱动程序的方法?
引用: 引用 13 楼 daigua04 的回复:
看来wince驱动修改后,还需要重新编译内核并下载固化啊,太麻烦了!不知道还有没有更好调试驱动程序的方法?
如果只是调试的话,lz为什么不用kitl来动态加载调试呢?这样的话每次修改驱动之后只需要重新编译而不需要固化就可以调试驱动了。当你调试完成之后再将完整的驱动固化到device上去。
引用: 引用 14 楼 Ricky_hu 的回复:
引用 13 楼 daigua04 的回复:
看来wince驱动修改后,还需要重新编译内核并下载固化啊,太麻烦了!不知道还有没有更好调试驱动程序的方法?
如果只是调试的话,lz为什么不用kitl来动态加载调试呢?这样的话每次修改驱动之后只需要重新编译而不需要固化就可以调试驱动了。当你调试完成之后再将完整的驱动固化到device上去。
至少要下载到内存吧
我觉得使用应用程序控制加载是最好的方式,我现在正在积极准备
引用: 引用 15 楼 gooogleman 的回复:
引用 14 楼 Ricky_hu 的回复:
引用 13 楼 daigua04 的回复:
看来wince驱动修改后,还需要重新编译内核并下载固化啊,太麻烦了!不知道还有没有更好调试驱动程序的方法?
如果只是调试的话,lz为什么不用kitl来动态加载调试呢?这样的话每次修改驱动之后只需要重新编译而不需要固化就可以调试驱动了。当你调试完成之后再将完整的驱动固化到device上去。
至少要下载到内存吧
我觉得使用应用程序控制加载是最好的方式,…
通过activesync利用PB的kitl动态调试就不需要下载到内存。
狠期待gooogleman的应用程序控制加载方式哦!!加油!!
KITL动态调试内核,是不是首先要编译debug版本的内核,还需要在“platform settings”里选择“enable kitl”?网上有关ktil和cs8900网卡冲突,什么原因呢,怎么解决?我现在的10M网卡就是用的cs8900。
不需要编译debug版本的内核,需要在platform settings”里选择“enable kitl”。至于kitl跟网卡冲突的事情我不太清楚,到底冲不冲突lz试试不就知道了!?
引用: 引用 18 楼 Ricky_hu 的回复:
不需要编译debug版本的内核,需要在platform settings”里选择“enable kitl”。至于kitl跟网卡冲突的事情我不太清楚,到底冲不冲突lz试试不就知道了!?
通过activesync利用PB的kitl动态调试就不需要下载到内存。 ?
我的KITL是要先下载到内存的,Ricky_hu,你是怎么做的?因为下载到内存之后运行,就会有个wait for connect........
然后在PB的attache device菜单就可以执行了。Ricky_hu,老兄能写你的具体步骤吗?如果不用下载那真是好啊。
难道是我多此一举了?你的是什么平台?我的是2440的,我看文档都是要下载到内存,然后再用PB菜单控制执行的。