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.

CMEMK usage

Hi there,

       I am about to write a sample to communicate between the ARM and DSP cores found in the OMAP3530 using CMEM.

       But, CMEM package provides application samples which gives only one application which seems to be on the ARM side. What can I do for the DSP side source.

How can i go with this? Any kind of inputs are well appreciated as I am entirely new to this CMEM thingy.

  • Hi Pradeep,

    The shared memory protocol for ICP (interprocessor communications) is implemented as follows:

    The ARM and DSP are programmed to a pre-determined memory address where a message will be sent from the ARM to the DSP; and another for messages sent from the DSP to the ARM.

    One processor sends messages to the other by writing the message into the pre-determined address and then sending an interrupt to signal the other processor that a new message is available. When transferring data buffers, only a pointer to a given buffer needs to be passed since the buffer resides in shared memory that is accessible to both the processors. ARM buffer addresses must be translated into physical addresses when being presented to the DSP, as the DSP does not have an MMU.

    Once the processor receiving the message has read it, it marks a flag in shared memory to indicate that the message memory is now available to be rewritten with another message.

    An example for such messaging you can find in the presentation below:

    http://www.ti.com/lit/ml/sprp511/sprp511.pdf

    You should has the DSP/BIOS working on the DSP side. You can find more detailed description of the data transfer between ARM which is general purpose processor and DSP in the DSP/BIOS Programmer's guide at the link below:

    https://pixhawk.ethz.ch/_media/omap/programmersguide.pdf

    Pay attention on the POOL_translateAddr function and examples in the guide.

    Search in the source for ..\dsplink_1_64\dsplink\gpp\inc\usr\pool.h file for the POOL_translateAddr function.

    BR

    Tsvetolin Shulev