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 OVERFLOW OCCURED: RESTARTING

Part Number: DM385
Other Parts Discussed in Thread: SYSCONFIG

Hello,

We are using DM385 custom board with IPNC 3.5. We are occasionally facing REISZER OVERFLOW OCCURED: RESTARTING  issue.

 For that reason i changed below changes but no luck to solve the issue.

1. Increase the bandwidth

/opt/ipnc/init.sh

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

2. I have back-ported below patch

diff --git a/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c b/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
index dfed044..6132709 100644
--- a/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
+++ b/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
@@ -741,6 +741,24 @@ void isp_test_csi2rx_line_end_wait(void)
     //Implementation for M2M mode
 }
 
+Void IssCDrv_rszResetTask(UArg arg1, UArg arg2)
+{
+    while(1)
+    {
+        /* Wait for BSC semaphore */
+        Semaphore_pend(gIss_captCommonObj.ovflWait, BIOS_WAIT_FOREVER);
+
+        if(TRUE == gIss_captCommonObj.exitTask)
+        {
+            break;
+        }
+
+        Iss_captResetAndRestart(NULL);
+    }
+}
+
 /* ===================================================================
 
  *  @func     bufSwitchFull
@@ -1226,12 +1244,24 @@ void isp_isif_linenum_handle()
 #endif
 
     Int32 rsz_err = *(MSP_U32 *) (0x55050024);
     if (rsz_err & 0xc0000)
     {
         Vps_rprintf("\r\n\t##################### REISZER OVERFLOW OCCURED: RESTARTING...############################\n\r");
         isp_reset_trigger = 1;
     }
 
+    if (isp_reset_trigger)
+        {
+               Semaphore_post(gIss_captCommonObj.ovflWait);
+            isp_reset_trigger = 0;
+        *(MSP_U32 *) (0x55050024) = rsz_err & 0x3ffff;
+            return;
+        }
+
     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;
+        }
+    }
+
+    /* Create Task for the Resetting ISS in case of Resizer Overflow */
+    if (FVID2_SOK == status)
+    {
+        gIss_captCommonObj.exitTask = FALSE;
+
+        Task_Params_init(&tskParams);
+        tskParams.priority = 15;
+        gIss_captCommonObj.ovflTask = Task_create(
+                                        IssCDrv_rszResetTask,
+                                        &tskParams,
+                                        NULL);
+
+        if (NULL == gIss_captCommonObj.ovflTask)
+        {
+            status = FVID2_EFAIL;
+        }  
+    }
+
     return status;
 
 }
@@ -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);
 

Can someone help us to solve the REISZER OVERFLOW OCCURED: RESTARTING issue?

Regards,

RAJ M

  • Hi Raj,

    I will notify IPNC RDK team for help.

    Regards,
    Pavel
  • Hi,

    Any update?

    Regards,
    RAJ M
  • Hi Raj,

    1) How often are you observing this issue?
    2) After restart, is the iss/isp continuing to process the frames?
    3) To confirm, if its crashing/causing issues can you capture the status registers of ISS/ISP and post?
    4) Alternatively, just to test, you can reset the ISS after every few hundred frames of capture and capture the observations.

    Hope it helps.

    Thanks,
    Prabhuraj
    BlackPepper Technologies
  • Hi,

    1) How often are you observing this issue?
    

    ex: if i boot 5 times i got issue at least 2 times.

    2) After restart, is the iss/isp continuing to process the frames?
    

    No. its not process the frames

    3) To confirm, if its crashing/causing issues can you capture the status registers of ISS/ISP and post?
    

    0x55050024 = 0x10C6E17

    resize error register it not at all resetting. keeps on holding the error occur status. 

    4) Alternatively, just to test, you can reset the ISS after every few hundred frames of capture and capture the observations.
    

    How to reset the ISS?

    BR,

    RAJ M

  • Hi Raj,

    You can configure devmem2 in your target device and reset the ISS/ISP register from your application after every few hundred frame capture.
    Check ISP5_SYSCONFIG register to do SOFTRESET.

    Hope it helps.

    Thanks,
    Prabhuraj
    BlackPepper Technologies