opqooq 发表于 2018-7-24 09:52
1、驱动本身没有任何问题,相对也比较稳定。只是我觉得驱动函数相对结构比较复杂,代码量也比较大,生成的out文件里.text段也比较大,过于冗余,用起来感觉也不顺溜。所以直接用PDK里的CSL来实现,代码精简了很多。
2、doorbell中断路由只需要配置一次,中断二次路由到每个核都要在每个核中单独配置。 ...
你好!
关于doorbell中断,我还是没有在多核的情况下调通,我理解的是doorbell中断路由到不同的host interrupt ID上,每个核都有自己的host interrupt ID,这个我是在bios启动之后在socket start之前在每个核上单独配置的,现在的情况是dsp做自环数据是可以收发正确的,但是无法进入doorbell中断。
以下是我配置的doorbell中断,初始化时的配置未列出应该是没问题的,我用的是CSL_INTC0_INTDST1和CSL_INTC0_INTDST5,并将其绑定到host interrupt ID 8(core0的) 和 host interrupt ID 24(core1的)。我是不是哪里配置的有问题或者理解的有问题要,期待您的解答!
CSL_SRIO_DisableInterruptPacing(hSrioCSL,1);
CSL_SRIO_DisableInterruptPacing(hSrioCSL,5);
CpIntc_dispatchPlug(CSL_INTC0_INTDST1,(CpIntc_FuncPtr)myDoorbellIsr1,(UArg)hDrvManagedSrioDrv,)
CpIntc_dispatchPlug(CSL_INTC0_INTDST1,(CpIntc_FuncPtr)myDoorbellIsr1,(UArg)hDrvManagedSrioDrv,)
CpIntc_mapSysIntToHostInt(0,CSL_INTC0_INTDST1,8);
CpIntc_mapSysIntToHostInt(0,CSL_INTC0_INTDST5,24);
CpIntc_enableSysInt(0,CSL_INTC0_INTDST1);
CpIntc_enableSysInt(0,CSL_INTC0_INTDST5);
eventID_0 = CpIntc_getEventId(8);
eventID_1 = CpIntc_getEventId(24);
EventCombiner_dispatchPlug(eventID_0,CpIntc_dispatch,8,TRUE);
EventCombiner_dispatchPlug(eventID_1,CpIntc_dispatch,24,TRUE);