Other Parts Discussed in Thread: OMAPL138, DA8XX
Hello TI!
We're currently evaluating the use of TI's IPC for ARM<->DSP communication. Here is the environment:
- OMAP L138 LCDK
- Processor SDK Linux OMAPL138 06.03.00.106
- SYS/BIOS 6.76.03.01
- IPC 3.50.04.08
IPC product tree includes an example (ex02_messageq) that demonstrates the use of MessageQ+remoteproc+virtio chain for messages exchange. In this example, a contiguous range of DDR memory is used for both the IPC buffers (0xc3000000-0xc31000000) and DSP executable (>0xc3100000). As far as we understand, the DSP's part of IPC chain doesn't support the cache coherence maintenance, thus the cache is simply disabled in ex02_messageq/dsp/Dsp.cfg/Dsp.cfg:
/* Set 0xc0000000 -> 0xc3ffffff to be non-cached VirtQueue based IPC * Set 0xc4000000 -> 0xc4ffffff to be cached. Not currently not used */ Cache.MAR192_223 = 0x00000010;
Running the DSP code in DDR with no cache is nonsense. Taking into account the 16 MB resolution of MARs, we could think of allocating the DSP memory range in such a way that the first megabyte (devoted to IPC) hangs in a non-cached area. That's just awkward, but okay. But our primary concern is that OMAP L138 processor features a 128K range of fast on-chip memory destined for ARM-DSP communication (0x80000000-0x8001ffff). In our application, we need only a small number (say, 8) of 4KB buffers for communication from/to the DSP., these together with the trace buffer could perfectly fit into the 128K of the shared memory. We guess if the power of TI's IPC stack could be coupled with this hardware capability.
Could you please provide a high-level view of how this task might be solved with existing remoteproc implementation? Clearly, this involves some hardcore Linux programming, but what is your opinion on the most efficient approach? As an example, we see that DTBs for other TI cores might specify more than one carveouts (which is not the case for da850-lcdk.dts), such that the respective remoteproc variant has some flexibility in memory allocation. Could you point to some reference solution?
Many thanks for your assistance!
Regards, Pavel