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.

[参考译文] DM385:出现 REISZER 溢出:正在重新启动

Guru**** 2551570 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/611728/dm385-reiszer-overflow-occured-restarting

器件型号:DM385
Thread 中讨论的其他器件: SysConfig

您好!

我们使用的是具有 IPNC 3.5的 DM385定制板。 我们偶尔会遇到 REISZER 溢出:重新启动 问题。

 因此、我更改了以下内容、但无法解决问题。

1.增加带宽

/opt/ipnc/init.sh

/bin/sys_pri.out --L3-bw-reg-set HDVICP0 0 900 2500&
/bin/sys_pri.out --DMM-pri-set ISS 0&
/bin/sys_pri.out --DMM-pri-set HDVICP0 1&

2.我已将以下补丁向后移植

diff -git a/source/ti_tools/iss_03_50_00_00/packages/ti/sps/iss/drivers/capture/srv_capapetrapi.c b/sources/ti_tools/iss_03_50_00_00/packages/ti/sps/drivers/capture/src/iss_apture_api.c
索引 dfed044.6132709 100644
--- a/source/ti_tools/iss_03_50_00_00/packages/ti/sps/iss/drivers/capture/src/issdrv_capureApi.c
++ b/source/ti_tools/iss_03_50_00_00/packages/ti/sps/iss/drivers/capture/src/issdrv_capureApi.c
@@-741,6 +741,24 @@ void ISP_test_csi2rx_line_end_wait (void)
    M2M 模式的//实现
 }
 
+void IssCDrv_rszResetTask (UARg arg1、UARg arg2)
+{
+   while (1)
+   {
+       /*等待 BSC 信号量*/
+       Semaphore_pend (GISS_captCommonObj.ovflWait、BIOS_wait_forever);
+
+       if (true == GISS_captCommonObj.exitTask)
+       {
+           休息;
+       }
+
+       iSS_captResetAndRestart (NULL);
+   }
+}
+
 /*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
 
 * @func    bufSwitchFull
@@-1226、12 + 124、24 @@ void ISP_ISIF_linenum_handle ()
 #endif
 
    int32 RSZ_err =*(MSP_U32 *)(0x55050024);
    IF (RSZ_ERR & 0xc0000)
    {
       vps_rprintf ("\r\n\t################## 出现 REISZER 溢出:正在重新启动...#################### \n\n");
       ISP_RESET_TRIGGER = 1;
    }
 
+   IF (ISP_RESET_TRIGGER)
+      {
+            Semaphore_post (GISS_captCommonObj.ovflWait);
+          ISP_RESET_TRIGGER = 0;
+      *(MSP_U32 *)(0x55050024)= RSZ_ERR 和0x3FFFF;
+          返回;
+      }
+
    pObj = gIss_captCommonObj.captureObj[0];
 
    for (streamId = 0;streamId < pObj->numStream;streamId++)
@@-1422、7 +1452、8 @@ Int32 ISS_captInit()
 {
 
    int32 status = FVID2_Sok、instId;
-
+   Semaphore_Params semParams;
+   Task_Params tskParams;
 
 
@@-1506,6+1537,38 @@ Int32 ISS_captInit()
 
    }
 
+   IF (FVID2_SOK == STATUS)
+   {
+       Semaphore_Params_init (semParams);
+
+       semParams.mode = Semaphore_Mode_binary;
+
+       GISS_captCommonObj.ovflWait = Semaphore_create (0U、&semParams、NULL);
+
+       IF (NULL == GISS_captCommonObj.ovflWait)
+       {
+           STATUS = FVID2_EFAIL;
+       }
+   }
+
+/*   在调整器溢出的情况下为复位 ISS 创建任务*/
+   IF (FVID2_SOK == STATUS)
+   {
+       GISS_captCommonObj.exitTask = false;
+
+       Task_Params_init (&tskParams);
+       tskParams.priority = 15;
+       GISS_captCommonObj.ovflTask = Task_create (
+                                       IssCDrv_rszResetTask、
+                                       tskParams (&T)、
+                                       NULL);
+
+       IF (NULL == GISS_captCommonObj.ovflTask)
+       {
+           STATUS = FVID2_EFAIL;
+       }  
+   }
+
    退货状态;
 
 }
@@-1578、7 +1641、15 @@ Int32 ISS_captDeInit()
 
        iSS_captLockDelete (gIss_captCommonObj.captureObj[instId]);)
 
+   GISS_captCommonObj.exitTask = true;
+   Semaphore_post (GISS_captCommonObj.ovflWait);
+   while (Task_Mode_terminated!= Task_getMode (GISS_captCommonObj.ovflTask))
+   {
+       Task_sleep (1U);
+   }
+   Task_delete (&GISS_captCommonObj.ovflTask);
 
+   Semaphore_delete (&GISS_captCommonObj.ovflWait);
 

是否有人可以帮助我们解决出现的 REISZER 溢出:重新启动问题?

此致、

Raj M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    我将通知 IPNC RDK 团队寻求帮助。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    有更新吗?

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    1) 1)您多久观察一次此问题?
    2) 2)重新启动后、IS/ISP 是否继续处理帧?
    3) 3)为了确认、如果崩溃/导致问题、您可以捕获 ISS/ISP 的状态寄存器并进行开机自检?
    4) 4)或者、为了进行测试、您可以在每几百帧的捕获后重置 ISS 并捕获观察结果。

    希望这对您有所帮助。

    谢谢、
    Prabhuraj
    Black胡椒 技术
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    1) 1)您多久观察一次此问题?
    

    例如:如果我启动5次、我至少遇到2次问题。

    2) 2)重新启动后、IS/ISP 是否继续处理帧?
    

    不会。它不会处理帧

    3) 3)为了确认、如果崩溃/导致问题、您可以捕获 ISS/ISP 的状态寄存器并进行开机自检?
    

    0x55050024 = 0x10C6E17

    重新调整大小错误寄存器根本不会复位。 保持错误发生状态。  

    4) 4)或者、为了进行测试、您可以在每几百帧的捕获后重置 ISS 并捕获观察结果。
    

    如何重置 ISS?

    BR、

    Raj M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    您可以在目标器件中配置 devmem2、并在每几百帧捕捉一次后从应用中复位 ISS/ISP 寄存器。
    检查 ISP5_SysConfig 寄存器以执行 SOFTRESET。

    希望这对您有所帮助。

    谢谢、
    Prabhuraj
    Black胡椒 技术