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.

[参考译文] PROCESSOR-SDK-J722S:vxVerifyGraph 接口卡滞

Guru**** 2486065 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1550239/processor-sdk-j722s-the-vxverifygraph-interface-is-stuck

器件型号:PROCESSOR-SDK-J722S


工具/软件:

尊敬的专家:

我们之前建立了图像数据链路:4 个摄像头->串行器/解串器->捕获 (csi0-Rx)-> CSI-TX

现在、我们只想替换 CSI-Rx 接口、并将其从 csi0-rx 更改为 csi2-rx。

我已修改 Capture parameters。 “instId"和“和“chInstMap"均“均已从 0 更改为 2。

#define CAPTURE_ERROR_FRAME_TIME_WAIT    100          //ms
#define NUM_CAPT_CHANNELS_TOTAL     (4u)
#define NUM_CAPT_INST               (1u)
#define CSI_INST_PORT_0             (0u)
#define CSI_INST_PORT_1             (1u)
#define CSI_INST_PORT_2             (2u)

static void set_capture_default_params(CaptureObj *captureObj, vx_int32 width, vx_int32 height, vx_int32 numCh)
{
    vx_uint32 loop_id, instIdx, chIdx;

    /* Capture initialization */
    tivx_capture_params_init(&captureObj->params);

    /* capture will dalay 2000ms if no frame available */
    captureObj->params.timeout        = CAPTURE_ERROR_FRAME_TIME_WAIT;
    captureObj->params.timeoutInitial = CAPTURE_ERROR_FRAME_TIME_WAIT;

    captureObj->params.numInst = NUM_CAPT_INST;
    captureObj->params.numCh = NUM_CAPT_CHANNELS_TOTAL;

    chIdx = 0U;
    for (instIdx = 0U; instIdx < NUM_CAPT_INST; instIdx++)
    {
        captureObj->params.instId[instIdx] = CSI_INST_PORT_2;
        captureObj->params.instCfg[instIdx].laneBandSpeed = TIVX_CAPTURE_LANE_BAND_SPEED_1350_TO_1500_MBPS;       /* used for AVM, 4CH-1280*720@25Fps */
        //captureObj->params.instCfg[instIdx].laneBandSpeed = TIVX_CAPTURE_LANE_BAND_SPEED_560_TO_640_MBPS;
        captureObj->params.instCfg[instIdx].enableCsiv2p0Support = (uint32_t)vx_true_e;
        captureObj->params.instCfg[instIdx].numDataLanes = 4U;

        for (loop_id = 0U; loop_id < captureObj->params.instCfg[instIdx].numDataLanes; loop_id++)
        {
            captureObj->params.instCfg[instIdx].dataLanesMap[loop_id] = (loop_id + 1u);
        }

        for (loop_id = 0U; loop_id < numCh; loop_id++)
        {
            captureObj->params.chInstMap[chIdx] = CSI_INST_PORT_2;
            chIdx++;
        }

        /* set the order of cam channel: 0-front, 1-rear, 2-left, 3-right */
        captureObj->params.chVcNum[0] = 0;
        captureObj->params.chVcNum[1] = 1;
        captureObj->params.chVcNum[2] = 2;
        captureObj->params.chVcNum[3] = 3;
    }

    captureObj->numCH = NUM_CAPT_CHANNELS_TOTAL;

    captureObj->img_info.width = width;
    captureObj->img_info.height = height;
    captureObj->img_info.dataFormat = VX_DF_IMAGE_UYVY;

    strcpy(captureObj->name_Target, TIVX_TARGET_CAPTURE1);
    strcpy(captureObj->name_NodeObj, "CaptureNode");

}

但是、在运行捕获节点后、发现 vxVerifyGraph 接口卡滞

当我将捕获的参数从 2 更改回 0 时、不再出现此问题。

此外,我检查了 vxVerifyGraph 接口卡住的位置,它位于 ownGraphNodeKernelInit 部分。

您能帮我检查捕获参数中是否有我修改过的遗漏吗?

谢谢!

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

    尊敬的 Cheng:

    如果您查看远程内核日志、您可能会在捕获节点的 create_callback 中看到一些错误。

    您能分享一下吗?

    此外、截至目前、CAPTURE_NODE 中不支持实例 2 和 3、仅支持 0 和 1。

    此致、
    Gokul

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

    尊敬的 Gokul:

    没有像[MCU2_0]这样的日志

    root@Linux:/opt/vision_apps/invo_video_io_test# ./invo_video_io_test.out
    APP: Init ... !!!
        66.100384 s: MEM: Init ... !!!
        66.100482 s: MEM: Initialized DMA HEAP (fd=5) !!!
        66.100713 s: MEM: Init ... Done !!!
        66.100733 s: IPC: Init ... !!!
        66.105654 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
        66.118639 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
    appCommonInit  success  !
        66.129453 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
        66.129497 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
        66.129508 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
        66.130725 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-0
        66.130922 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-1
        66.131053 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-2
        66.131167 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:169] Added target MPU-3
        66.131185 s:  VX_ZONE_INFO: [tivxInitLocal:202] Initialization Done !!!
        66.131202 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    [CAPTURE_MODULE]: errorframe_Y: data_ptr=0xffff99398000, size = 2457600, dim_y = 960, stride_y = 2560
    captureObj init done!
    csiTxObj init done!
    graph Set Reference Name  Success !!
    captureObj node graph done  !
    csiTx node graph done !
    vxSetGraphScheduleConfig done !
    tivxSetGraphPipelineDepth done !

    如果我想添加实例 2、我应该如何进行修改?

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

    尊敬的 Cheng:

    在运行应用程序之前、应运行“source ./vision_apps_init.sh“以查看远程内核日志。

    如果我要添加实例 2、我应该如何进行修改?

    我将在下周回复您。

    此致、
    Gokul

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

    尊敬的 Cheng:

    如果我要添加实例 2、我应该如何进行修改?

    您必须在 video_io 存储库中修改 capture_node、我将给您一些更改、以便在 2 天内继续。

    提示、您必须在此函数$(psdkra)/video_io/kernels/video_io/capture/vx_capture_target.c 中添加实例 2 和 3

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您的答复。 此问题已解决。

    但在 CSI-TX 模块中还出现了另一个问题。

    图为 30fps、如下所示。

    但是、CSI-TX 模块后端的串行器显示没有接收到数据。

    I measured、MIPI 数据通道和时钟通道上都存在有效波形。

    最后、我发现、通过对 CSI-TX (0x30181020) 执行两次软复位、串行器显示其已接收到数据。

    但是、我们以前从未在 j721e 和 j721s2 上遇到过此类问题。

    您能帮我弄清楚为什么会有这样的差异吗?

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

    尊敬的 Cheng:

    、但随后 CSI-TX 模块中出现了另一个问题。

    您能否为此提出另一个主题、因为它偏离了主题。

    此致、
    Gokul