器件型号: J784S4XEVM
您好:
我有一个与间歇性 CSI UDMA 相关的错误相关的问题。
(SDK 版本:RTOS 11.01、Linux:11.01)
(BOOT_APP 引导模式)
在 CSI 测试期间、我正在运行重复的重新启动测试、偶尔会看到与 UDMA 相关的错误。
在我的实现中、RX 任务初始化 UDMA、TX 任务仅使用由 RX 任务初始化的 UDMA 句柄。
// RX Task
static int32_t CsirxApp_init(Csi_commonObj* appCommonObj)
{
int32_t retVal = FVID2_SOK, dmaStatus = UDMA_SOK;
Udma_DrvHandle drvHandle;
Udma_InitPrms udmaInitPrms;
Fvid2_InitPrms initPrms;
/* Fvid2 init */
Fvid2InitPrms_init(&initPrms);
initPrms.printFxn = &App_fvidPrint;
retVal = Fvid2_init(&initPrms);
if (FVID2_SOK != retVal)
{
GT_0trace(CsirxAppTrace, GT_ERR,
APP_RX_NAME ": Fvid2 Init Failed!!!\r\n");
}
drvHandle = &appCommonObj->udmaDrvObj;
UdmaInitPrms_init(UDMA_INST_ID_BCDMA_0, &udmaInitPrms);
udmaInitPrms.printFxn = &App_dmaPrint;
dmaStatus = Udma_init(drvHandle, &udmaInitPrms);
if(UDMA_SOK != dmaStatus)
{
retVal = FVID2_EFAIL;
GT_0trace(CsirxAppTrace, GT_ERR,
APP_RX_NAME ": UDMA Init Failed!!!\r\n");
}
// TX Task
static int32_t CsitxApp_init(Csi_commonObj* appCommonObj)
{
int32_t retVal = FVID2_SOK;
Udma_DrvHandle drvHandle;
Csitx_initParamsInit(&appCommonObj->txinitPrms);
drvHandle = &appCommonObj->udmaDrvObj;
appCommonObj->txinitPrms.drvHandle = drvHandle;
retVal = Csitx_init(&appCommonObj->txinitPrms);
if (FVID2_SOK != retVal)
{
GT_0trace(AppTrace, GT_ERR,
APP_TX_NAME ": System Init Failed!!!\r\n");
}
return (retVal);
}
TX 任务使用等待 RX 初始化 Semaphore_pend()。
RX 任务完成初始化后、它将发送 Semaphore_post() 到 TX 任务、然后调用 Fvid2_start()。
一旦 TX 任务从 RX 任务接收到信标,它就会继续自己的初始化,然后调用 Fvid2_start()。
错误消息如下所示。
没有固定的模式、但大约在大约 30 个重启测试周期后发生一次。
CSI_RX_TASK:===================Setup Details===================
csi/csi_rx_func.c @ Line 338: CSI_RX_TASK: Three Capture Instance 0, 1, 2 instance
CSI_RX_TASK: Capture DF:0x2a
CSI_RX_TASK: Capture Resolution:1024 x 131
CSI_RX_TASK:===================================================
Clock Freq: CSITX_MOD_ESC_CLK = 20000000Hz
Clock Freq: CSITX_MOD_DPHY_TXBYTECLKHS_CLK = 0Hz
Clock Freq: CSITX_MOD_VBUS_CLK = 250000000Hz
Clock Freq: CSITX_MOD_MAIN_CLK = 500000000Hz
CSI_RX_TASK:Set D-PHY Configuration Successful for CSIRX instance 0!!!
CSI_RX_TASK:Error Events Registration Successful for CSIRX instance 0!!!
CSI_RX_TASK: CSIRX Capture created for CSIRX instance 0
CSI_RX_TASK:Set D-PHY Configuration Successful for CSIRX instance 1!!!
CSI_RX_TASK:Error Events Registration Successful for CSIRX instance 1!!!
CSI_RX_TASK: CSIRX Capture created for CSIRX instance 1
CSI_RX_TASK:Set D-PHY Configuration Successful for CSIRX instance 2!!!
CSI_RX_TASK:Error Events Registration Successful for CSIRX instance 2!!!
CSI_RX_TASK: CSIRX Capture created for CSIRX instance 2
[UDMA] [Error] Sciclient event config failed!!!
[UDMA] [Error] Event config failed!!
[UDMA] Assertion @ Line: 991 in src/udma_event.c: (UDMA_EVENT_INVALID != vintrNum) : failed !!!
[UDMA] [Error] Sciclient event config failed!!!
[UDMA] [Error] Event config failed!!
src/csitx_drvUdma.c @ Line 332: [ERROR]UDMA CQ event register FAILED!!!
src/csitx_drv.c @ Line 345: Instance create failed!!!
src/csitx_drv.c @ Line 1392: [ERROR]UDMA channel close FAILED!!!
src/csitx_drv.c @ Line 1392: [ERROR]UDMA channel close FAILED!!!
src/csitx_drv.c @ Line 1392: [ERROR]UDMA channel close FAILED!!!
src/csitx_drv.c @ Line 1392: [ERROR]UDMA channel close FAILED!!!
src/csitx_drv.c @ Line 376: Create failed for given configuration
src/fvid2_drvMgr.c @ Line 777: Driver create failed!!
如果有任何推荐的解决方案或解决方法、请告知可能导致此问题的原因吗?