Part Number:TDA4VM
我在tda4上测试tiovx的node执行顺序,测试是这样的:NodeA(DSP0) -> NodeB(DSP1) -> NodeC(DSP0)
做这样的测试,就是想看一下在vxVerifyGraph之后host参与了几次ipc通信,本来设想的是一共6次:
1.hostSendIpcToDSP0
2.hostReceiveIpcFromDSP0
3.hostSendIpcToDSP1
4.hostReceiveIpcFromDSP1
5.hostSendoIpcToDSP0
6.hostReceiveIpcFromDSP0
结果,整个vxScheduleGraph过程只看到以下两步:
1.hostSendIpcToDSP0
6.hostReceiveIpcFromDSP0
这个很让我吃惊,如果3个Node都在DSP0上,我认为host只需要以上两步。不过我的测试是把3个Node分配到了两个DSP上,我想怎么样host也需要参与6次。结果出乎意料
所以,我想请教的是,tda4上的每个CPU上的ipc通信是N2N的吗?也即DSP0可以直接给DSP1发IPC消息,这样就不需要host在中间参与,只需要在开始和结尾处参与即可。
希望TI的专家能帮忙解释一下。
Cherry Zhou:
您的问题我们需要升级到英文论坛看下,链接如下:
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1243210/tda4vm-ic-communication-of-tiovx
,
霄 吴:
标题是不是打错了,应该是“ipc communication”, 而不是"ic communication"
,
Cherry Zhou:
您好,请参阅以下答复:
在 tiovx 中,是按照如下流程执行的:
要实际看到这一点,您可以在为 A72和其他内核启用 IPC 调试宏的情况下运行 tiovx 的以下教程:
1. 启用 the Macro APP_IPC_DEBUG in ${PSDKRA}/vision_apps/utils/ipc/src/app_ipc_linux_priv.h
2. 启用 the Macro APP_IPC_DEBUG in ${PSDKRA}/vision_apps/utils/ipc/src/app_ipc_rtos.c
3. 使用以下步骤来运行 TIOVX User Guide: vx_tutorial_graph_image_gradients.c File Reference
On evm : in /opt/vision_apps run source ./vision_apps_init.sh
After this please run ./vx_app_tutorial.out
Select the option 2: Graph
After this Select option 1: Graph with multiple targets
在这组log中,您可以跟踪 IPC 的 debug logs,并查看在从目标移动到目标时,从哪个内核发送消息。
,
霄 吴:
从您的这个图上看,这个Target1和Target2,对应到我的测试就是DSP0和DSP1,那么从图上看,这个DSP0是直接给DSP1发IPC消息了,没有经过host的参与,我这样理解对吗?
,
Cherry Zhou:
对的,是这样的。
,
霄 吴:
谢谢
,
霄 吴:
谢谢