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:VISION_APP vxVerifyGraph 中的 DMA 错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1281973/tda4vm-dma-errors-in-vision_app-vxverifygraph

器件型号:TDA4VM

您好、TI 专家:

我们开发了一个类似于 vision_apps 中的 app_multi_cam 的应用。 并且在 Linux SDK7.3和 RTOS SDK7.3中可以正常工作。

现在、我们将 Linux SDK 和 RTOS SDK 升级到8.5、如下日志所示会发生 DMA 错误。

内存:初始化...!!!
MEM:已初始化 DMA 堆(FD=4)!!!
内存:初始化...完成!!
IPC:初始化...!!!
IPC:初始化...完成!!!
remote_service: init ...!!!
remote_service: init……done!!!
    0.000000s:GTC 频率= 0 MHz
应用程序:初始化...完成!!
    0.000000 s: vx_zone_init:已启用
    0.000000 s: vx_zone_error:已启用
    0.000000 s: vx_zone_warning:已启用
    0.000000 s: vx_zone_init:[tivxInitLocal:145] Initialization done!!
    0.000000 s: vx_zone_init:[tivxHostInitLocal:93]主机初始化已完成!

[APP INIT INFO]CMS LANES NUMBER = 4!
[APP INIT INFO]CMS SENSOR NUMBER = 2!
[应用程序初始   化信息]传感器初始化完成!
[APP INIT INFO -> Capture] CaptureObj->params.numDataLane = 4
[APP INIT INFO -> Capture] CaptureObj->params.dataLanesMap[0] = 1
[APP INIT INFO -> Capture] CaptureObj->params.dataLanesMap[1] = 2
[APP INIT INFO -> Capture] CaptureObj->params.dataLanesMap[2] = 3
[APP INIT INFO -> Capture] CaptureObj->params.dataLanesMap[3] = 4
内存:错误:/dev/dma-buf-phys 打开失败!!
内存:错误:大小的内存分配=216字节、失败且状态=-1!!
DDR_SHARED_MEM:分配:0个分配、共0字节
DDR_SHARED_MEM:free's:0 free's of 0 bytes
DDR_SHARED_MEM:open 的:0个 字节的分配
DDR_SHARED_MEM:总大小:536870912字节
内存:错误:翻译 dmaBufFd 失败[22]

我像7.3 SDK 中那样修改8.5 Linux dma 驱动程序 dma-buf-phys.c。

8.5sdk dma-buf-phys.c 条目:

module_platform_driver (dma_buf_phys_driver);

替换为以下代码:

静态 int __init dma_buf_phys_init (void)
{
struct platform_device * pdev;
Int ret;

REt = platform_driver_register (&dma_buf_phys_driver);
IF (RET)
返回支架;

pdev = platform_device_register_simple ("dma_buf_phys"、-1、NULL、0);

返回 ptr_ERR_or_zero (pdev);

device_initcall (dma_buf_phys_init);


更新上述代码后,我编译了一个新的 Linux 内核并再次运行应用程序。

/dev/dma-buf-phys 打开问题已解决。 但 MCU2_0显示错误和 A72 vxVerifyGraph 失败。

MCU2_0错误日志:

函数:CpswProxyServer_filterAddMacHandlerCb、hostid:0、handle:a381b204、CoreKey:38acb7e6、MacAddress:33:33:0:0:fb、vlanid:0、FlowIdx:172、FlowIdOffset:0
[MCU2_0] 16.982615 s:[uDMA]
[MCU2_0] 16.982682 s:[ERROR] RM PSI 配对失败!!!
[MCU2_0] 16.982719 s:[uDMA]
[MCU2_0] 16.982739 s:[错误] uDMA 通道配对失败!!
[MCU2_0] 16.982802 s:src / csirx_drvUdma.c @第246行:
[MCU2_0] 16.982836 s:[ERROR]UDMA 通道打开失败!!!
[MCU2_0] 16.982884 s:src / csirx_drv.c @行1544:
[MCU2_0] 16.982914 s:[ERROR]UDMA 通道关闭失败!!!
[MCU2_0] 16.982953 s:src / csirx_drv.c @行1544:
[MCU2_0] 16.982982 s:[ERROR]UDMA 通道关闭失败!!!
[MCU2_0] 16.983019 s:src / csirx_drv.c @第402行:
[MCU2_0] 16.983048秒:给定配置的创建失败
[MCU2_0] 16.983088 s:src / fvid2_drvMgr.c @第759行:
[MCU2_0] 16.983116 s:驱动程序创建失败!!
[MCU2_0] 16.983161 s:vx_zone_error:[tivxCaptureCreate:1206]:捕获创建失败!!
[MCU2_0] 17.268732 s:Q212x_reset:hPhy1处的 Q212x_reset phy2112
[MCU2_0] 22.668676 s:Q212x_RESET:hPhy1处的 Q212x_RESET phy2112
[MCU2_0] 28.068683 s:Q212x_reset:hPhy1处的 Q212x_reset phy2112
[MCU2_0] 33.468749秒:Q212x_reset:hPhy1处的 Q212x_reset phy2112
[MCU2_0] 38.868728 s:Q212x_RESET:hPhy1处的 Q212x_RESET phy2112
[MCU2_0] 44.268676 s:Q212x_RESET:hPhy1处的 Q212x_RESET phy2112
[MCU2_0] 49.668621:Q212x_reset:hPhy1处的 Q212x_reset phy2112
[MCU2_0] 55.068689 s:Q212x_reset:Q212x_reset phy2112 at hPhy1[MCU2_0] 6.432616 s Enet_So:&INF@ETH:C212x_RESET Open[163] Exit。

A72错误日志:

创建任务信息]应用程序交互任务创建...
0.000000 s:vx_zone_error:[ownContextSendCmd:802]命令确认消息返回失败 cmd_status:-1
0.000000 s:vx_zone_error:[ownContextSendCmd:838] tivxEventWait ()失败。
0.000000 s:vx_zone_error:[ownNodeKernelInit:525]目标内核,TIVX_CMD_NODE_CREATE 节点图形 Display_node 失败
0.000000 s:vx_zone_error:[ownNodeKernelInit:526]请确保目标回调已为此内核注册
0.000000 s:vx_zone_error:[ownNodeKernelInit:527]如果目标回调已注册,请确保在此内核的创建回调中没有出现错误
0.000000 s:vx_zone_error:[ownGraphNodeKernelInit:583]适用于节点0的内核初始化,内核 com.ti.hwa.display……失败!!
0.000000 s:vx_zone_error:[vxVerifyGraph:2055]节点内核初始化失败
0.000000 s:vx_zone_error:[vxVerifyGraph:2109]图形验证失败

