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.

Msgcom or MessageQ

Hi all,


I am trying to implement a communication between ARM and DSP in the KeyStone 2 device.


I was almost sure that Msgcom was the way, nevertheless I read that many components are needed in order to put a Msgcom project to work, like RM, AGENT, JOSH, etc. This idea was complemented when I tried to set up the example of bidirectional comm using Msgcomm. Until now, I could not manage to set it in order to see Msgcom in "action".

By the other hand, I also read that MessageQ based IPC could be used to almost the same purpose. I know that Msgcom uses Multicore Navigator.

I have read in other threads in this forums somethings, but nothing well defined about it.


What I need to know is:

- Which are the differences between Msgcom and MessageQ (not about the APIs, but about how they work in a Low Level)? Are both from IPC? (In the MCSDK 3.x the Msgcom libraries arent in the IPC carpet, but in the SYSLIB package)

- For my purpose, which is the bidirectional communication, which one of both packages you recomend? Being aware principally about the time of implementation, which is easier, but at the same time the robustness of both packages.


Thank you so much for any help about it.

Ronny

  • Ronny,

    Msgcom: Data Path Component of IPC
    MessageQ: Control Path Component of IPC
    Find the more details from the IPC user guide and this wiki.
    http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Developing_Transports#IPC
    You can find the example code using IPC, RM at this wiki,
    http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Developing_System_Mgmt#DSP_.2B_ARM_Linux_Test_Project
    Yes, you can use bidirectional communication using MessageQ, create the two queues on both the cores.

    Both the core should have receive and transmit like put and get.

  • Pubesh,

    Thank you for your reply.

    Indeed, I know that Msgcom is the Data Path of IPC and MessageQ the Control Path, but with both you can do practically the same I think, right? So what are the benefits of using one of the other?

    Another thing that I know is that Msgcom uses Multicore Navigator, but what about MessageQ in IPC 3.x? Does it use Multicore Navigator (in IPC 3.x)?

    I saw that in order to use Msgcom, I have to configure several subsystems such as  Agent, JOSH, Message Router, udmalib, PktLib, and Resource Manager. This configuration has to be done in MessageQ as well?

    So again, having known these aspects, which could be the best approach: Msgcom or MessageQ?

    There must be concrete reasons about why using one or the other. So if you or anyone could tell me that I would be very pleased.

    Thanks

    Ronny

  • Ronny,

    Apologize for the delayed response, I was on vacation.

    The application utilizes the IPC 3.x stack to communicate from the main processor to the slave core.
    Here the MessageQ will be the interface.
    http://processors.wiki.ti.com/index.php/IPC_3.x
    http://processors.wiki.ti.com/index.php/IPC_BenchMarking
    http://processors.wiki.ti.com/index.php/IPC_3.x_FAQ

    I hope you can refer this wiki page, how to config for msgcom.
    http://processors.wiki.ti.com/index.php/Msgcom
     
    The Msgcom will be retired soon. The Msgcom product will continue to be supported on existing devices.
    But development has stopped and support for new devices will not be added.

    So that you can use the messageQ for IPC_3.x

  • Thank you Pubesh, your help is very useful.

    Can you please tell me if MessageQ in IPC 3.x could use Multicore Navigator? Or just the Msgcom packages can use it?

    I mean in the KeyStone II environment.


    Regards,

    Ronny

  • Ronny,

    MessageQ is based on rpmsg for communication between ARM and DSPs.
    A proprietary shared memory protocol for communication between DSPs.
    You can use without multicore navigator for MessageQ.

    KeyStone II devices:
    The IPC ARM side component is packaged in Yocto/bitbake recipe.
    So the user can use ti-ipc package to develop user space IPC applications in MCSDK package.

  • Ronny,

    This will help for better understand of IPC usage on Keystone II device.

  • Pubesh,


    Im sorry, but I really didnt get what you tried you mean.

    I want to use the Multicore Navigator, but CAN I USE IT with MessageQ?

    If Msgcom will be removed then I need something with a long-term support, which in this case would be MessageQ within IPC 3.x packages, I guess.

    So, as TI support team member, could you recomend which must I use in order to reach what I want (Using Multicore Navigator and have long-term support, including new releases) ?

    Thank you,

    Ronny

  • Hi,


    So what is going to be the replacement for Msgcom?


    Msgcom is suppose to be the data path and it is high performance since it is based on the Multicore Navigator. So using IPC is clearly not a option given that TI in all the documentation states that IPC is low performance and only for control.

    We need to know on which API we can rely for ARM - DSP communication with hight performance. IPC messageQ is definitely not the right one!!


    Thanks

    Miguel

  • What happened to the discussion here? I would also be interested in knowing what is the preferred IPC scheme for low latency communication between ARM and DSP. MessageQ seems to be heavily recommended but I am a bit worried about the performance.

    Marko