C6678的外设中断标志位在什么时候清除最合适?
环境:C6678 GbE网络外设驱动,网络接收中断源为QMSS队列(704)中断。
我们自己开发的简易操作系统内核,从触发中断(中断入口)到相应的网络驱动中断处理时间为3微妙。
当在网络驱动的中断处理中清除外设中断标志后,接着回收描述符(将接收描述符压入接收完成队列中),最后调用Mac层接收处理,程序表现正常。
当在中断入口后清除外设中断标志,(其余程序未调整)回收描述符的操作还是在驱动的中断处理函数中,通讯一段时间后,会出现相应Port口的接收完成队列中的描述符数量减少,直至为0.
两者区别只是清除外设中断标志位的时机不同,后者比前者提前。
请问为什么会导致这种情况。
谢谢大家!