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