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.

AM6442: Met trouble when configure IPC_Notify example

Part Number: AM6442
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi, 

Customer want to use ipc_notify_echo_am64x-evm_r5fss0-0_freertos_ti-arm-clang example to achieve two core communicate with IPC_Notify. When disable other core, it shows error.

How to configure this to achieve our goals?

Regards

Zekun

  • Hi Zuken,

    Which SDK version are you using? I believe you are trying to get IPC working between R5F0_0 and R5F0_1, am I correct?

    Regards,

    Nitika

  • Hi, Nitika

    We are using SDK 9.1. Yes, R5F0_0 and R5F0_1.

    Regards

    Zekun

  • Hi Zuken,

    Okay so to achieve your objective, you will have to modify the example as below:

    1. Update the sysconfig settings

    - Do not worry about the errors showing up while you make the below changes, they will go away once the setting for all the cores are modified.

    - The self core values that you cannot modify will get automatically updated once all the core settings are made.

    - In the R5FSS0-0 and R5FSS0-1 window, set the value for R5FSS0 Core 0 and R5FSS0 Core 1 to 'IPC Notify ONLY' and all other cores to 'All IPC DISABLED'. 

    - For all other core windows, set all the values to 'All IPC DISABLED' (the self core values will get updated automatically at the end)

    2. Modify the main core code to send and wait for IPC messages from only R5F0_1

    - Go to ipc_notify_echo.c file and from the list of remote cores for AM64x, remove all the cores other than CSL_CORE_ID_R5FSS0_1 as below:

    #if defined(SOC_AM64X)
    /* main core that starts the message exchange */
    uint32_t gMainCoreId = CSL_CORE_ID_R5FSS0_0;
    /* remote cores that echo messages from main core, make sure to NOT list main core in this list */
    uint32_t gRemoteCoreId[] = {
        CSL_CORE_ID_R5FSS0_1,
    //    CSL_CORE_ID_R5FSS1_0,
    //    CSL_CORE_ID_R5FSS1_1,
    //    CSL_CORE_ID_M4FSS0_0,
    //    CSL_CORE_ID_A53SS0_0,
        CSL_CORE_ID_MAX /* this value indicates the end of the array */
    };
    #endif

    3. Run the example

    - Rebuild the example, load the respective binaries to R5F0_0 and R5F0_1 core and run them. You should get the below output:

    [IPC NOTIFY ECHO] Message exchange started by main core !!!
    [r5f0-1]     0.000105s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [IPC NOTIFY ECHO] All echoed messages received by main core from 1 remote cores !!!
    [IPC NOTIFY ECHO] Messages sent to each core = 1000000 
    [IPC NOTIFY ECHO] Number of remote cores = 1 
    All tests have passed!!
    [r5f0-1]     2.833222s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!

    Regards,

    Nitika

  • Hi, Nitika

    Thanks for details. Let me give it a try.

    Regards

    Zekun