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.

[FAQ] PROCESSOR-SDK-DRA8X-TDA4X: How to use IPC Example Application Echo Test on PSDKQA7.0

Guru* 93931 points

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

How is the IPC echo test application built and run on the PSDKQA7.0 release?

  • Instructions on how to build and run the IPC echo test example application and remote core binaries,  for PSDKQA7.0 are below.  These steps and documentation will be present in future PSDK release documentation

     
    Building Remote Core Images:
     
    The instructions available at the below link can be followed to build the QNX remote core images.
     
    Of the various options listed there, one way to build is:
     
    cd ${PDK_INSTALL_PATH}/ti/build
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu1_0 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu1_1 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu2_0 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu2_1 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu3_0 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=mcu3_1 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=c66xdsp_1 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=c66xdsp_2 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no CORE=c7x_1 ex02_bios_multicore_echo_test
    make BUILD_PROFILE=release BOARD=j721e_evm TREAT_WARNINGS_AS_ERROR=no ex02_bios_multicore_echo_testb
     
    Note that pdk_libs must have already been built, such that dependent libraries are present.
     
     
    Copying Remote Core Images to SD card
     
    The newly built remote core images, can now be directly copied to the rootfs of the SD card.  Sample commands to do this are below.   Existing firmware binaries should be backed up as required.
     
    # Copy to rootfs (backup your current 'firmware' directory if needed)
    export ROOTFS=/media/${USERNAME}/rootfs
    cp ${PDK_INSTALL_PATH}/ti/binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_c7x_1_release.xe71       ${ROOTFS}/lib/firmware/j7-c71_0-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_c66xdsp_2_release.xe66 ${ROOTFS}/lib/firmware/j7-c66_1-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_c66xdsp_1_release.xe66 ${ROOTFS}/lib/firmware/j7-c66_0-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu3_1_release.xer5f   ${ROOTFS}/lib/firmware/j7-main-r5f1_1-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu3_0_release.xer5f   ${ROOTFS}/lib/firmware/j7-main-r5f1_0-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu2_1_release.xer5f   ${ROOTFS}/lib/firmware/j7-main-r5f0_1-fw
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_test/bin/j721e_evm/ex02_bios_multicore_echo_test_mcu2_0_release.xer5f   ${ROOTFS}/lib/firmware/j7-main-r5f0_0-fw
    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
    cp ${PDK_INSTALL_PATH}/ti/./binary/ex02_bios_multicore_echo_testb/bin/j721e_evm/ex02_bios_multicore_echo_testb_mcu1_0_release.xer5f ${ROOTFS}/lib/firmware/j7-mcu-r5f0_0-fw
     
    Building A72 QNX ipc_test:
     
    The attached ipc_test_setup.c, should be used to replace the version released with PSDKQA7.0.
     
    psdk_rtos_auto_j7_07_00_00_11/psdkqa/qnx/examples/ipc/ipc_test_qnx/src/ipc_testsetup.c
     
    To rebuild the ipc_test binary, the following command should be run
                  
                   source  …/qnx700/qnxsdp-env.sh
    cd psdk_rtos_auto_j7_07_00_00_11/psdkqa/qnx
    make
     
    Copying ipc_test to SD Card:
     
    cd psdk_rtos_auto_j7_07_00_00_11/psdkqa/qnx
    cp ./examples/ipc/ipc_test_qnx/build/aarch64le-release/ipc_test /media/${USERNAME}/boot/tibin/
     
    Uboot
     
    If there are issues loading firmware images, the following commands which are a first time setup for U-boot.
    <halt boot at u-boot with any key, before 2-sec timeout expires>
    # Enter below commands on u-boot prompt for first-time setup
    > env default -a -f
    > setenv dorprocboot 1
    > setenv bootcmd 'run boot_rprocs; fatload mmc 1 80080000 qnx-ifs; go 0x80080000'
    > saveenv
    > reset
     
    Uboot will log the loading of the remote core firmware binaries
     
                   <…>
    4260432 bytes read in 91 ms (44.6 MiB/s)
    Load Remote Processor 3 with data@addr=0x80080000 4260432 bytes: Success!
    4260420 bytes read in 91 ms (44.6 MiB/s)
    Load Remote Processor 4 with data@addr=0x80080000 4260420 bytes: Success!
    4260420 bytes read in 91 ms (44.6 MiB/s)
    Load Remote Processor 5 with data@addr=0x80080000 4260420 bytes: Success!
    5369252 bytes read in 114 ms (44.9 MiB/s)
    Load Remote Processor 6 with data@addr=0x80080000 5369252 bytes: Success!
    5369252 bytes read in 114 ms (44.9 MiB/s)
    Load Remote Processor 7 with data@addr=0x80080000 5369252 bytes: Success!
    11443384 bytes read in 37 ms (295 MiB/s)
    Load Remote Processor 8 with data@addr=0x80080000 11443384 bytes: Success!
                   <…>
     
    Running
     
    At the QNX command prompt the /sd/bin/ipc_test, executable can be launched. 
     
    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
    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
    This example application will not exit
    The verbosity of the A72 application can be adjusted by un-commenting the DEBUG_PRINT definition in ipc_testsetup.c.
    The number of messages sent by A72 can be adjusted by changing NUMMSGS, which is current set to 10, and rebuilding.
    psdk_rtos_auto_j7_07_00_00_11/psdkqa/qnx/examples/ipc/ipc_test_qnx/src/ipc_testsetup.c
     
    Similarly NUMMSGS being sent by the remote cores can be adjusted and the image rebuilt.  The file to be modified is below:
    psdk_rtos_auto_j7_07_00_00_11/pdk_jacinto_07_00_00/packages/ti/drv/ipc/examples/common/src/ipc_testsetup.c
     

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