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: Ways to configure the size of the rpmsg messages I can send.

Part Number: TMDS64EVM

Hi all,

Is there a way to configure the size of the rpmsg messages I can send from both linux A53 Core and R5F core/s ?

I saw here

dev.ti.com/.../node

that by default the size 512.

can it be bigger? 

smaller ?

is it fixed?

if there is can you send me a link for a guide ?

  • Hello Shachar,

    It depends. Please reference this MCU+ SDK document for more details: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_06_00_45/exports/docs/api_guide_am64x/IPC_GUIDE.html

    For the part that you care about:

    "
    There are two APIs to exchange messages between the CPUs

    • IPC RP Message,
      • Here a CPU can send messages as packet buffers to a logical end point or port on another CPU
      • The packet buffers themselves are kept in a "shared memory" which is visible to both the participating CPUs
      • When a packet is put into the shared memory, a CPU needs to interrupt or "notify" the other CPU that there is a new packet to process. This is done using a HW interrupt mechanism.
      • Message packet size
        • Packet size when Linux is one end is fixed to 512 bytes. This is fixed in Linux kernel by default.
        • Minimum packet size when RTOS/NORTOS at both ends is 4 bytes.
        • Max packet size when RTOS/NORTOS at both ends can be defined by end user, though 512 bytes is the max recommended size.
        • Larger packet means larger shared memory to hold the messages.
      • Logical end points can be up to RPMESSAGE_MAX_LOCAL_ENDPT count.

    "

    If you want to send more than 512 bytes of information when communicating between Linux and a remote core, please take a look at our shared memory example: https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/

    In the shared memory example, one core writes data to a shared memory location, and then uses RPMsg to notify the other core that the data is ready to be read.

    Regards,

    Nick