在Windows CE增加自定义中断处理

在Windows CE增加自定义中断处理

基于S3C2410,Windows CE4.2,BSP是smdk2410。WinCE的中断处理是三个映射关系:

ISQ --> Interrupt ID(逻辑中断号)  --> Event对象。

当中断发生时,ISR(中断服务例程)返回该中断号对应的逻辑中断号,然后尽可能快地返回;随后CE就set该逻辑中断号对应的Event对象(如果有的话),以唤醒在该Event等待的IST(中断服务线程),大部分工作都是由IST来完成。一般来说IST是存在驱动程序里,单其实放在普通的应用程序里也可以,尤其是对应只有一个应用程序使用的特殊硬件更方便。因为对应CE来说其实驱动程序也只是一个普通的DLL,也是运行在用户空间。

为了简单起见我们就直接修改BSP包的ISR部分,IST也直接在应用程序里实现,步骤如下:

1、在BSP的oalintr.h里定义自定义中断的逻辑中断值,如:
            #define SYSINTR_MYINTR  (SYSINTR_FIRMWARE + 10)

2、修改KERNEL/HAL/cfw.c中的以下三个函数,增加对自定义中断的启用禁用代码:
           OEMInterruptEnable(), OEMInterruptDisable(), OEMInterruptDone()

3、修改KERNEL/HAL/ARM/armint.c中的OEMInterruptHandler(),对irq返回逻辑中断号,如:
 else if (IntPendVal == INTSRC_EINT2) // EINT2
    return(SYSINTR_MYINTR);

4、在PlatformBuilder中重新生成nk.bin,下载运行。

现在,内核已经支持我们的自定义中断SYSINTR_MYINT了,我们在应用程序中就可以把这个SYSINTR_MYINT与一个Event对象关联起来,然后在一个线程里等待这个Event就ok了,这个线程就是IST。

5、在IST里用InterruptInitialize()将自定义中断和Event关联起来,并WaitForSingleObject()。注意下面的代码是在一个线程里(即IST):
 hEvent = CreateEvent(NULL, FALSE, FALSE, NULL));
 InterruptInitialize(SYSINTR_MYINTR, hEvent, NULL, 0));     //若没有修改OEMInterruptEnable(),这个调用就会失败
 while ( TRUE )
 {
    WaitForSingleObject(hEvent, INFINITE);
    // do some process...
}

 

时间: 2024-09-26 22:44:28

在Windows CE增加自定义中断处理的相关文章

Windows CE嵌入式导航系统研究(内核相关)

1.1 嵌入式车载导航系统的软件设计流程 嵌入式车载系统软件主要包括系统内核.驱动程序.应用程序三部分.设计的过程当中,我们采用瀑布模型进行设计,首先制定Windows CE5.0系统内核,再次编写相关设备驱动,最后编写或移植应用程序. 制定内核时,我们采用SunSaung2440 BSP(板级支持包)进行制定,同时提交组建保证系统支持网络通讯.文件系统.CAB包安装.汉语支持等功能.不仅如此,为方便系统应用程序开发,内核制定之后,我们发布相应的SDK. 图 5.1 软件设计流程 1.2 Win

基于S3C2410的Windows CE 5.0 BSP移植

基于S3C2410的Windows CE 5.0 BSP移植 摘要  嵌入式开发中一个重要的环节是板级支持包(BSP)的开发,实际开发过程更倾向于移植BSP而不是重新开发BSP.本文先介绍了samsung公司的S3C2410微处理器和嵌入式操作系统Windows CE 5.0 特性,分析BSP结构,在此基础上,通过bootloader, OAL, 触摸屏驱动的移植来具体探讨BSP移植过程.   1 引言 在当今后PC时代,嵌入式系统应用得越来越广泛,嵌入式产品充斥着许多领域,日常生活的手机,MP

Windows CE嵌入式导航系统研究(关键技术)

