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] TDA4VM: How to do IPC echo test example on TDA4VH/VM

Part Number: TDA4VM
Other Parts Discussed in Thread: TDA4VH

Hi Team,

How can I build and run IPC Echo test example on TDA4VH boards? 

  • IPC echo test is an example provided in the SDK that demonstrates inter process communication between the cores (c7x_1, c7x_2, c7x_3, c7x_4, mcu1_1, mcu2_0, mcu2_1, mcu3_0, mcu3_1, mcu4_0, mcu4_1). It uses remoteproc and RPMsg framework to load the firmware and exchange messages between the cores.

    Prerequisites:

    1. Setup the following environment path
      •  SDK_INSTALL_PATH : Installation root for SDK
      •  TOOLS_INSTALL_PATH :  where all the tool chains are installed, if different from  SDK_INSTALL_PATH 
      •  PDK_INSTALL_PATH : Installation root for PDK
         
    2. Build IPC Echo Test FreeRTOS for all the cores 
      • make -s -j BUILD_PROFILE=release BOARD=j784s4_evm CORE=<core_nameipc_echo_test_freertos 

    Steps to run the IPC ECHO TEST EXAMPLE:

    1. Create a folder called pdk-ipc in /lib//firmware directory and copy all the remote firmware’s to this folder. 
    2.  Open the directory /lib/firmware
      •   cd /lib/firmware 
    3.  Remove old soft link for remote cores
      • rm j7* 
    4.  Create new soft links 
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_1_release.xe71 j784s4-c71_0-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_2_release.xe71 j784s4-c71_1-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_3_release.xe71 j784s4-c71_2-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_4_release.xe71 j784s4-c71_3-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_1_release_strip.xe71 j784s4-c71_0-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_2_release_strip.xe71 j784s4-c71_1-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_3_release_strip.xe71 j784s4-c71_2-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_c7x_4_release_strip.xe71 j784s4-c71_3-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu1_1_release.xer5f j784s4-mcu-r5f0_1-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu1_1_release_strip.xer5f j784s4-mcu-r5f0_1-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu2_0_release.xer5f j784s4-main-r5f0_0-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu2_0_release_strip.xer5f  j784s4-main-r5f0_0-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu2_1_release.xer5f j784s4-main-r5f0_1-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu2_1_release_strip.xer5f  j784s4-main-r5f0_1-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu3_0_release.xer5f j784s4-main-r5f1_0-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu3_0_release_strip.xer5f  j784s4-main-r5f1_0-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu3_1_release.xer5f j784s4-main-r5f1_1-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu3_1_release_strip.xer5f  j784s4-main-r5f1_1-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu4_0_release.xer5f j784s4-main-r5f2_0-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu4_0_release_strip.xer5f  j784s4-main-r5f2_0-fw-sec  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu4_1_release.xer5f j784s4-main-r5f2_1-fw  
      ln -s /lib/firmware/pdk-ipc/ipc_echo_test_freertos_mcu4_1_release_strip.xer5f  j784s4-main-r5f2_1-fw-sec
      
    5. Write the changes to the file system. 
      • sync
    6. Modify uEnv.txt in /run/media/BOOT-mmcblk1p1/  to enable manual remoteproc control 
      • Set dorprocboot as 0 
      • Comment out name_overlay variable
    7. To save the changes made use reboot in the command line. 
    8. To identify the remoteproc for c7x_1
      • dmesg | grep remoteproc 
    9. To use echo start and stop commands for enabling and disenabling inter process communication between the cores
      • echo start > /sys/class/remoteproc/<remoteproc_id_c7x1>/state
      • echo stop > /sys/class/remoteproc/<remoteproc_id_c7x1>/state

    Regards,

    Ben Eapen Thomas