I am trying investigate various inter-core communication mechanism on my Dual core Arm-Cortex Processor. One of the core is running a baremetal application and another one is running Linux operating system. I just came across the remoteproc framework ( rpmsg) and I could not find much information online. Only information i found was http://lwn.net/Articles/489009/ which is quite less to get started. Is there any one who could help me with this?
Asked
Active
Viewed 3,336 times
4
-
do you need a framework to communicate with a dsp? remoteproc looks like for such purpose. – auselen Sep 26 '13 at 11:04
-
No i have just a baremetal application doing just a real time task on one core and the other core is running linux. I need to communicate some information from the Real time task to the a process running linux on the other. I think the framework can be used for this purpose too. – Nuetrino Sep 26 '13 at 11:22
-
You can use the *bus locking* instructions like `ldrex` and `strex` to implement [tag:lockfree] IPC algorithms, if both CPUs support this. Possibly you can find a framework like this. If both CPUs do not support this, then you need some other hardware mechanism that is particular to the **SOC**; not all **Cortex** chips support `strex` and `ldrex`, so we need to know a little more. – artless noise Sep 26 '13 at 13:37
-
Hi Artless Noise, Could you suggest some IPC algorithms or Frameworks which i should look into. I am actually trying to implement a IPC between 2 cores running completely different programs. One is running linux and another is running a bare metal application. I saw this Remoteproc(rpmsg) based communication is used widely in a Asymmetric Multiprocessing set up widely. But there not much papers explaining the same and also how the performance of the same will be. – Nuetrino Oct 02 '13 at 14:08
-
@artlessnoise `{ldr,str}ex` is used in IPC quite often, but it is so low level that has nothing to do with the remoteproc module in Linux kernel. – Grissiom Nov 27 '13 at 13:01
-
@Grissiom That is correct. I was proposing a `{ldr,str}ex` as an alternative to remoteproc. He has a dual core ARM-Cortex and then says he wants Asymmetric Multiprocessing? For example, [Atomic operations in ARM](http://stackoverflow.com/questions/11894059/atomic-operations-in-arm) has information on *inter-cpu* primatives. A simple ring buffer can be used for some IPC schemes. – artless noise Nov 27 '13 at 15:32
2 Answers
2
I come across the same issue as well. I found some additional resources:
Doc in the kernel tree as always:
OMAP wiki that gives the overview of the design:
BTW. Thanks for the lwn link. That's quite helpful.

Grissiom
- 11,355
- 3
- 18
- 23
2
Since Xilinx' Zynq SoC also includes 2 ARM Cortex-A9 cores, they have published an application note in which they make a Linux Kernel communicate with a FreeRTOS system via remoteproc/rpmsg. You can find the document here: PDF
Although the document is quite specific, you might be able to pull out some information. You can download the sources here: Sign in to Download File (a Xilinx account is required). The *.bsp file can be renamed to *.tar.gz which can then be extracted.
If you have any further questions, don't hesitate to ask.

Engr Waseem Arain
- 1,163
- 1
- 17
- 36

sven
- 371
- 2
- 11