Tool/software: Linux
Hi:
I have an AM5706 evm with Linux in A15 and TI-RTOS in DSP/M4. For IPC communication:
The hardware resources are :
- spinlock, mailbox, interrupts and RAM memory.
Some of Linux services & functions:
- GateMP, MessageQ, RPMsg (remoteproc, rpmsg) ...
I am trying to understand how the Linux IPC services are implemented at low level based on the hardware resources,
so I have read some documentation, E2E questions and so on. It is not very clear for me, so here are some
of my interpretations and I would like to confirm them:
GateMP: I want to work with "GateMP_RemoteProtect_SYSTEM". Can I assume that
- it makes use of hardware spinlock?
- it has at low level the "spin_lock_irqsave()" function?
- I can use it from user space? I need to disable interrupts that cannot be done at user space.
- there is any function at user space that wraps a hardware spinlock? Or I need to work at kernel space?
MessageQ: can I assume that
- it has "remoteproc" and "rpmsg" as a mechanism to transport the messages and vring buffers? Or it is based on hardware mailboxes?
- it triggers a hardware interrupt to the receiving core?
- then it triggers a software interrupt at user space?
- it can only be used at user space?
RPMsg: can I assume that
- it has a similar implementation as the MessageQ?
- it has "remoteproc" and "rpmsg" as a mechanism to transport the messages and vring buffers?
- it triggers a hardware interrupt to the receiving core?
- it only works at kernel space?
- Where can I find some user´s guied documentation?
"spin_lock_irqsave()": can I assume that
- it makes use of hardware spinlock?
- I can only use it at kernel space?
Hardware mailbox:
- what Linux user service makes use of it?
- I can only use it at kernel space?
Triggering a hardware interrupt from one core to other:
- is there any mechanism in Linux to achieve it?
- does it work only at kernel space?
- is there any mechanism other than a maibox in TI-RTOS to achieve it?
Sorry for the question being so long.
Regards
Billa