Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

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.

AWR2944EVM: IPC_RPmsg/Mailbox

Part Number: AWR2944EVM

Hi, TI support,

In user manual spruiv5b.pdf, chapter No. 26 Mailbox, Figure 26-2, Mailbox Message Scheme Between Cores, it mentioned registers MBOX_READ_DONE_ACK and MBOX_READ_DONE used to send ACK to SYS.

However, in SDK drivers, ipc_rpmsg.c and ipc_notify.c, they just used MBOX_WRITE_DONE and MBOX_READ_REQ.

It seems rpmsg don't send ACK signal, is it right? I think mailbox can't be used again until an ACK is received. If rpmsg don't generate ACK, how is it works?

  • Hello Jerry,

    Please provide me time till thursday to respond back on this topic.

    Regards,

    Saswat Kumar

  • Hello jerry,

    I dont see the issue here.

    IpcNotify_getReadMailbox is part of the ISR callback:  IpcNotify_isr
    If you see the flow diagram, the middle portion is the hardware control.
    So, when you get the Read done ack is given, then you get the interrupt.
    That interrupt's callback has the function to read the mailbox.
    It is implemented in the same way itself.

    Regards,
    Saswat Kumar
  • Hello, Saswat.

    Function IpcNotify_getReadMailbox get readReqMailboxBaseAddr form  array -- gIpcNotifyMailboxConfig, Right?

    So, I think in IpcNotify_isr, Step 1 is done. I agree with that. However, my question is where step 2 is executed? Or step 2 is not necessary?

    And please note that Step 1 and Step 2 use different registers.

     

  • Hello Jerry,


    Yes in this SDK driver design you do not need to use the READ_DONE.

    Regards,
    Saswat Kumar  

  • Hello Saswat,

    Thank you for confirm.

    One more question.

    When communicating with R4 core in mailbox.c, WRITE_DONE & READ_DONE & READ_DONE_ACK is used. What is the reason for this difference, and when you must use the READ_DONE register and when you can not?

    In summary, how should I decide use READ_DONE or not?

  • Hello Jerry,

    The IPC is used mainly for communication between the R5 and the DSP as it stands for inter processor communication. In the way the driver is designed for IPC you do not need that particular bit.

    In case you are using the mailbox, you will see the communication with the R4 core. As R4 implementation uses this  READ_DONE we will have to use this READ_DONE here as will.

    In short if you are using the IPC to communicate between R5 and DSP you do not need the READ_DONE, but if it's with R4 and you are using the mailbox you need to use it.

    Regards,
    Saswat Kumar