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: IPC A53 Linux <> M4F

Part Number: AM6442

Hi TI supporter,

I would like to IPC communicate between Linux anh M4F, but I ditn't see example or reference related to IPC Linux and M4F.

Please let me know how to do it.

==========================

Addition, I saw the code at mcu_plus_sdk_am64x_08_00_00_21/source/drivers/ipc_notify/v0/soc/am64x/ipc_notify_v0_cfg.c

/* Interrupt config for M4FSS */
#define IPC_NOFTIY_INTERRUPT_CONFIG_M4FSS_NUM   (1u)
IpcNotify_InterruptConfig gIpcNotifyInterruptConfig_m4fss0_0[IPC_NOFTIY_INTERRUPT_CONFIG_M4FSS_NUM] = {
    {
        .intNum = 16U + 56U,   /* interrupt line on M4FSS CPU, +16 offset to account for M4 internal interrupts */
        .eventId = 0U,   /* not used */
        .numCores = 4U,  /* number of cores that send messages which tied to this interrupt line */
        .coreIdList = { /* core ID's tied to this interrupt line */
            CSL_CORE_ID_R5FSS0_0,
            CSL_CORE_ID_R5FSS0_1,
            CSL_CORE_ID_R5FSS1_0,
            CSL_CORE_ID_R5FSS1_1,
            CSL_CORE_ID_A53SS0_0,
        },
    }
};

I didn't understand .numCores = 4U but .coreIdList is equal 5 elements. Could you explain the context? Thanks

Thanks

  • Hello Thinh,

    You can find documentation on IPC Notify driver for MCU Plus SDK 8.0 here:
    http://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_00_00_21/exports/docs/api_guide_am64x/DRIVERS_IPC_NOTIFY_PAGE.html

    Note that IPC Notify will not work when communicating with Linux. IPC RPMsg is tested with Linux, but I am not sure if we have tested M4 RTOS <--> A53 Linux. Also note that Linux SDK 8.0 is not out yet. It will be released by next month at the latest. We typically suggest using the same SDK versions for the RTOS/Bare metal and the Linux cores.

    A couple of notes:
    1) We have implemented software for a couple of different kinds of IPC at this point. However, there are many ways to implement IPC. Some implementations are better for different use cases. Your use case may require you to implement IPC in a way that we have not created an example for yet.
    2) IPC RPMsg is limited by the Linux RPMsg driver in message size and in throughput (since multiple copies are required to go through the Linux driver up to userspace).

    Let me check if there are differences between the Linux SDK side IPC documentation for SDK 7.3 and SDK 8.0.

    Regards,

    Nick

  • Dear TI supporters,

    We have went through the AM64x MCU+ SDK: Understanding inter-processor communication (IPC). In this manual, section "Important usage points" describe that:

    • When Linux is one end of the IPC message exchange, only IPC RP Message can be used.
    • When M4F is one end of the IPC message exchange, only IPC Notify can be used. This is because in AM64X, the M4F use-case is to act as a safety controller that is self contained within its sub-system. When using RP Message it would need to access shared memory outside its subsystem hence this feature is not enabled.

    It seems that the current SDK has not supported for IPC between M4F and Linux. Do you have the plan to implement the use case in the near future?

  • Hello Lan,

    I do not currently see any plans for TI to write software to communicate between Linux A53 and M4F. Let me double check with the developers. Please ping the thread next week if I have not responded.

    Note that even if TI does not write the code to implement IPC between M4F and Linux, the hardware is still capable of doing IPC between those cores. So you could still implement a version of IPC yourself, but it would take a bit of development work.

    Regards,

    Nick