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

简介: 在Windows CE增加自定义中断处理 基于S3C2410,Windows CE4.2,BSP是smdk2410。WinCE的中断处理是三个映射关系: ISQ --> Interrupt ID(逻辑中断号)  --> Event对象。

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

基于S3C2410Windows CE4.2BSPsmdk2410WinCE的中断处理是三个映射关系:

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

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

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

1、在BSPoalintr.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对象关联起来,然后在一个线程里等待这个Eventok了,这个线程就是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...
}

 

目录
相关文章
|
3月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
5月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
5月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
5月前
|
安全 Shell Windows
记windows自定义bat脚本自启动
【8月更文挑战第27天】在Windows系统中,可让自定义bat脚本自启动的方法有两种:一是利用“启动”文件夹,通过创建bat脚本的快捷方式并将其放置于该文件夹;二是使用任务计划程序,创建一个启动时触发的任务来运行bat脚本。需确保脚本正确安全,避免对系统产生不良影响。
425 0
|
5月前
|
Java 应用服务中间件 Windows
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
8月前
|
存储 安全 搜索推荐
Windows之隐藏特殊文件夹(自定义快捷桌面程序)
Windows之隐藏特殊文件夹(自定义快捷桌面程序)
129 1
|
8月前
|
XML Go 数据格式
Windows自定义后台进程并设置为开机启动
可以在`Windows`上配置任意一个可执行文件后台启动,并且设置为开机启动。
Windows自定义后台进程并设置为开机启动
基于windows10下使用bat脚本设置自定义开机启动项
基于windows10下使用bat脚本设置自定义开机启动项
2660 0
基于windows10下使用bat脚本设置自定义开机启动项
|
Rust C++ Windows
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
|
Rust Windows
【Rust 实战】注册表之自定义Windows11任务栏位置(下
【Rust 实战】注册表之自定义Windows11任务栏位置(下

热门文章

最新文章