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: QNX-J7 IPC test example

Part Number: TDA4VM


Hi everybody , 

We have tried the ipc_test application under the ${PSDK_PATH}/psdkqa/qnx/examples/ipc/ipc_test_qnx directory but fails with the following error:

Process 110610 (ipc_test) terminated SIGSEGV code=1 fltno=11 ip=000000000040159c ref=0000000400000003

Memory fault (core dumped)

While the test vx_app_qnx_ipc.out under the ${PSDK_PATH}/vision_apps/apps/basic_demos/app_ipc directory runs without issues (when the firmware of the c66_0, c66_1 and main-r5f0_0 are copied to the SD under ${rootfs}/lib/firmware/j7-*).

We suspect the issue lies with the firmware that needs to be loaded on the various core, but we are not sure as we cannot find the specific documentation for QNX. Can you please provide the documentation to compile and run the IPC echo test on QNX?

best regards

Carlo

  • Hi Carlo,

    Yes the firmware binaries that are required for IPC echo test are different.  I'll look into this and get back to you.

    The vision apps ipc test application also shows that IPC is functional.

    Regards,

    kb

  • Hi KB , 

    please the vision _apps is not applicable in  my case   ,   it is getting urgent 

    any suggestion ?

    thank  you  

    best regards

    Carlo

  • Hi Carlo,

    Have built the binaries but have not had a chance to complete testing yet.  Instructions have been provided in an offline email.  Once steps are validated they will be posted here.

    Regards,

    kb

  • Hi Carlo,

    Please reference https://e2e.ti.com/support/processors/f/791/p/932825/3446191#3446191.

    If any issues are found, please let me know.

    Regards,

    kb

  • Hi KB , 

     

    The example provided shows IPC with various cores in the Main-Domain but none that cross communicate between the different domains (eg. between A72 and MCU-R5F).

    thank you 

    best regards

    Carlo

  • Hi Carlo,

    In below command taken from the FAQ, the j7-mcur5f0_1-fw image, would be running on the MCU-R5F.   

    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu1_1_release.xer5f   ${ROOTFS}/lib/firmware/j7-mcu-r5f0_1-fw

    Regards,

    kb

  • Hi KB , 

    According to the FAQ, the output of ipc_test is:

    J7EVM@QNX:/# /sd/tibin/ipc_test

    Running Ipc_echo_test

    IPC_echo_test (core : mpu1_0) .....

    IPC init done

    This example application will not exit

    SendTask7: mpu1_0 <--> C66X_1, Ping- 10, pong - 10 completed

    SendTask8: mpu1_0 <--> C66X_2, Ping- 10, pong - 10 completed

    SendTask9: mpu1_0 <--> C7X_1, Ping- 10, pong - 10 completed

    SendTask5: mpu1_0 <--> mcu3_0, Ping- 10, pong - 10 completed

    SendTask3: mpu1_0 <--> mcu2_0, Ping- 10, pong - 10 completed

    SendTask6: mpu1_0 <--> mcu3_1, Ping- 10, pong - 10 completed

    SendTask4: mpu1_0 <--> mcu2_1, Ping- 10, pong - 10 completed

    This example application will not exit

     

    This is the same output we get as well. However this does not show the mpu1_0 <--> mcu1_1 (or mcu1_0). We have also copied the mcu1_0 binary with:

    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu1_0_release.xer5f   ${ROOTFS}/lib/firmware/j7-mcu-r5f0_0-fw

     

    In summary we have the following firmware under /lib/firmware:

    • j7-c66_0-fw
    • j7-c66_1-fw
    • j7-c71_0-fw
    • j7-main-r5f0_0-fw
    • j7-main-r5f0_1-fw
    • j7-main-r5f1_0-fw
    • j7-main-r5f1_1-fw
    • j7-mcu-r5f0_0-fw
    • j7-mcu-r5f0_1-fw

     

    The problem is that we cannot verify the mpu1_0 <--> mcu1_1 (or mcu1_0) IPC works as nothing is printed on the Main UART0 console.

    best regards

    Carlo

  • Hi Carlo,

    This could be related to the settings in uboot, which specify which cores are to be loaded.  Try booting the board, and hit a key to stop the boot process at the uboot prompt, the run the below command

      printenv

    Find the line for "rproc_fw_binaries" and check if "/lib/firmware/j7-mcu-r5f0_1-fw" has been included.   If not run the below commands to add it to the rproc_fw_binaries.

    set rproc_fw_binaries 1  /lib/firmware/j7-mcu-r5f0_1-fw 3 /lib/firmware/j7-main-r5f0_1-fw 4 /lib/firmware/j7-main-r5f1_0-fw 5 /lib/firmware/j7-main-r5f1_1-fw 6 /lib/firmware/j7-c66_0-fw 7 /lib/firmware/j7-c66_1-fw 8 /lib/firmware/j7-c71_0-fw

    saveenv


    Reboot and try the ipc_test again from the QNX command prompt.  Expectation is that the below cores would be shown:

    SendTask9: mpu1_0 <--> C7X_1, Ping- 10, pong - 10 completed
    SendTask8: mpu1_0 <--> C66X_2, Ping- 10, pong - 10 completed
    SendTask7: mpu1_0 <--> C66X_1, Ping- 10, pong - 10 completed
    SendTask6: mpu1_0 <--> mcu3_1, Ping- 10, pong - 10 completed
    SendTask3: mpu1_0 <--> mcu2_0, Ping- 10, pong - 10 completed
    SendTask4: mpu1_0 <--> mcu2_1, Ping- 10, pong - 10 completed
    SendTask5: mpu1_0 <--> mcu3_0, Ping- 10, pong - 10 completed
    SendTask1: mpu1_0 <--> mcu1_0, Ping- 10, pong - 10 completed

    Regards,

    kb

  • Hi Kb 

    I can share file offline , pls contact me 

    We tried following the instructions provided as well as setting the environment variables only in the uEnv.txt file but unfortunately loading of the firmware always fails as seen in the attached logs (shared offline), specifically the following line:

     

    Invalid op: Trying to load/start on already running core 2

    Load Remote Processor 1 with data@addr=0x80080000 4225440 bytes: Failed!

     

    We have also tried adding 2 /lib/firmware/j7-mcu-r5f0_0-fw but we get a similar failure.

     

    Even though those errors are printed during the boot process, they do not prevent the boot. However, when running ipc_test we still aren’t able to reproduce the output that you provided earlier, we only get the output without the mpu1_0 <--> mcu1_1 (or mcu1_0).

    any suggestion ?

    thank you 

    best regards

    Carlo

  • Hi KB ,

    Thank you very much for your reply.

     

    We had initially tried using testb last week but it didn’t worked.

     

    Today, we repeated all the steps mentioned from the FAQ with the modifications below and I confirm that it works now.

     

    A few comments on the procedure:

      • pdk_libs was not needed for the tests to work either (we have tried both with and without and it makes no difference).
      • We still get the “failed” notice from U-Boot (see previous shared logs), but as the ipc_test command works as per the FAQ, I think this might be an unrelated issue.
      • No need to directly modify the default U-Boot variables, adding the modification in the uEnv.txt was sufficient for us (had same effect).

     

    We have a couple of other requests:

    1. Could you please provide a documentation describing the differences between ex02_bios_multicore_echo_test and ex02_bios_multicore_echo_testb? When should we use one over the other?
    2. You mentioned that to use mcu1_1 some modifications are needed, are those for ex02_bios_multicore_echo_test, ex02_bios_multicore_echo_testb or the ipc_test.c file?
    3. Why would loading the mcu1_0 fails with “Invalid op” using U-Boot fails (see attached logs)?
    4. Could you please explain the boot process when loading the different remote procs (specifically after U-Boot)?

    thks

    Carlo

  • Hi Carlo,

    Glad to hear its working.

    Regarding (1) , (2), and (3) below are some related threads that are related to these questions.  In general the MCU R5 has already run as part of the boot flow thus behaves differently when attempting to load a new image.   Please open a new e2e thread, if further details are required to close.

    https://e2e.ti.com/support/processors/f/791/t/903161 (see response from Suman)

    https://e2e.ti.com/support/processors/f/791/p/909461/3364043

    Regarding (4) please reference online uboot documentation.   Please open a new e2e thread, if further details are required to close.

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/latest/exports/docs/linux/Foundational_Components_U-Boot.html#remoteproc

    Thanks,

    kb