WinCE驱动中设备中断的处理
来源:互联网 发布:淘宝怎么设置实名认证 编辑:程序博客网 时间:2024/05/16 09:00
因为BSP和WinCE系统,已经做了大量的工作,完成了所有底层的处理。所以我们仅调用几个api,就可以完成驱动程序对中断的处理。
在WinCE中,中断被转换成为了一个事件。所以我们可以创建一个线程,该线程循环等待事件发生,一旦发生则去操作对应设备。这个线程被成为IST。整个过程如下:
在驱动的XXX_Init()中
1.创建一个事件
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
2.获得sysIntr,硬件有一个中断号,如EINT0,等等,但该中断号并不是WinCE系统能识别的中断号,故要获取WinCE的系统中断号。
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &sysIntr, sizeof(UINT32), NULL);
其中Irq为硬件中断号,如EINT0等等。
当调用完KernelIoControl函数后,硬件中断号对应的系统中断号,则会保存在sysIntr中。
3.将事件与中断号相连接
在连接前,先禁止该中断,连接后调用一次InterruptDone则会启动该中断。
InterruptDisable(sysIntr);
if(!InterruptInitialize(sysIntr, hEvent, NULL, 0) )
goto error;
InterruptDone(sysIntr);
4.创建中断服务线程(IST)
hThread = CreateThread(NULL, 0, &IST, NULL, 0, NULL);
至此,就完成了有关设备中断的初始化操作。接下来实现创建中断服务线程即可
其样式如下,省略了对设备操作的代码。
DWORD IST(LPVOID param)
{
DWORD we;
while(hThread)
{
we = WaitForSingleObject(DPRAM.hEvent, INFINITE);
...;
InterruptDone(sysIntr);
}
在WinCE中,中断被转换成为了一个事件。所以我们可以创建一个线程,该线程循环等待事件发生,一旦发生则去操作对应设备。这个线程被成为IST。整个过程如下:
在驱动的XXX_Init()中
1.创建一个事件
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
2.获得sysIntr,硬件有一个中断号,如EINT0,等等,但该中断号并不是WinCE系统能识别的中断号,故要获取WinCE的系统中断号。
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &sysIntr, sizeof(UINT32), NULL);
其中Irq为硬件中断号,如EINT0等等。
当调用完KernelIoControl函数后,硬件中断号对应的系统中断号,则会保存在sysIntr中。
3.将事件与中断号相连接
在连接前,先禁止该中断,连接后调用一次InterruptDone则会启动该中断。
InterruptDisable(sysIntr);
if(!InterruptInitialize(sysIntr, hEvent, NULL, 0) )
goto error;
InterruptDone(sysIntr);
4.创建中断服务线程(IST)
hThread = CreateThread(NULL, 0, &IST, NULL, 0, NULL);
至此,就完成了有关设备中断的初始化操作。接下来实现创建中断服务线程即可
其样式如下,省略了对设备操作的代码。
DWORD IST(LPVOID param)
{
DWORD we;
while(hThread)
{
we = WaitForSingleObject(DPRAM.hEvent, INFINITE);
...;
InterruptDone(sysIntr);
}
return ERROR_SUCCESS;
}
}
- WinCE驱动中设备中断的处理
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程
- 转载—— WinCE中中断的处理过程(驱动开发人员角度)
- Linux 设备驱动--- 中断处理
- wince中断的处理过程
- WinCE 流接口驱动中设备句柄的传输过程
- WinCE 流接口驱动中设备句柄的传输过程
- WinCE 流接口驱动中设备句柄的传输过程
- WinCE 流接口驱动中设备句柄的传输过程
- WinCE 流接口驱动中设备句柄的传输过程
- WinCE 流接口驱动中设备句柄的传输过程
- linux设备驱动的中断
- 深入浅出 Linux设备驱动中断处理介绍
- Android 设置飞行模式
- 用vs2008调试Javacscript(转自:http://www.css88.com/archives/982)
- Nutch 1.3 学习笔记3 - Inject
- DataTable导出到Excel的解决方案(.csv)文件
- 单元测试,集成测试,系统测试,验收测试,回归测试的概念
- WinCE驱动中设备中断的处理
- Android 关闭开启蓝牙
- vs2008编译tamarin出现错误c2220:警告被视为错误
- C++ 读写操作同一个文件的几种方法
- 手机语音通信时代,国内四大安卓语音通信软件分享
- My C++之初识GP
- iphone UISwitch开关控件
- Distance metric
- error: jump to case label