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.

TMDS64EVM: About IPC and Mailbox

Part Number: TMDS64EVM

Hello TI support team.

I'm trying to understand about IPC.
AM64 TRM has a description about Mailbox, but there is no description about IPC.
On the other hand, AM64x MCU+ SDK 09.00.00 has descriptions of IPC Notify and IPC RPMessage, but no description of Mailbox.

What is the relationship between IPC Notify, IPC RPMessage and Mailbox?
Please tell me the relationship between these.

Best regards,
Kiyomasa Imaizumi.

  • Hello Kiyomasa-san,

    • An application sends a message to a given destination (CPU, endpoint)
    • The message is first copied from the application to VRING used between the two CPUs. After this the IPC driver posts the VRING ID in the HW mailbox.
    • This triggers a interrupt on the destination CPU. In the ISR of destination CPU, it extracts the VRING ID and then based on the VRING ID, checks for any messages in that VRING
    • If a message is received, it extracts the message from the VRING and puts it in the destination RPMSG endpoint queue. It then triggers the application blocked on this RPMSG endpoint
    • The application then handles the received message and replies back to the sender CPU using the same RPMSG and VRING mechanism in the reverse direction.

    You can also go through the IPC example code(C:\ti\mcu_plus_sdk_am64x_09_00_00_35\examples\drivers\ipc) provided in the MCU+SDK to better understand the flow of the application.

    Hope this helps.

    Regards,

    Nihar Potturu.

  • Hello Nihar Potturu.

    Thank you for your reply.
    I was able to understand the general outline.
    This means that Mailbox is used within IPC RPMessage.
    What about IPC Notify?

    Best regards,
    Kiyomasa Imaizumi.

  • Hello Kiyomasa-san,

    Apologies for the delay.

    IPC notify uses the Mailbox interrupts to transfer a simple 32 bit message(28 bits data+4 bits client id) between the cores.

    RPMSG uses the IPC notify underneath and adds another shared memory layer, where we send the shared memory address to the mailbox and receiving core takes extracts the address from the mailbox message and reads the actual message from the shared memory. 

    Regards,

    Nihar Potturu.