TI中文支持网
TI专业的中文技术问题搜集分享网站

DM8148 IPNC_RDK3.8 CameraLink创建失败

使用LinkApi时发现CameraLink在使用一次之后(Create->Start->Stop->Delete),再次Create时会失败:

A8端调试运行代码卡在Create语句:

System_linkCreate(xscameraId, &cameraPrm,sizeof(cameraPrm));

M3VPSS无法调试,通过打印信息推测出运行代码卡在这个iss的函数中():

hal/iss/isp/ipipe_if/src/ipipe_if.c -->  ISP_RETURN ipipeif_config(ipipeif_path_cfg_t * ipipeif_cfg)

这个函数是配置一些寄存器,在写或者读的时候卡住了。

:问题1:这里为什么会卡住呢?

我尝试通过复位ISP模块来解决这个问题,根据iss的文档介绍,代码如下:

void isp_sw_reset(void)
{static CSL_ISP5Regs* ispreg;// memory mapxsApp_mMap(0x5C010000, sizeof(CSL_ISP5Regs), &ispreg);printf("%s enter\n", __FUNCTION__);ISP_SET32(ispreg->ISP5_SYSCONFIG, 2, CSL_ISP5_SYSCONFIG_STANDBYMODE_SHIFT, CSL_ISP5_SYSCONFIG_STANDBYMODE_MASK);ISP_SET32(ispreg->ISP5_CTRL, 1, CSL_ISP5_CTRL_MSTANDBY_SHIFT, CSL_ISP5_CTRL_MSTANDBY_MASK);while(ISP_FEXT(ispreg->ISP5_CTRL, CSL_ISP5_CTRL_MSTANDBY_WAIT_SHIFT, CSL_ISP5_CTRL_MSTANDBY_WAIT_MASK) != 1);ISP_SET32(ispreg->ISP5_SYSCONFIG, 1, CSL_ISP5_SYSCONFIG_RESET_SHIFT, CSL_ISP5_SYSCONFIG_RESET_MASK);

// ISP_FEXT读取操作卡死while(ISP_FEXT(ispreg->ISP5_SYSCONFIG, CSL_ISP5_SYSCONFIG_RESET_SHIFT, CSL_ISP5_SYSCONFIG_RESET_MASK)){usleep(200*1000);printf("%s waiting for ISP5_SYSCONFIG_RESET\n", __FUNCTION__);}printf("%s complete\n", __FUNCTION__);xsApp_unmapMem(); }

在最后一步读取寄存器时卡死。

问题2:此处卡死是什么原因导致?是否与前一个问题的原因相同或者类似?

问题3:我最终需要解决的是可以让CameraLink可以再次创建不被卡死,复位ISP这种思路是否正确?

希望TI的各位老司机帮我解惑~~~

user5305451:

顶一下,都放假了吗,快来人呀~~~~~

Chris Meng:

回复 user5305451:

你好,

IPNC RDK里面有一个函数Iss_captResetAndRestart,建议参考这个函数来复位ISS。在复位ISS前,请确保所以ISS对DDR的访问都已经结束。

user5305451:

回复 Chris Meng:

你好,

我调试之后发现前面问题提到的卡住的现象,只是会出现在所有Link都Delete之后,包括您提到的函数Iss_captResetAndRestart;如果Link正在运行,就不会出现卡死的现象。

现在我需要解决CameraLink第二次Create失败卡死的问题,请问有什么好的思路吗?

Chris Meng:

回复 user5305451:

你好,

我们默认代码如果reboot,会有同样的问题么?

user5305451:

回复 Chris Meng:

您说的reboot是什么操作?
我们现在是通过重新加载M3VPSS的程序来确保第二次可以运行:
fw_load.out shutdown VPSS-M3
fw_load.out startup VPSS-M3 ./firmware/ipnc_rdk_fw_m3vpss.xem3

赞(0)
未经允许不得转载:TI中文支持网 » DM8148 IPNC_RDK3.8 CameraLink创建失败
分享到: 更多 (0)