This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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 map
    xsApp_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的各位老司机帮我解惑~~~