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: IPC communication of tiovx

Part Number: TDA4VM


Hi team,

The customer tests the execution sequence of the node of tiovx on tda4 as follows:

NodeA(DSP0) -> NodeB(DSP1) -> NodeC(DSP0)

The purpose of this test is to verify that after vxVerifyGraph, host participated in several IPC traffic, which was assumed to be a total of six times: 

1.hostSendIpcToDSP0

2.hostReceiveIpcFromDSP0

3.hostSendIpcToDSP1

4.hostReceiveIpcFromDSP1

5.hostSendoIpcToDSP0

6.hostReceiveIpcFromDSP0

However, the entire vxScheduleGraph procedure is as follows: 

1.hostSendIpcToDSP0

6.hostReceiveIpcFromDSP0

If all three nodes are on DSP0, host only needs the above two steps. However, the customer's test was to assign 3 nodes to two DSPs.

So the customer would like to make sure if the IPC communication on each CPU on tda4 is N2N. That is, DSP0 can send IPC messages directly to DSP1 so that host participation is not required in the middle, but only at the beginning and end. 

Could you help check this case? Thanks.

Best Regards,

Cherry

  • Hi Cherry,

    In tiovx, the execution happens as shown below 

    To see this in action, customer could run the below tutorial of tiovx with the ipc debug macro enabled for A72 and other cores.

    1. Enable the Macro APP_IPC_DEBUG in ${PSDKRA}/vision_apps/utils/ipc/src/app_ipc_linux_priv.h

    2. Enable the Macro APP_IPC_DEBUG in ${PSDKRA}/vision_apps/utils/ipc/src/app_ipc_rtos.c

    3. Run the tutorial TIOVX User Guide: vx_tutorial_graph_image_gradients.c File Reference using below steps

    • 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

    In this set of logs, you could track the debug logs of the IPC and see from which core to which core are the messages being sent when moving from target to target.

    Regards,

    Nikhil

  • Hi Nikhil,

    Thank you for the support.

    As the above figure shown, this Target1 and Target2, which corresponds to customer's DSP0 and DSP1 and this DSP0 is sending an IPC message directly to DSP1, without host involvement, is this right? 

    Thanks and regards,

    Cherry

  • Yes, that's correct.