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:vxGraphParameterEnqueeReadyRef 的 CSIRX 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref

器件型号:TDA4VM

您好,专家

我正在使用 single_cam demo 从 ISP 处理器(OAX4000)获取 mipi 信号。OAX4000已经通过 CSIRX1感应 mipi。

我进行了一些更改、但当代码运行到函数 vxGraphParameteEnqueueReadyRef 时、代码会被占用。 我检查了代码、认为设置正常。

MIPI: 4通道、1472Mbps/通道、VC0:YUV422-8、3840X2170@30fps

sensor_drv 中的设置如下所示:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static IssSensor_CreateParams oax4000CreatePrms = {
SENSOR_OV_OAX4000_M96717, /*sensor name*/
0x1, /*i2cInstId*/
{0x36, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSensor*/
{0x42, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSer*/
/*IssSensor_Info*/
{
{
OAX4000_OUT_WIDTH, /*width*/
OAX4000_OUT_HEIGHT, /*height*/
1, /*num_exposures*/
vx_false_e, /*line_interleaved*/
{
{VX_DF_IMAGE_UYVY, 7}, /*dataFormat and MSB [0]*/
},
0, /*meta_height_before*/
0, /*meta_height_after*/
},
ISS_SENSOR_OAX4000_FEATURES, /*features*/
ALGORITHMS_ISS_AEWB_MODE_NONE, /*aewbMode*/
30, /*fps*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

此外、我在 single_cam 演示中的函数 app_create_graph 中进行了一些更改:

Fullscreen
1
2
3
4
5
printf("########################## OAX4000 !!!!!!\r\n");
local_capture_config.instId[0] = 1;
local_capture_config.chInstMap[0] = 1U;
local_capture_config.instCfg[0].laneBandSpeed = TIVX_CAPTURE_LANE_BAND_SPEED_1350_TO_1500_MBPS;
local_capture_config.chVcNum[0] = 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

演示日志为:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@j7-evm:~# /opt/vision_apps/vx_app_single_cam.out
APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=4) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
171.282926 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
171.286469 s: VX_ZONE_INIT:Enabled
171.286495 s: VX_ZONE_ERROR:Enabled
171.286503 s: VX_ZONE_WARNING:Enabled
171.292925 s: VX_ZONE_INIT:[tivxInit:71] Initialization Done !!!
171.293097 s: VX_ZONE_INIT:[tivxHostInit:48] Initialization Done for HOST !!!
Single Camera Demo - (c) Texas Instruments 2019
========================================================
Usage,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

CSIRX 似乎没有接收到信号、但我不知道为什么、所有更改看起来都是正确的

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

    我已经解决了这个问题

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

    您能帮助我们了解哪些改变使其正常工作吗? 是否需要在驱动程序/设置/配置中进行任何更改?

    此致、

    Brijesh

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

    您好、Brijesh、

    实际上、我没有完全解决这个问题

    我使用了 Fvid2接口 并 成功获得了图像、 这对我来说已经足够了。另一方面、我认为 CSIRX 驱动程序工作正常、因此给传感器 drv 剂量。 在 single_cam 演示中、可能有问题。您对此有什么想法吗? 谢谢。

    此致、

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

    赵好、

     您使用的是哪个 SDK 版本? 在早期 SDK 版本中、假设通道速度为1.5Gbps。 您需要更改代码以更新其他通道速度。  

    此致、

    Brijesh

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

    您好 、Brijesh、

    SDK Ver 7.3中、我更新了通道速度、但仍然无法正常工作。在什么情况下会将 vxGraphParameterEnqueueReadyRef 占用?

    此致,

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

    赵好、

    vxGraphParameterEnqueeReadyRef API 不应卡住。 通常情况下、由于捕获不起作用、我已经看到 DequeDoneRef 卡滞。 但是 EnqueueReadyRef 只是为节点提供新的缓冲区。

    您确定它是 EnqueueReadyRef 吗?

    此致、

    Brijesh

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

    您好  Brijesh,

    [报价 userid="80721" URL"~/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref/3875685 #3875685"]您确定它是 EnqueueReadyRef 吗?

    是的,我确定。 我在 函数 app_run_graph 中进行了一些调试打印。  

    [引用 userid="80721" URL"~/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref/3875685 #3875685"] EnqueueReadyRef 仅为节点提供新的缓冲区。

    我将检查我所做的所有更改、以查看这些更改是否会解决问题。

    谢谢。

    此致、

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

    您好、Brijesh、

    我仍然不知道 为什么 EnqueueReadyRef 被占用。 我 使用 fvid2接口获得了正确的图像。 因此、这意味着 CSIRX 是正确的、传感器驱动器也是正确的。

    图像大小为4K@30 YUV。 因此、在单个凸轮演示中、VISS&LDC 状态为禁用(LDC&VISS 不支持 YUV)、 只剩下捕获节点和显示节点。 由于分频器不工作,显示节点也不应工作。 基于这些、只能使用捕获节点、我可能通过命令"SAVE"获取映像。 但它被吸入函数  EnqueueReadyRef 。

    1.如何确认捕获节点工作正常?

    2.我 是否正确操作了 single_cam? (可能只有捕获节点工作)

    我只想先获取图像。 在我获得正确的图像后、将添加着色空间和定标器。

    希望您能回答。

    谢谢。

     

    此致、

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

    赵好、

    在共享代码中、捕获输出分辨率是多少? 您提到捕获是 YUV422格式、LDC 使能标志设置为 false。 在代码中、我看到以下情况、这意味着如果捕获分辨率不是显示分辨率、它将启用标量、但 标量不支持 YUV422格式。 能否确保在图形中禁用标量? 因此捕获输出应直接连接到显示屏。

    否则((image_width!= obj->display_params.outWidth)||(image_height!= obj->display_params.outHeight))

      obj->scaler_enable = vx_tru_e;

    哪个排队参考呼叫被卡住? 它是否位于下方? 此外,代码中是否启用了测试模式(obj->test_mode)?  

    app_printf ("11111111 vxGraphParameterEnqueueReadyRef\n");
    status = vxGraphParameterEnqueueReadyRef (obj->graph, 0、(vx_reference*)&(obj->cap_frames[buf_id])、1);
    app_printf ("2222222222 vxGraphParameterEnqueeReadyRef\n");

    您能否检查是否在以下代码中正确分配了所有对象数组?

    for (buf_id=0;buf_id num_cap_buf;buf_id++)

      if (status == vx_Success)
      {
        obj->cap_frames[buf_id]= vxCreateObjectArray (obj->context、(vx_reference) capt_yuV_image、num_caption_frames);
        status = vxGetStatus (((vx_reference) obj->cap_frames[buf_id]);
      }

    此致、

    Brijesh

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

    您好、Brijesh、

    感谢您的回复。

    1。

    [引用 userid="80721" URL"~/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref/3884398 #3884398"]

    能否确保在图形中禁用标量? 因此捕获输出应直接连接到显示屏。

    否则((image_width!= obj->display_params.outWidth)||(image_height!= obj->display_params.outHeight))

      obj->scaler_enable = vx_tru_e;

    [/报价]

    禁用定标器。 由于 obj->cat_yuV_image 不是 NULL、因此 scaler_enable = vx_false_e

    if (NULL!= obj->capt_yuV_image)

    /*MSC 不支持 YUV422输入*/
    obj->scaler_enable = vx_false;

    否则((image_width!= obj->display_params.outWidth)||(image_height!= obj->display_params.outHeight))

    obj->scaler_enable = vx_tru_e;

    2.

    [引用 userid="80721" URL"~/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref/3884398 #3884398">您是否还在代码中启用了测试模式(obj->test_mode)?  [/报价]

    测试模式被禁用。

    3.

    [报价 userid="80721" URL"~/support/processors-group/processors/f/processors-forum/1047240/tda4vm-csirx-problem-with-vxgraphparameterenqueuereadyref/3884398 #3884398"]是否还可以检查是否在以下代码中正确分配了所有对象数组?

    Allocate 的状态为0。

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

    以下是日志:

    e2e.ti.com/.../1817.log.txt

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

    我还在 tivxCaptureProcess,中添加了一些打印内容,但程序从未出现,看起来 captureProcess 从未运行。 所以 fvid2没有启动并且排队

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

    您好、Brijesh、

    好消息、我们现在可以成功获取映像。此问题是由于 TIvxCaptureProcess 未运行。 我们编辑了 Linux 内核中的 mm.c 来修复总线错误问题、但此更改以某种方式影响了进程的运行。我将启动有关总线错误问题的新线程。此问题将关闭。感谢您的帮助。

    此致、