Multicore Navigator (CPPI):Notify end of QM interrupt

在RTOS中,Multicore Navigator (CPPI)中PDSP监控的中断是作为中断进程进行调度的。如下,QM_PDSP_ISR是作为中断进程的入口函数注册给中断进程的,每次中断进程被调用的时候,都将从QM_PDSP_ISR处执行,这与普通的非中断进程不同(从被打断处继续执行)。

void QM_PDSP_ISR()
{
        //processing func
        ISR_func();
        // End interrupt.
       (void)QmInterruptEndOfInterrupt(interrupt_Type,accChannel);
}

ISR_func执行完后,要通过QmInterruptEndOfInterrupt函数作一些善后工作:

        intr =accChannel; //PDSP监控QM中断的channel号,即也是中断号

        /*1, Clear status register bit of this interrupt */
        regPtr->statusClearRegs =  (u32)(1<<intr);
        /*,2,Subract one for this interrupt from the int count register */
        regPtr->intCntRegs[ intr] = 1;
        /*,3,Signal that interrupt has been serviced */
        regPtr->endOfInt = intr;

第一步目的是清除intr中断状态寄存器,表示该中断已得到服务;

第二步目的是将记录该intr中断对应的count寄存器减1(因为同一个intr中断可以触发多次,对应intr的count寄存器记录了还没有得到服务的intr中断的数量),表示intr中断已响应一次。count最大值是3,表示最大可以记录3个同种intr中断,超出的将会丢掉。

第三步设置对应于intr中断的endOfint寄存器,表示该intr中断已正式服务完成。

当第三步设置完成后,如果intr中断对应的count寄存器值不等于0,则intr中断将会再次触发(假设比intr中断优先级高的中断count寄存器值为0,即没有高优先级中断触发),但是this should not happen with firmware generated interrupts(4.4.1.2 in Multicore Navigator (CPPI) Users guide.pdf)。


控制QM interrupt中断的regs area是QMSS INTD config region(Multicore Navigator (CPPI) Users guide.pdf):

 

中断号Valid values are: (other values are ignored)

0, 1 = PKTDMA RX starvation interrupts 0 and 1 (respectively)

2 - 33 = High-priority channel interrupts 0 through 31 (respectively)

34 - 49 = Low-priority channel interrupts 0 through 15 (respectively)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值