AM263P4: AM263P4: ipc_rpmsg_echo_callback example crashes

Part Number: AM263P4

Dear team,

To get an understanding of the different IPC mechanisms offered by the TI Sitara platform, I have built, run and slightly altered several of the example projects - IPC notify, Spinlock&SharedMem, IPC RPMsg without callback. They are all working fine.

However, the final example, IPC RPMsg with callbacks, using FreeRTOS on all four cores, crashes, even in a completely unaltered state. (This example is especially relevant as I plan on using FreeRTOS on at least two cores, and all other multicore cross-communication examples use FreeRTOS on only one core.)

 

So what is the observable behavior?

When I start debugging the five projects by launching the debugger through the system project (ipc_rpmsg_echo_callback), put all four cores into "running" state (F5 on each core), and check the Serial Console for the debug message, only part of the first message is displayed:

grafik.png

At that point, cores 0-0 and 1-0 are executing the following abort handler:
grafik.png

Cores 0-1 and 1-1 are inside this function:

grafik.png

 

I have not edited any of the five example projects used for the build. What could be the cause of this behavior? 

  • I have made more trial runs to get a clearer picture of the cause of the problem:
    - As already mentioned in my original post, I imported TI's official ipc_rpmsg_echo_callback example. This example uses FreeRTOS on all four cores. Debugging the bare, imported project (no changes to it) leads to two of the cores eventually reaching HwiP_user_data_abort_handler_c() -> The project is broken out of the box.
    - ipc_rpmsg_echo, that uses FreeRTOS only on the main/controlling core, works out of the box.
    - When I copy the program code of the ipc_rpmsg_echo project verbatim into the import of ipc_rpmsg_echo_callback, three cores eventually reach HwiP_user_data_abort_handler_c() -> Project still broken, despite program code that I know works in another project that is set up without FreeRTOS on three cores.
    - I have also tried to make RPMsg work on an empty project using four FreeRTOS cores. This breaks the project, as well. Again, some of the cores eventually reach HwiP_user_data_abort_handler_c() and no RPMsg communication succeeds.

    This suggests that the failures:
    - Are independent of application code
    - Require FreeRTOS on the remote cores

    SDK version: AM263Px MCU+ SDK 11.01.00
    IDE: CCS 20.5.0.28__1.11.0
    OS: Windows 11

  • Hi Deigo,

    Can you take a look at the below E2E and check if it helps, to me it seems like a very similar issue. The linked E2E also has a few links to other E2Es for reference

     LP-AM263: LP-AM263: Definitive Method to Debugging 

    Regards,
    Shaunak

  • Commenting out OnTargetConnect() inside AM263Px.gel did the trick. Thanks!