器件型号: TDA4VE-Q1
尊敬的专家:
以下是我们的环境:
soc:TDA4VE
-SDK:ti-processor-sdk-rtos-j721s2-evm-11_00_00_06
相机:电视 x 4, 1920*1536, 25fps
我们已将 SDK 从 ti-processor-sdk-rtos-j721s2-evm-08_06_01_03 升级到 ti-processor-sdk-rtos-j721s2-evm-11_00_00_06、发现一个低概率问题:MCU2_0 的捕获任务在运行数天后停止。
我们添加了一些调试信息、并提供了以下指导:
1、摄像头输入流工作正常
图像数据路径 传感器-> deserialiazer -> soc csirx 工作正常、 pdk_j721s2_11_00_00_21/packages/ti/drv/csirx/csirx_drvUdma.c 中的 CsirxDrvDrv_udmaCQEventCb () src 查看事件 UDMA_event_type_DMA_completion 继续增加、queueCount 继续增加、queueCount 继续增加和 queCount 取消捕获
CsirxDrv_udmaCQEventCb() add capture stat print:
[MCU2_0] 116869.326646 s: [LOG]freeQ: 8 | curQ: 2 | doneQ: 0
[MCU2_0] 116869.326701 s: [LOG]chid 0 | queueCount: 2375630 | dequeueCount: 2375628 | dropCount: 545872 | errorFrameCount: 2894
[MCU2_0] 116869.326748 s: [LOG]chid 1 | queueCount: 2375630 | dequeueCount: 2375628 | dropCount: 545872 | errorFrameCount: 2894
[MCU2_0] 116869.326795 s: [LOG]chid 2 | queueCount: 2375630 | dequeueCount: 2375628 | dropCount: 545871 | errorFrameCount: 2893
[MCU2_0] 116869.326840 s: [LOG]chid 3 | queueCount: 2375630 | dequeueCount: 2375628 | dropCount: 545872 | errorFrameCount: 2894
[MCU2_0] 116869.326960 s: [LOG] Application call back
[MCU2_0] 116879.326593 s: [LOG]freeQ: 6 | curQ: 2 | doneQ: 2 ==> issue arise
[MCU2_0] 116879.326636 s: [LOG]chid 0 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546117 | errorFrameCount: 2894
[MCU2_0] 116879.326684 s: [LOG]chid 1 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546117 | errorFrameCount: 2894
[MCU2_0] 116879.326729 s: [LOG]chid 2 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546116 | errorFrameCount: 2893
[MCU2_0] 116879.326772 s: [LOG]chid 3 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546117 | errorFrameCount: 2894
[MCU2_0] 116889.326577 s: [LOG]freeQ: 6 | curQ: 2 | doneQ: 2
[MCU2_0] 116889.326619 s: [LOG]chid 0 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546367 | errorFrameCount: 2894
[MCU2_0] 116889.326665 s: [LOG]chid 1 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546367 | errorFrameCount: 2894
[MCU2_0] 116889.326709 s: [LOG]chid 2 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546366 | errorFrameCount: 2893
[MCU2_0] 116889.326753 s: [LOG]chid 3 | queueCount: 2375635 | dequeueCount: 2375633 | dropCount: 546367 | errorFrameCount: 2894
2. csirx 在出现问题时停止发出应用程序回调
pdk_j721s2_11_00_00_21/packages/ti/drv/csirx/ucsirx/csirx_drvUdma.c 中的调试代码 CsirxDrv_udmaCQEventCb () src:
if (CSIRX_DRV_CH_STATE_RUNNING == chObj->status)
{
/* Application call back */
if (UTRUE == appCb)
{
if(NULL != chObj->virtContext->fdmCbParams.fdmCbFxn)
{
(void)chObj->virtContext->fdmCbParams.fdmCbFxn(
chObj->virtContext->fdmCbParams.fdmData);
if (print_count % 1000 == 0)
{
GT_0trace(CsirxTrace, GT_INFO, "[LOG] Application call back \r\n");
}
}
else
{
GT_0trace(CsirxTrace, GT_INFO, "[LOG] appCb is null \r\n");
}
}
}
3.出现问题时 MCU2_0 捕获任务停止
[2026-02-27 09:05:33] [MCU2_0] 63915.340878 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.capture]
[2026-02-27 09:05:48] [MCU2_0] 63933.562500 s: VX_ZONE_ERROR: [ownTargetKernelExecute:472] Executing process callback for kernel [com.ti.capture]
[2026-02-27 09:05:48] [MCU2_0] 63933.562757 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.capture]
[2026-02-27 09:06:33] [MCU2_0] 63979.136837 s: VX_ZONE_ERROR: [ownTargetKernelExecute:472] Executing process callback for kernel [com.ti.capture]
[2026-02-27 09:06:33] [MCU2_0] 63979.140434 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.csitx]
[2026-02-27 09:06:33] [MCU2_0] 63979.140685 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.capture]
...
==>no more print after this time
[2026-02-27 09:06:33] [MCU2_0] 63979.340583 s: [LOG] Application call back
[2026-02-27 09:06:33] [MCU2_0] 63983.692449 s: VX_ZONE_ERROR: [ownTargetKernelExecute:472] Executing process callback for kernel [com.ti.hwa.vpac_msc_multi_scale]
[2026-02-27 09:06:33] [MCU2_0] 63983.699242 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.hwa.vpac_msc_multi_scale]
[2026-02-27 09:06:33] [MCU2_0] 63983.942787 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_AVMOUT_STATUS_CHECK
[2026-02-27 09:06:33] [MCU2_0] 63983.943118 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_AVMIN_LINK_CHECK
[2026-02-27 09:06:33] [MCU2_0] 63985.545032 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_AVMOUT_STATUS_CHECK
[2026-02-27 09:06:33] [MCU2_0] 63985.546635 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_AVMIN_LINK_CHECK
...
==>no more capture print after this time
[2026-02-27 09:06:47] [MCU2_0] 63997.354074 s: VX_ZONE_ERROR: [ownTargetKernelExecute:472] Executing process callback for kernel [com.ti.capture]
[2026-02-27 09:07:18] [MCU2_0] 64020.377786 s: VX_ZONE_ERROR: [ownTargetObjDescSendRefConsumed:126] Sending reference consumed event (data_ref_q=150, timestamp=64020377727000) !!!
[2026-02-27 09:07:50] [MCU2_0] 64040.718243 s: VX_ZONE_ERROR: [ownTargetKernelExecute:472] Executing process callback for kernel [com.ti.displaym2m]
[2026-02-27 09:07:50] [MCU2_0] 64040.724790 s: VX_ZONE_ERROR: [ownTargetKernelExecute:479] Done executing process callback for kernel [com.ti.displaym2m]
...
调试 代码 ownTargetKernelExecute () tiovx/source/framework/vx_target_kernel.c:
vx_status ownTargetKernelExecute(
tivx_target_kernel_instance target_kernel_instance,
tivx_obj_desc_t *obj_desc[], uint16_t num_params)
{
vx_status status = (vx_status)VX_FAILURE;
tivx_target_kernel knl = NULL;
static uint64_t print_count =1;
print_count++;
if ((NULL != target_kernel_instance) && (NULL != obj_desc))
{
/* Check if the kernel is valid */
knl = tivxTargetKernelInstanceGetKernel(target_kernel_instance);
if ((NULL != knl) && (NULL != knl->process_func))
{
ownPlatformActivate();
if (print_count % 1000 == 0)
{
VX_PRINT(VX_ZONE_ERROR, "Executing process callback for kernel [%s]\n", knl->kernel_name);
}
status = knl->process_func(
target_kernel_instance, obj_desc, num_params,
knl->caller_priv_arg);
if (print_count % 1000 == 0)
{
VX_PRINT(VX_ZONE_ERROR, "Done executing process callback for kernel [%s]\n", knl->kernel_name);
}
ownPlatformDeactivate();
if((vx_status)VX_SUCCESS != status)
{
/* making info since on a valid kernel process error, it will continuously print errors */
VX_PRINT(VX_ZONE_ERROR, "Kernel process function for [%s] returned error code: %d\n", knl->kernel_name, status);
}
}
else
{
VX_PRINT(VX_ZONE_ERROR, "Kernel process function is NULL\n");
status = (vx_status)VX_FAILURE;
}
}
return (status);
}
祝你一切顺利
Zhao Li