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.

[参考译文] TDA4VE-Q1:运行几天后、[TDA4VE][SDK-RTOS-j721s2-EVM-11_00_00_06]捕获任务停止

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1620731/tda4ve-q1-tda4ve-sdk-rtos-j721s2-evm-11_00_00_06-capture-task-stopped-after-running-several-day

器件型号: 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

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

    更新:
        应用程序在 ownDataRefQueueWaitDoneRef () 中被阻止  ,调用 vxGraphParameterDequeueDoneRef (),因为应用程序无法使引用进入队列, 无法触发目标内核捕获运行。
        在这种情况下、 不会执行 CsirxDrv_queue ()  、这导致 CurQ <=1、 PTR_addr 设置为  frameDropBuf、不会 再次触发应用程序回调。
        因此,真正的问题是, 由于 csirx 驱动程序似乎正在工作,为什么应用程序 在 ownDataRefQueueWaitDoneRef () 中被阻止  并等待 data_ref_q->wait_done_ref_available_event  ?

    祝你一切顺利
    Zhao Li

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

    您好、Zhao、

     您是否在数据路径中使用 LDC?由于 HWA 模块之一、很可能图形会卡住? 最简单的修复方法是  在 vhwa/LDC/drv/vhwa_m2mLdcApi.c 文件中将 enableWdTimer 标志设置为 false、从而禁用 src 中的超时。 您可以尝试进行此更改吗?

    我在下面的链接创建了常见问题以在创建时禁用此功能、并提供了相同的界面、您甚至可以尝试这些更改。

    (+)【常见问题解答】J721S2XSOMXEVM:在 VHWA 模块 — 处理器论坛-处理器 — TI E2E 支持论坛中提供启用/禁用和配置 WDG 计时器的接口

    此致、

    Brijesh

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

    您好 brijesh、
        非常感谢您的回复、是的、我们在数据路径中使用 LDC/MSC、  也使用 CSITX/DPM2M1 进行图像输出以进行显示。
         

         

    CPU: mcu2_0: TASK:      FREERTOS_TA:   0. 0 %
    CPU: mcu2_0: TASK:           IPC_RX:   0. 3 %
    CPU: mcu2_0: TASK:       REMOTE_SRV:   0. 5 %
    CPU: mcu2_0: TASK:        LOAD_TEST:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CPU_0:   0. 0 %
    CPU: mcu2_0: TASK:        TIVX_V1NF:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_V1LDC:   1. 7 %
    CPU: mcu2_0: TASK:      TIVX_V1MSC1:   1.73 %
    CPU: mcu2_0: TASK:      TIVX_V1MSC2:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_V1VISS:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT1:   0.42 %
    CPU: mcu2_0: TASK:       TIVX_CAPT2:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT3:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT4:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT5:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT6:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT7:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT8:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_DISP1:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_DISP2:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CSITX:   0.34 %
    CPU: mcu2_0: TASK:      TIVX_CSITX2:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M1:   0.65 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M2:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M3:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M4:   0. 0 %
    CPU: mcu2_0: TASK:        TIVX_V1FC:   0. 0 %
    CPU: mcu2_0: TASK:      IPC_TEST_RX:   0. 0 %
    CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
    CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
    CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
    
    CPU: mcu2_0: HEAP:    DDR_LOCAL_MEM: size =   14680064 B, free =   14609664 B ( 99 % unused)
    CPU: mcu2_0: HEAP:           L3_MEM: size =     524288 B, free =     524032 B ( 99 % unused)
    CPU: mcu2_0: HEAP:  DDR_CACHE_WT_ME: size =    2097152 B, free =    2096896 B ( 99 % unused)


         我们有两个 ECU、可以在 48 小时内重复此问题、 我们将尝试在   LDC 和 MSC 中禁用超时、并与您同步测试报告。

    祝你一切顺利
    Zhao Li

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

    您好、Zhao、

    您 目前是否有存在此问题的 ECU? 我们可以转储很少的寄存器来确认这一点。  

    此致、

    Brijesh

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

    您好 brijesh、
      是的、   ECU 现在存在问题。 请向我展示注册表,我将 用 devmem2 工具读取它们。  

    祝你一切顺利
    Zhao Li

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

    您好、Li、

     您正在使用哪个 CSIRX 实例?  我可以为您提供一个 GEL 脚本、转储寄存器以供进一步检查。

    Linjun

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

    您好 linjun、
       它‘的 CSIRX 实例 0、感谢您的帮助。

    祝你一切顺利
    Zhao Li

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

    您好、Zhao、

    在重现此问题的 ECU 上、您是否可以转储 偏移 0x3810000 的 8 个寄存器并共享它们的值?  

    此致、

    Brijesh

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

    您好、Brijesh、
       寄存器值如下所示:
       

    root@imotion:~# devmem2 0x3810000
    /dev/mem opened.
    Memory mapped at address 0xffff9f64e000.
    Read at address  0x03810000 (0xffff9f64e000): 0x00000000
    root@imotion:~# devmem2 0x3810004
    /dev/mem opened.
    Memory mapped at address 0xffff86b70000.
    Read at address  0x03810004 (0xffff86b70004): 0x00000001
    root@imotion:~# devmem2 0x3810008
    /dev/mem opened.
    Memory mapped at address 0xffff82e98000.
    Read at address  0x03810008 (0xffff82e98008): 0x00000000
    root@imotion:~# devmem2 0x381000c
    /dev/mem opened.
    Memory mapped at address 0xffffa4d18000.
    Read at address  0x0381000C (0xffffa4d1800c): 0x00000000
    root@imotion:~# devmem2 0x3810010
    /dev/mem opened.
    Memory mapped at address 0xffffb8452000.
    Read at address  0x03810010 (0xffffb8452010): 0x00000000
    root@imotion:~# devmem2 0x3810014
    /dev/mem opened.
    Memory mapped at address 0xffffbe80c000.
    Read at address  0x03810014 (0xffffbe80c014): 0x00000000
    root@imotion:~# devmem2 0x3810018
    /dev/mem opened.
    Memory mapped at address 0xffffb4775000.
    Read at address  0x03810018 (0xffffb4775018): 0x00000000
    root@imotion:~# devmem2 0x381001c
    /dev/mem opened.
    Memory mapped at address 0xffffb0918000.
    Read at address  0x0381001C (0xffffb091801c): 0x00000000
    
     
       
       
       我们将超时时间从永远等待改为 1 秒,因此 应用程序将反复调用 API vxGraphParameterDequeueDoneRef (),但它现在每次都会报告“等待事件超时“。
       共享给您参考、在禁用 LDC 和 MSC 模块的看门狗计时器后、在另一个 ECU 上进行 40 小时测试后、问题仍未重现。

    祝你一切顺利
    Zhao Li

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

    您好、Zhao、

    问题是由于下面的寄存器导致的。 说 LDC 被卡住。 这很可能是因为我们启用了 WDG 功能。 因此、在这种情况下、禁用此功能应该有所帮助。  

    在地址 0x03810004 (0xff86b70004) 处读取: 0x00000001

    此致、

    Brijesh

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

    您好、Brijesh、
       正常启动后、从 0x03810004 读取的值为 0x00000001。这有点令人费解、LDC 从开始就卡滞、但它仅导致整个图形在长时间运行后冻结?
       此外、我们测量了 LDC 模块的执行时间、每次运行大约需要 20ms。
       进行此修改后、我们将继续观察测试结果。 如果这个问题本周没有再出现、我们将得出结论、即该问题已经得到解决。
       再次感谢您的帮助~

    祝你一切顺利
    Zhao Li

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

    您好、Zhao、

    嗯、如果该位保持设置的时间较长、LDC 会卡住、然后包含 LDC 的图形也会卡住。  

    是的、请在 LDC 中禁用 WDG 功能、如果可能、在所有模块中禁用 WDG 功能。  

    此致、

    Brijesh

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

    尊敬的 Zhao:

    我可以询问 这是否有助于解决问题? 请您告知我们您一方的状态吗?

    是的、请在 LDC 中禁用 WDG 功能、如果可能、在所有模块中都禁用 WDG 功能。  [/报价]

    非常感谢!

    Yong

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

    您好、
      在 LDC 和 MSC 中禁用 WDG 功能后、在两个 ECU 上经过一周的测试后、未重现此问题。 我们认为问题已解决。  
      非常感谢您的帮助!
    祝你一切顺利
    Zhao Li