WINCE驱动的动态加载

armeasy 2010-05-27 10:58:41
请问,WINCE驱动的动态加载,具体怎么做?我按照网上的驱动调试助手,
一步一步来,建注册表文件a.reg,编译流驱动文件b.dll,将a.reg和
b.dll拷到nand-flash目录,a.reg里面的路径为\\nand-flash\\b.dll。
本身注册表里面是已经有驱动b.dll的。想通过驱动调试助手实现动态加载
b.dll,这样就不用再反复的烧NK了。
但是我发现,通过卸载系统本身已经加载好的b.dll后,再导入a.reg,
接着导入b.dll,再加载驱动,发现加载后驱动是能跑了,里面的打印
信息确实能变,但是有些功能根本不能实现。如中断等。重make一下,
烧NK,中断又能产生。用驱动调试助手为什么就不能呢?
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
armeasy 2010-05-28
  • 打赏
  • 举报
回复
会有这个问题? 一定出现吗?

是的,现在我也在怀疑是有些没有释放掉,正查找原因。
jerrytung 2010-05-28
  • 打赏
  • 举报
回复
通过卸载系统本身已经加载好的b.dll后,再导入a.reg,
接着导入b.dll,再加载驱动,发现加载后驱动是能跑了,里面的打印
信息确实能变,但是有些功能根本不能实现 ???

会有这个问题? 一定出现吗?
IT铁哥 2010-05-28
  • 打赏
  • 举报
回复
在驱动卸载驱动时加入:

InterruptDone(m_dwSysintr_EINT12);
InterruptDisable(m_dwSysintr_EINT12); // EINT12
//release interrupt source
KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR,&m_dwSysintr_EINT12,sizeof(UINT32),NULL,0,NULL);

set GPIO as Input.

以上代码加在Deinit()里面。
sunrain_hjb 2010-05-28
  • 打赏
  • 举报
回复
http://www.cnblogs.com/we-hjb/archive/2009/05/26/1490461.html

看看这里吧,希望能有所启发。
sunrain_hjb 2010-05-28
  • 打赏
  • 举报
回复
可能是驱动在卸载的时候没有正确释放中断导致了重新加载驱动后中断无法正常使用。
jerrytung 2010-05-28
  • 打赏
  • 举报
回复
我觉得你是应该找找释放的问题,至少我用你那方法,中断都是正常的

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