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.

TDA4VM: 在Fusion1扩展板连接SONY IMX623摄像头无法启动

Part Number: TDA4VM


硬件:
开发板:TDA4VM
扩展板:Fusion1 Board
Sensor:IMX623-UB953_SONY
系统:Linux + RTOS
现状:同一软件,在
U-Boot SPL 2019.01-g350f3927b8 (Feb 17 2020 - 09:48:06 +0000)
Detected: J7X-BASE-CPB rev E2
Detected: J7X-INFOTAN-EXP rev E3
Detected: J7X-VSC8514-ETH rev E2
Trying to boot from MMC2
SoC:   J721E PG 1.0
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM1-SOM rev E2
版本的硬件上可以正常运行
U-Boot SPL 2019.01-g350f3927b8 (Feb 17 2020 - 09:48:06 +0000)
Detected: J7X-BASE-CPB rev A
Detected: J7X-VSC8514-ETH rev E2
Trying to boot from MMC2
SoC:   J721E PG 2.0
Model: Texas Instruments K3 J721E SoC
Board: J721EX-PM2-SOM rev A
版本的硬件上无法正常运行。
完整log如附加文档
问题:这两个版本的硬件有什么具体差异,是否在软件中需要进行什么配置修改?
我们测试使用的软件base是TI vision app提供的single camera demo,在此基础上做了本地修改
  • 不确定这是否与电路板相关,但我看到一些target没有在 mcu2_1 核心上注册。根据以下错误,某些target无法注册。您在另一块板上也看到同样的错误吗?

    [MCU2_1] 13.408525 s: VX_ZONE_ERROR:[tivxTargetCreate:1260] tivxTargetCreate: target is NULL
    [MCU2_1] 13.408619 s: VX_ZONE_ERROR:[tivxPlatformCreateTargetId:55] Could not Add Target

    我还看到所有 VHWA 节点和 CSIRX 都在 mcu2_1 核心上运行。默认情况下,在 SDK 中,它们在 mcu2_0 上运行。因此,这不是问题,但是将它们移动到 mcu2_1 有什么具体原因吗?

    即使是 IPC Echo 测试也没有在所有内核上正确运行,例如下面的 C7x 无法找到 mcu2_0 和 mcu2_1 内核。您能否使用 CCS + JTAG 连接到所有内核并确认它们都运行良好并且没有卡住/崩溃?

    [C7x_1 ] 13.054302 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[x] C7X_1[s]
    [C7x_1 ] 13.054639 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[P] C7X_1[s]

  • 不确定这是否与电路板相关,但我看到一些target没有在 mcu2_1 核心上注册。根据以下错误,某些target无法注册。您在另一块板上也看到同样的错误吗?

    [MCU2_1] 13.408525 s: VX_ZONE_ERROR:[tivxTargetCreate:1260] tivxTargetCreate: target is NULL
    [MCU2_1] 13.408619 s: VX_ZONE_ERROR:[tivxPlatformCreateTargetId:55] Could not Add Target

    answer : 是的,在另一块可以正常工作的板子上这些target同样没有注册

    我还看到所有 VHWA 节点和 CSIRX 都在 mcu2_1 核心上运行。默认情况下,在 SDK 中,它们在 mcu2_0 上运行。因此,这不是问题,但是将它们移动到 mcu2_1 有什么具体原因吗?

    answer :这应该不影响软件工作,正常运行的板子也是同样配置的

    即使是 IPC Echo 测试也没有在所有内核上正确运行,例如下面的 C7x 无法找到 mcu2_0 和 mcu2_1 内核。您能否使用 CCS + JTAG 连接到所有内核并确认它们都运行良好并且没有卡住/崩溃?

    [C7x_1 ] 13.054302 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[x] C7X_1[s]
    [C7x_1 ] 13.054639 s: IPC: Echo status: mpu1_0[x] mcu2_0[x] mcu2_1[x] C66X_1[P] C66X_2[P] C7X_1[s]

    answer :两个板子的IPC Echo测试结果是一致的,另外我们也试过将软件都放在mcu2_1上运行,但是还是一块板子正常,另一块无法正常运行

    PS:请麻烦确认一下Alpha board和beta board 在板子的硬件开关是否有什么不同的配置?

  • 已为您联系TI资深工程师,一旦得到回复会立刻回复给您

  • 我在调试时发现,目前问题出现在:

    app_create_graph->vxVerifyGraph->ownGraphNodeKernelInit->ownNodeKernelInit-

    ->ownContextSendCmd->tivxEventWait

    在这里 tivxEventWait调用的参数是TIVX_EVENT_TIMEOUT_WAIT_FOREVER,但是一直等不到Event,就一直卡在这里了。请问这里可能有什么原因会导致Context发送命令后等不到事件相应呢?

  • 您在在这个板上有 JTAG + CCS 可用吗?如果是,您能连接到 mcu2_0 看看 JTAG + CCS 在哪里吗?

    如果由于某种原因,mcu2_0 已崩溃,则创建将无法完成,图形验证将卡在此处。

  • 您能否在捕获节点的创建 API 上添加一些print,看看它是否被调用?

    从上面的日志来看,捕获节点似乎已注册到框架中,但可能以某种方式未被调用。

    您还确定在创建捕获节点时验证图卡住了吗?您能检查一下它因哪个创建而卡住了吗?

  • success board log:
        17.335575 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 1
        17.335581 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 3
        17.335585 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 2
        17.335589 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 0
        17.335592 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 6
    [MCU2_1]     48.415648 s:  VX_ZONE_INFO:[tivxTargetKernelInstanceAlloc:101] tivxTargetKernelInstanceAlloc: attempting to call kernel com.ti.capture on this CPU
        17.343757 s:  VX_ZONE_INFO:[ownGraphNodeKernelInit:578] kernel init for node 0, kernel com.ti.capture ...
        17.343763 s:  VX_ZONE_INFO:[ownGraphNodeKernelInit:589] kernel init for node 0, kernel com.ti.capture ... done !!!
        17.346831 s:  VX_ZONE_INFO:[ownGraphNodeKernelInit:578] kernel init for node 1, kernel com.ti.hwa.vpac_viss ...
        17.346836 s:  VX_ZONE_INFO:[ownGraphNodeKernelInit:589] kernel init for node 1, kernel com.ti.hwa.vpac_viss ... done !!!

    failed board log:
    17.335575 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 1
        17.335581 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 3
        17.335585 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 2
        17.335589 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 0
        17.335592 s:  VX_ZONE_INFO:[ownGraphRegisterParameterConsumedEvent:897] Enabling parameter ref consumed event at graph [graph_85], param 6
    [MCU2_1]     48.415648 s:  VX_ZONE_INFO:[tivxTargetKernelInstanceAlloc:101] tivxTargetKernelInstanceAlloc: attempting to call kernel com.ti.capture on this CPU

    对比可以正常运行的板子的log,可以确认是在调用函数ownNodeKernelInit(),初始化com.ti.capture 时在 tivxEventWait()里等不到event->is_set==1U卡住的

    while(!done)
    {
    if(event->is_set==1U)
    {
    /* clear event */
    event->is_set = 0;
    status = (vx_status)VX_SUCCESS;
    done = (vx_bool)vx_true_e;
    }
    else
  • 为您咨询TI资深工程师,稍后给您回复

  • 这里卡住是因为没有来自节点的响应,因此您可以在捕获节点创建 API 中添加一些打印以查看它是否已收到创建消息。