AM2434: Multi-Core Application Development on AM2434

Part Number: AM2434
Other Parts Discussed in Thread: LP-AM243, SYSCONFIG

Hello Team,

I am currently working with the LP-AM243 Launchpad and developing a multi-core application where different software components run on different cores.

I am using the mcu_plus_sdk_am243x_12_00_00_26 SDK for development. As part of my learning and implementation, I am referring to the ipc_notify_echo example provided in the SDK.

Reference documentation used:
https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/09_02_00_08/mcu_plus_sdk/docs/api_guide_am243x/EXAMPLES_DRIVERS_IPC_NOTIFY_ECHO.html

However, when I try to run the example as described in the documentation, the application does not execute as expected and I am facing issues (it does not run properly / produces unexpected behavior compared to the described flow).

I would appreciate guidance on the following:

  1. What is the correct workflow for developing and running multi-core applications on LP-AM2434?
  2. How should separate applications be built, loaded, and executed on different cores using mcu_plus_sdk_am243x_12_00_00_26?
  3. What are the correct steps to properly run the ipc_notify_echo example without errors?
  4. Are there any required SysConfig settings, system project configurations, or boot sequence requirements that must be followed?
  5. Any debugging guidelines or best practices to ensure reliable IPC communication between cores would be helpful.

I am trying to ensure correct understanding of the multi-core boot flow and IPC communication mechanism on this device.

Thank you for your support.

  • Hi,

    The document you are using here refer to SDK 09.02. For SDK v12.0, please refer MCU+SDK

     Please elaborate what all steps have you performed?

    Also attach error message if any.

    Regards,

    Tushar

  • Hi Tushar,

    Thank you for your response.

    I understand that the document I referenced is from SDK 09.02. However, after comparing the IPC Notify Echo example documentation in SDK 09.02 and SDK 12.00, I did not observe any significant differences in the example flow or description, so I used it as a reference while working with MCU+ SDK AM243x v12.00.00.26.

    Regarding the steps I performed:

    1. Imported and built the ipc_notify_echo example from MCU+ SDK AM243x v12.00.00.26.
    2. The project builds successfully without any compilation or linking errors.
    3. Loaded the generated application onto the LP-AM2434 LaunchPad using CCS.

    However, after loading and running the application, execution appears to remain in the vApplicationIdleHook(void) function and does not proceed as expected. As a result, I am unable to observe the IPC notification exchange described in the example documentation.

    I have attached screenshots showing the application state before running and after running the code for reference.

    Additionally, I would appreciate clarification on the following points:

    • What is the recommended workflow for developing and running multi-core applications on the LP-AM2434?
    • How should separate applications be built, loaded, and executed on different cores using MCU+ SDK AM243x v12.00.00.26?
    • What are the correct steps to run the ipc_notify_echo example successfully?
    • Are there any required SysConfig settings, System Project configurations, or boot sequence requirements that must be followed?
    • Are there any debugging guidelines or best practices for verifying and troubleshooting IPC communication between cores?

    Thank you for your support. I look forward to your guidance.

  • Hi,

    You will need to run application on all other cores as well. I can only see you are running R5F0-0 core application, rest all cores are still halted at main() function call.

    Please run all the cores and update the results.

    Regards,

    Tushar

  • Hi,
    I followed your suggestion and manually ran the application on all cores. 

    After running all cores, the application does not appear to execute as expected. Instead, execution eventually halts at HOSTexit(). I have attached screenshots showing this behavior for reference.

    I also attempted to manually resume execution again after the halt, and I have attached additional screenshots showing the resulting state.

    At this point, I am unsure whether there is an error in my setup or if I am missing a required step in the execution sequence. Could you please advise on the following?

    • Is halting at HOSTexit() expected for the ipc_notify_echo example?
    • Are there any additional steps required after manually running all cores?
    • Is there a specific loading or execution sequence that must be followed for the multi-core IPC examples?
    • Are there any configuration settings, SysConfig options, or System Project settings that I should verify?

    I have attached the relevant screenshots below for your review.

    Thank you for your assistance. I look forward to your guidance on the next troubleshooting steps.

  • Hi,

    From the above it looks like you code has been successfully executed. Can you try opening all the UART COM ports and check whether the logs are coming or not?

    Regards,

    Tushar

  • Hi Tushar,

    Thank you for the suggestion.

    I opened all available UART COM ports and was able to observe the expected output. The logs indicate that the IPC Notify Echo example executes successfully on all cores and completes with the message "All tests have passed!!". The output is shown below for reference:

    [r5f1-1] 0.000101s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [IPC NOTIFY ECHO] Message exchange started by main core !!!
    [m4f0-0] 0.000020s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f0-1] 6.090101s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f0-1] 8.397116s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [r5f1-0] 4.339102s : [IPC NOTIFY ECHO] Remote Core waiting for messages from main core ... !!!
    [r5f1-0] 6.646180s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [r5f1-1] 5.025214s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!
    [IPC NOTIFY ECHO] All echoed messages received by main core from 4 remote cores !!!
    [IPC NOTIFY ECHO] Messages sent to each core = 1000000
    [IPC NOTIFY ECHO] Number of remote cores = 4
    All tests have passed!!
    [m4f0-0] 3.501311s : [IPC NOTIFY ECHO] Remote core has echoed all messages !!!

    Previously, I was only monitoring the CCS console and was not checking the UART terminals. Based on the UART output, it appears that the example is functioning correctly.

    I would now like to better understand the implementation of the IPC communication:

    1. Which functions are responsible for sending messages from one core to another?
    2. How are the main functions running on the different cores linked together and synchronized?
    3. Where in the example project can I customize the transmitted data or modify the communication flow?
    4. Are there any key source files, APIs, or documentation you would recommend reviewing to understand the IPC Notify mechanism in more detail?

    Thank you for your assistance. I appreciate any guidance on the internal working of the IPC example.

  • Please refer IPC_GUIDE for understanding IPC in detail.