器件型号: J784S4XEVM
尊敬的专家:
我们在 j784s4_evm 上使用 SDK 10.01。
我正在尝试使用 UDMA 驱动程序。
我在 c7x 内核上的 UDMA 主实例初始化期间发现问题。
分配的中断向量为向量 0。 但从 48 开始。
UdmaRmInitPrms_init 函数为已初始化的实例设置 c7x 内核中断偏移。
if(UDMA_INST_ID_START != instId)
{
uint32_t curInstIrStart = 0U;
uint32_t startInstIrStart = 0U;
/* Returned num value not used in this case, Passing to avoid dereferencing of NULL pointer */
uint32_t num = 0U;
/* Get the startInstIrStart i.e., start value of range of IR interrupts
allocated to first instance */
retVal += Udma_rmSetSharedResRmInitPrms(Udma_rmGetSharedResPrms(UDMA_RM_RES_ID_IR_INTR),
UDMA_INST_ID_START,
UDMA_INST_ID_START,
rmDefBoardCfgResp[UDMA_RM_RES_ID_IR_INTR].rangeStart,
rmDefBoardCfgResp[UDMA_RM_RES_ID_IR_INTR].rangeNum,
&startInstIrStart,
&num);
/* Get the curInstIrStart i.e., start value of range of IR interrupts
allocated to current instance */
retVal += Udma_rmSetSharedResRmInitPrms(Udma_rmGetSharedResPrms(UDMA_RM_RES_ID_IR_INTR),
instId,
UDMA_INST_ID_START,
rmDefBoardCfgResp[UDMA_RM_RES_ID_IR_INTR].rangeStart,
rmDefBoardCfgResp[UDMA_RM_RES_ID_IR_INTR].rangeNum,
&curInstIrStart,
&num);
/* Add the no. of IR Interrupts reserved for C7x/C66x before current instance
to make sure each instance has their own range C7x/C66x events */
#if defined (BUILD_C7X)
/* Start C7x Core Interrupt */
rmInitPrms->startC7xCoreIntr = (UDMA_C7X_CORE_INTR_OFFSET + (curInstIrStart - startInstIrStart));
似乎此 if 语句缺少 else 语句(对于 UDMA 主实例)
它至少应该执行 rmInitPrms->startC7xCoreIntr = (UDMA_C7X_CORE_INTR_OFFSET);
此致、
Charles