天嵌 ARM开发社区

 找回密码
 注册
查看: 2097|回复: 3

WinCE 6.0的中断处理问题

[复制链接]
ghoulich 发表于 2012-3-6 21:17:08 | 显示全部楼层 |阅读模式
本帖最后由 ghoulich 于 2012-3-7 09:49 编辑



我想在IST中使用函数指针来进行中断业务的处理,这样驱动的外部应用程序就可以通过这个函数指针的相应的Set函数在不同的情况下指定不同的处理函数,但是我这样做貌似不可以呢,在我Set过后,中断使用的仍然是我在驱动程序内提供的默认处理函数。。。

我把我的程序贴上来了,是根据TQ2440的EINTDriver.cpp修改的

EINTDriver.cpp是驱动源文件
在这个文件中,我声明了一个全局的函数指针void (*KeyAction)(void),这个函数指针用于在DWORD IntProcessThread(void)函数,也就是IST中的while(1)循环的WaitForSingleObject(IntEvent, INFINITE)之后进行实际的中断业务处理,
同时,我还在驱动中提供了一个默认的中断业务处理函数void Action(void),并且在DWORD INT_Init(DWORD dwContext)函数中调用SetKeyAction(Action)函数对之前声明的函数指针赋值,这样便有了默认的中断业务处理;

EINTTest.cpp是测试代码文件
在这个文件中,我调用了驱动dll文件中的SetKeyAction函数,想给前面的函数指针重新指定一个处理函数(TestAction),通过在串口输出的信息可以看到确实能进入SetKeyAction函数,但是接下来执行的却还是驱动程序中的默认处理函数(Action)。。。

请各位大大帮忙看看到底哪儿出错了,或者是这种想增强灵活性的构想压根是不可行的,谢谢啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2012-3-12 17:56:01 | 显示全部楼层
亲,你把中断相关寄存器的值都打印出来看看呢。
 楼主| ghoulich 发表于 2012-3-12 22:37:14 | 显示全部楼层
亚瑟王 发表于 2012-3-12 17:56
亲,你把中断相关寄存器的值都打印出来看看呢。

呵呵,谢谢管理员大人回复,这个问题其实是我概念搞错了,驱动程序是内核空间的,应用程序是用户空间的,用户空间的进程不能直接访问内核空间的资源呢。。。
亚瑟王 发表于 2012-3-13 09:27:37 | 显示全部楼层
ghoulich 发表于 2012-3-12 22:37
呵呵,谢谢管理员大人回复,这个问题其实是我概念搞错了,驱动程序是内核空间的,应用程序是用户空间的, ...

你按下按键的时候,它不就是在内核空间的吗?然后加上打印信息就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-29 13:20 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表