Hello,
I am having issues with the Qmss Accumulator interrupt in C6618. CCS5.0.3 version and using bios mcsdk-02.00.03.15
I have configured the accumulator for RxQueue 704.
The ping pong list of the accumulator is updated. In the ROV, it is seen that the event id 48 is registered with the ISR. Hwi interrupt 7 is also present. Once the message is present on the Rx queue, the QmIntD register STATUS_REG0=1,STATUS_CLEAR_REG0=1,INTCNT_REG[0]= 1. In registers, IER registers 7,8,9,10 are enabled. ISR and ICR register values are 1.However the interrupt is not raised to host. Is there something missing for raising interrupt to host?
Following configuration done in cfg :.
ECM.eventGroupHwiNum[0] = 7;
ECM.eventGroupHwiNum[1] = 8;
ECM.eventGroupHwiNum[2] = 9;
ECM.eventGroupHwiNum[3] = 10;
The registration of Isr is done in code.
Following is the accumulator configuration done:
accCfg.channel = accChannelNum;
accCfg.command = Qmss_AccCmd_ENABLE_CHANNEL;
accCfg.queueEnMask = 0;
accCfg.listAddress = Convert_CoreLocal2GlobalAddr((Uint32) gHiPriAccumList);
accCfg.queMgrIndex = gRxQHnd[0];
accCfg.maxPageEntries = (intThreshold + 1); /* Add an extra entry for holding the entry count */
accCfg.timerLoadCount = 0;
accCfg.interruptPacingMode = Qmss_AccPacingMode_LAST_INTERRUPT;
accCfg.listEntrySize = Qmss_AccEntrySize_REG_D;
accCfg.listCountMode = Qmss_AccCountMode_ENTRY_COUNT;
accCfg.multiQueueMode = Qmss_AccQueueMode_SINGLE_QUEUE;
/* Program the accumulator */
if ((result = Qmss_programAccumulator (Qmss_PdspId_PDSP1, &accCfg)) != QMSS_ACC_SOK)
{
System_printf ("Error Programming high priority accumulator for channel : %d queue : %d error code : %d\n",accCfg.channel, accCfg.queMgrIndex, result);
return -1;
}
eventId = 48;
vectId = 7;
EventCombiner_dispatchPlug (eventId, (EventCombiner_FuncPtr)Cpsw_RxISR, (UArg)NULL, TRUE);
Hwi_eventMap(vectId, 1);
Hwi_enableInterrupt(vectId);