硬件可以事件通知方式与驱动程序通信吗
有要求说:硬件内发生某些事件时能通知驱动程序,比如缓冲区数据满的时候通知驱动程序取数据等等。敢问各路高手,这种要求是否可以实现?如何实现?据我目前所能做到的就是靠驱动程序轮询硬件“有什么事吗”这样的方式来解决,但是并非领导的本意啊,还请高手指点才行,万分感激!
[解决办法]
硬件产生中断啊,然后再查询。
[解决办法]
有中断了,驱动就会收到呀。
[解决办法]
不知道楼主是什么OS,比如说Windows CE。
驱动在Init阶段,可以创建一个IST(中断服务线程), 在IST中完成使能中断,创建事件,获取系统中断号并关联先前创建的事件以及实际的中断处理等工作。
在IST中会有一个死循环,在循环中等待一个事件。如:
for (;;)
{
WaitForSingleObject(ResetButtonIntrEvent, INFINITE);
// 实际的中断处理(代码省略)
// 通知系统中断处理已经完成,重新使能该中断
InterruptDone(ResetButtonSysIntr);
}
IMPORT UndefException
IMPORT SWIHandler
IMPORT PrefetchAbort
IMPORT DataAbortHandler
IMPORT IRQHandler
IMPORT FIQHandler
EXPORT VectorTable
VectorTable
DCD -1 ; reset
DCD UndefException ; undefined instruction
DCD SWIHandler ; SVC
DCD PrefetchAbort ; Prefetch abort
DCD DataAbortHandler ; data abort
DCD -1 ; unused vector
DCD IRQHandler ; IRQ
DCD FIQHandler ; FIQ