|
各位英雄:
小弟最近研究摄像头驱动(WINCE5.0+PXA270+OV9650),涉及到DMA中断。
BSP中至少有两个驱动使用DMA中断:
其一就是音频,在\Src\Kernel\Oal\intr.c文件中使用OALIntrStaticTranslate(SYSINTR_AUDIO, IRQ_DMAC);函数静态映射;
其二就是摄像头驱动,在驱动加载时使用KernelIoControl、LoadIntChainHandler等函数动态映射。
现在的问题时,我的摄像头驱动中收不到DMA中断。
问题请教:
1、IRQ和SYSINTR是不是只能是一对一?应该可以一对多吧?
2、多个设备同时使用IRQ_DMAC,而逻辑中断号SYSINTR各不相同;系统运行并产生DMA中断时,会不会因为映射关系混乱而导致部分设备不能接收中断?中断到来时,系统是如何区分它是哪个设备的DMA中断?或者说如何保证每个设备都能正常的接收到DMA中断信号?
3、OEMInterruptHandler函数和常说的ISR是什么关系?还有可安装的GIISR呢?
另外,SYSINTR_AUDIO为25,摄像头驱动调用KernelIoControl返回的SYSINTR为16。
|
|