1.1 GPS全球定位技术 GPS(Global Position System):全球定位系统,它是美国从上世纪 70 年代开始研制,历时 20 年,耗资近 200 亿美元,于 1994 年全面建成的利用导航卫星进行测时和测距,具有在海.陆.空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统.如今,GPS 已经成为当今世界上最实用,也是应用最广泛的全球精密导航.指挥和调度系统. 1.1.1 GPS组成 GPS 系统主要包括有三大组成部分,即空间星座部分.地面控制部分和用户设备部分[6

Windows CE嵌入式导航系统研究(硬件设计1)

1.1 ARM微处理器的选择 1.1.1 ARM微处理器系列 ARM 微处理器目前包括下面几个系列,其它厂商基于ARM 架构的处理器,除了具有ARM 架构的共同特点以外,每一个系列的ARM 微处理器都有各自的特点和应用领域. l ARM7 系列 l ARM9 系列 l ARM9E 系列 l ARM10E 系列 l SecurCore 系列 l Inter 的Xscale l Inter 的StrongARM 其中,ARM7.ARM9.ARM9E 和ARM10E 为4 个通用处理器系列,每一个系列

Windows CE嵌入式导航系统研究(应用程序相关)

1.1.1 TCPMP多媒体播放器 本系统中采用的多媒体播放器是TCPMP,TCPMP播放器播放速度很快且支持多达几十中多媒体格式.TCPMP开源项目,同时支持Windows CE操作系统,而且提供很好的扩展性,例如需要重新编写TCPMP界面只需重新编写interface.plg即可.TCPMP提供全部的源代码,移植非常方便,只需编译后将生成的文件拷贝到目标机器运行即可.TCPMP多媒体播放器界面非常简洁,如图 5.35所示. 图 5.37 TCPMP软件界面 另外.TCPMP还支持应用集成,可

Windows ce的体系结构和功能

                             Windows ce体系结构图   操作系统层 操作系统的基本功能被放在多个独立的进程(exe)里面实现.在运行的时候,这些进程大致有如下几个: l         内核NK.EXE l         图形系统GWES.EXE l         对象存储FILESYS.EXE l         设备管理系统DEVICE.EXE l         服务SERVICES.EXE   系统调用与CoreDLL.DLL CoreDLL.D

Windows CE中实现蓝牙串口驱动程序

Windows CE中实现蓝牙串口驱动程序 [日期:2006-10-19] 来源:互联网  作者:佚名 [字体:大 中 小]     Windows CE作为一种典型的嵌入式操作系统,通过将蓝牙应用移植到Widows CE中,对于如pSOS+.Nucleus等其它嵌入式系统,具有典型意义.由于OBEX上的文件传输应用建立在RFCOMM实现的蓝牙仿真串口上,本文介绍OBEX文件传输的蓝牙虚拟串口驱动程序的实现. 1 Windows CE设备驱动程序概述 Windows CE支持广泛的基于各种CE平

[转]“我再也不用Windows CE或者嵌入式Windows XP了”

  "我再也不用Windows CE或者嵌入式Windows XP了" 原文:http://www.windowsembedded.com.cn/about_windows_embedded_1.asp 编者注: 指出常见的开发者为何使用嵌入式Windows的原因 摘录自Mike Hall的blog, 列举了他经常听到"我再也不用Windows CE或者嵌入式Windows XP了",奇怪吗?那么为何我将不会再使用Windows CE或者嵌入式Windows XP呢

用.net 2003开发Windows CE应用,解决与pocket pc通讯的问题

window|解决|问题   用.net 2003作Windows CE应用时,碰到一个问题.工程编译通过,但在部署到pocket pc时出现如下的错误:------ 已启动部署: 项目: PDA, 配置: Debug Pocket PC ------ 正在部署到 Pocket PC 设备正在使用 TCP 连接传输 错误: 无法建立连接.请确保此设备已经与开发计算机建立了物理连接.---------------------- 完成 ---------------------     生成: 1