您能帮助我找到根本原因吗?

非常感谢!

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

    您好!

    MEM:错误:/dev/dma-buf-phys 打开失败!!

    在 SDK 8.5上运行 SDK 演示时是否看到此错误?

    或者、在运行应用时出现这个问题?

    此致、

    尼基尔

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

    你好  Nikhil Dasan:

    当我运行自己的应用程序时、此错误日志会显示。

    但如果我不添加源代码 pdev = platform_device_register_simple ("dma_buf_phys"、-1、NULL、0);在 origin  Linux SDK 8.5的 dma-buf-phys.c 中、

    A72中未创建 dma-buf-phys 驱动程序节点。 因此无法处理捕获节点。

    下图是7.3 SDK 和/或8.5 SDK 以及 platform_device_register_simple ("dma_buf_phys"、-1、NULL、0)的运行状态;

     

    使用 dma_buf_phys 的源代码:

     

     

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

    您好!

    appMemAddTupleToList()在调用 appMemAlloc()时被调用,而在调用 tivxMemAlloc 或 tivxMemBufferAlloc 时,appMemAlloc()则从 tiovx 框架中调用

    OpenVX 框架在 vxVerifyGraph ()期间调用此函数。

    在 SDK 8.5中,所有的应用程序都执行了 vxVerifyGraph()而没有此错误。 我想知道这是如何从不同于 SDK 演示应用的应用中触发的?

    此致、

    尼基尔

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

    你好 Nikhil Dasan:

    我认为主要问题是原始版本 Linux 8.5 SDK 中缺少/dev/dma-buf-phys。
    无论应用执行什么操作、appMemAddTupleToList 都必须打开 dev/dma-buf-phys。
    dmabuf2phys_fd = open ("/dev/dma-buf-phys "、O_RDONLY | O_CLOEXEC);
    您能解释一下为什么8.5版本会在 dma-buf-phys.c 中删除"pdev = platform_device_register_simple ("dma_buf_phys"、-1、NULL、0)"?

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

    您好!

    在 SDK 8.5中,所有应用程序都使用了 vxVerifyGraph (),但没有此错误。 我可以知道这是如何从不同于 SDK 演示应用的应用程序触发的吗?

    我们能够打开 /dev/dma-buf-phys  由于 vxVerifyGraph ()调用  appMemAddTupleToList (),并且所有分配也使用标准 SDK 演示应用程序中的相同功能。

    我想了解您对此函数的使用情况、以及您的应用与 SDK 演示有何不同?

    为了确认您的设置是否正确、您是否尝试运行任何 SDK 演示并在其中面临此错误?

    此致、

    尼基尔

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

    您好、先生/女士:

    上述问题发生在 不同于 TDA4 EVM 板的 j721e 硬件中。 我 今天要更改 TDA4 EVM 板中的测试。

    也会发生类似的问题。 我提交一个新帖子: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1285579/tda4vm-mcu2_0-runs-error-after-replace-origin-vx_app_rtos_linux_mcu2_0-out-in-lib-firmware-vision_apps_eaik?tisearch=e2e-sitesearch&keymatch=%20user%3A491470#

    请帮我检查,谢谢!

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

    您好!

    从所附的线索、我想您已经下定决心了、我相信这一点。

    请告诉我您的理解是否正确。

    如果是、另外"make linux_fs_install_sd"除了复制固件外还会执行许多链接。 请仔细阅读构建日志、确保您没有错过任何步骤。

    此致、

    尼基尔