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.

RTOS/AM5728: IPC Methods

Part Number: AM5728

Tool/software: TI-RTOS

Hi TI experts;

Im trying to use TI AM5728 for image processing and its my first xperiment:

ARM runs linux and DSP uses RTOS

ARM gets the image and hand it over to dsp1 for further process, then dsp2 takes part for some other process as a slave of dsp1.

as far i understand from ti DOC's, the best way to do that is IPC, so i am using messageQ Ex as reference, to do that in high speed i need to pass pointers between unit, not data

1- first question i have, is this the best way to handle my need??? all what matters is speed, if no, what is your suggestion?

2- how an i pass pointers in this IPC case?

plz lead me on how to do this with all details you can give me. thanks for your support

  • Hello,

    Yes, IPC is the best option here. We have an image processing demo that uses IPC you can refer to:

    IPC documentation can be found here:

    I believe the messageQ example already passes a pointer to the shared buffer. If you need to pass a lot of data, we have a Big Buffer example you may refer to as well. 

    Hope this helps.

  • Hello  Sahin;

    So now im sure that my first step is right,

    I already checked the Demo you mentioned, but it uses a lot of API's that im not familiar with, so its a bit confusing tracing project without any documentation, in general I think it doesn't use any pointers to data but passes the data around, takes time, and its a problem, am i right??

    I tried to pass pointers in messageq example, but it happened not to treat that as a pntr, DSP takes it like a bunch of irrelevant numbers!!!

  • There is another question comes to mind, for now im using bmp files to process, with c functions fopen() and fread(), arm allocates bmp on memory, then from bmp structure i can see the result is true, is there any wrong with this?? Or any API recmonded by TI??? For the best performance i mean
    Thank you for your time sahin.
  • Hello,

    This training video goes over the image processing demo a bit more, please take a look:
    software-dl.ti.com/.../presentation_html5.html

    For the messageQ example, how are you verifying that the pointer is being passed correctly?
    Are you modifying the msg struct in AppCommon.h?

    For optimizing IPC performance, you can refer to the following wiki page:
    processors.wiki.ti.com/.../Optimizing_IPC_Applications

    I'm going to loop in our expert on the image processing demo to answer your other questions.

    Regards,
  • Hi, thanx a lot for the feedback

    In messageQ example I passed a array pointer to check if it works, but it didnt actualy return what i expected.

    According to this link: processors.wiki.ti.com/.../SharedRegion_Module

    i figured that using messageQ passing pointers without CMEM doesent work! now it makes sense why EVM runs into core dump situation when i tried to change array data on DSP! can you confirm??

    for them who are intrested in this object, i advice using linux tests located in ipc dir available for both ARM and DSP cores by having in mind that CMEM usage is for HLOS and Shared Region used in SYS/BIOS.
    processors.wiki.ti.com/.../CMEM_Overview