7523|11

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince中断的问题 [复制链接]

以前是学4.2的,现在改6.0了。发现中断差异很大。
1. wince4.2中很容易定义一个中断,然后可以在驱动或者是应用程序中使用。wince6.0中该如何定义呢?
听说有静态和动态之分,谁能都介绍一下具体该如何实现。

2. 添加完系统中断后应用程序在wince6.0中又如何才能响应这个中断呢?
此帖出自WindowsCE论坛

最新回复

4.2中用的是静态映射,5.0 6.0改为动态映射了,5.0 6.0在2440中只有网卡采用了静态的,其他的都是动态申请了 你可以看下驱动下边自带的电源按键例子。  详情 回复 发表于 2010-3-15 13:14
点赞 关注
 

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
只用过5.0的中断,似乎5.0和6.0差不多吧,不确定
此帖出自WindowsCE论坛
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果是真正5.0的代码估计与6.0一样。5.0也是支持动态的。
像4.2的,里面有cfw.c,中断就在里面处理,6.0连文件都找不到了。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &m_dwSysintrEINT12, sizeof(UINT32), NULL);
g_keyevtSignal =CreateEvent(NULL, FALSE, FALSE, NULL);       
InterruptInitialize(m_dwSysintrEINT12, g_keyevtSignal, NULL, 0);
5.0是通过这些函数实现的
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
没用过ce6.0
处理
都差不多吧
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 veabol 的回复:
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &m_dwSysintrEINT12, sizeof(UINT32), NULL);
g_keyevtSignal =CreateEvent(NULL, FALSE, FALSE, NULL);
InterruptInitialize(m_dwSysintrEINT12, g_keyevtSignal, NULL, 0);
5.0是通过这些函数实现的

谢谢大哥!
你这种写法是动态的,我知道。不知道改方法应用程序能否使用?

to all:谁知道静态的如何实现?
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
为什么非要使用静态中断呢?
说说你的思路
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
例如 静态中断是在 oalintr.h 进行宏定义,然后一般OEMInterruptXXX 中进行处理。
应用程序响应中断的话, 可以创建一个Event,在ISR 处理中断的时候 设置Event 有信号状态,应用层可以等待该信号来响应该中断。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
没有说一定要静态,只是既然支持就像学一下而已。多种选择没什么不好。

貌似6.0中没有oalintr.h,区别很大。
此帖出自WindowsCE论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 
其实你没必要太理会系统是怎么做的,你只需要通过kerneliocontrol()函数,把你的物理中断号传进去就可以了,系统会自动给你分配逻辑中断的,如果要仔细研究的话是,kerneliocontrol调用了oal层的oemiocontrol(),这个函数又根据键值调用了一个什么函数忘记名字了
楼主可以自己去看看代码。这块个人感觉比较难懂,可能因为本人也是新学,而且比较笨吧,希望楼主能轻松搞定。嘿嘿ie
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
我记得静态有两种方式
一种是
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR...); 该调用的输入参数变了,不再是单一的物理irq,而是一个数组,第一个元素值用于判断是新式调用还是旧式调用,第二个元素为设置标志,确定映射模式,静态时为OAL_INTR_STATIC,动态时为OAL_INTR_DYNAMIC,参考代码D:\WINCE600\PLATFORM\COMMON\SRC\COMMON\INTR\COMMON\ioctl.c中OALIoCtlHalRequestSysIntr函数

另一种是
OALIntrStaticTranslate,现在不推荐使用
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

12
 
4.2中用的是静态映射,5.0 6.0改为动态映射了,5.0 6.0在2440中只有网卡采用了静态的,其他的都是动态申请了 你可以看下驱动下边自带的电源按键例子。
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表