Forums » Software Development »
Memory map and DSPLINK
Added by Rich Bagdazian over 14 years ago
I've put together some information which may be of help to others planning to use DSPLINK to support interprocessor communication on the MityOmap/MityDSP platform.
From the perspective of the DSP which addresses memory in an absolute (as opposed to virtual) space, the memory on the MityOmap is as follows:
DSP memory:
start: 0xC0000000
end: 0xC7FFFFFF
for a total available memory of 128Mbytes
Upon investigation into the memory layout specified in the file:
${DSPLINK}/config/all/CFG_OMAPL138GEM_SHMEM.c (where DSPLINK) is the path to where your DSPLINK installation resides.
It can be seen that the DSP is instructed to boot at address 0xC3E00000
We now need to take into consideration the amount of memory reserved for use by the Linux kernel at boot time which is set in the U-boot bootargs. The default setting upon delivery appears to be set to 64Mbyte.
The implications here are that memory from 0xC0000000 to 0xC3FFFFFF are committed to the linux kernel and unavailable for use by the dsplink.
What this means is that to use the linux kernel set to 64M together with DSPLINK, changes to the DSPLINK memory layout would be required. In my application, I don't anticipate using that much memory for the Linux kernel and have backed the boot arg to 48M
With this change, the Linux kernel will utilize memory from 0xC0000000 to 0xC2FFFFFF and not compete for the space specified by the aforementioned DSP Bootvector specification.
With this change to the U-boot bootargs, dsplink as delivered by TI should run without Linux/DSPBIOS memory conflict issues.
Final analysis of the memory layout leads to the following map:
0xC0000000 0xC2FFFFFF - Linux Kernel (Bootarg specifies 48M)
0xC3000000 0xC3DFFFFF - Unused (available to DSP and potentially to ARM through use of CMEM driver, this is 14Mbyte)
0xC3E00000 0xC3E0007F - DSP Bootvector (128 bytes)
0xC3E00080 0xC3EFFFFF - DSP Program/Data space (1Mbyte - 128 bytes)
0xC3F00000 0xC3F04FFF - DSPLINK Shared Memory Block 0 (20 Kbytes)
0xC3F05000 0xC3F30000 - DSPLINK Shared Memory Block 1 (172 Kbytes)
0xC3F30000 0xC3FFFFFF - DSPLINK Pool Memory (832 Kbytes)
This is the extent of memory defined by the dsplink memory mapping.
Since the actual memory available to the processor extends to 0xC7FFFFFF
This memory may be configured as desired for whatever use the DSP application
code would require. It would be necessary to use CMEM to make this memory available to the Linux kernel for direct use as shared memory, or the DSPLINK Component layout can be expanded as desired to make more memory available to the dsplink facility.
-Rich Bagdazian
Go to top