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.
您好、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 板中的测试。
请帮我检查,谢谢!
您好!
从所附的线索、我想您已经下定决心了、我相信这一点。
请告诉我您的理解是否正确。
如果是、另外"make linux_fs_install_sd"除了复制固件外还会执行许多链接。 请仔细阅读构建日志、确保您没有错过任何步骤。
此致、
尼基尔