Memory Overview¶
The following describes the default memory layout for the MitySOM-AM57x platform.
Useful links:
https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_how_to_guides.html#customizing-memory-map-for-creating-multicore-applications-on-am57xx-using-ipc
https://www.ti.com/lit/an/sprac60/sprac60.pdf
DDR Memory¶
The AM57x has two EMIF banks, each connected to 1GB of DDR.
Memory Interface | Physical Address |
EMIF 1 | 0x80000000 |
EMIF 2 | 0xC0000000 |
The DDR is mapped in the am57xx-mitysom.dtsi device tree which maps the 2GB of memory contiguously.
memory@0 { device_type = "memory"; reg = <0x0 0x80000000 0x0 0x80000000>; };
Multi-Core Memory Map¶
The two DSP cores and two IPU cores are mapped in the am57xx-mitysom-baseboard.dtsi device tree.
This can be modified for example to remove the IPUs and increase the DSPs memory ranges. The resource table
maps the virtual addressing for the processor to the physical address of the CMA regions at load time via the
remoteproc Linux driver. See Customizing Multicore Applications for more details on adjusting the memory sizes.
ipu2_memory_region: ipu2-memory@95800000 { compatible = "shared-dma-pool"; reg = <0x0 0x95800000 0x0 0x3800000>; reusable; status = "okay"; }; dsp1_memory_region: dsp1-memory@99000000 { compatible = "shared-dma-pool"; reg = <0x0 0x99000000 0x0 0x4000000>; reusable; status = "okay"; }; ipu1_memory_region: ipu1-memory@9d000000 { compatible = "shared-dma-pool"; reg = <0x0 0x9d000000 0x0 0x2000000>; reusable; status = "okay"; }; dsp2_memory_region: dsp2-memory@9f000000 { compatible = "shared-dma-pool"; reg = <0x0 0x9f000000 0x0 0x800000>; reusable; status = "okay"; };
DSP Virtual Memory Map¶
The DSP virtual memory maps are defined in rsc_table_vayu_dsp.h header that is part of the RTOS SDK. The default mapping is as follows:
Section | Virtual Address | Size |
DSP_MEM_TEXT | 0x95000000 | 0x00100000 |
DSP_MEM_DATA | 0x95100000 | 0x00100000 |
DSP_MEM_HEAP | 0x95200000 | 0x00300000 |
To setup a custom resource table, please refer to Customizing Multicore Applications as well as IPC Resource customTable
The resource table maps the virtual addressing for the processor to the physical address of the CMA regions at load time via the
remoteproc Linux driver.
This can be seen in the default config.bld DSP file.
/* --- External Memory --- * Virtual Physical Size Comment * ------------------------------------------------------------------------ * 9500_0000 ????_???? 10_0000 ( ~1 MB) EXT_CODE * 9510_0000 ????_???? 10_0000 ( 1 MB) EXT_DATA * 9520_0000 ????_???? 30_0000 ( 3 MB) EXT_HEAP * 9F00_0000 9F00_0000 6_0000 ( 384 kB) TRACE_BUF * 9F06_0000 9F06_0000 1_0000 ( 64 kB) EXC_DATA * 9F07_0000 9F07_0000 7_0000 ( 448 kB) PM_DATA (Power mgmt) */ var evmDRA7XX_ExtMemMapDsp = { EXT_CODE: { name: "EXT_CODE", base: 0x95000000, len: 0x00100000, space: "code", access: "RWX" }, EXT_DATA: { name: "EXT_DATA", base: 0x95100000, len: 0x00100000, space: "data", access: "RW" }, EXT_HEAP: { name: "EXT_HEAP", base: 0x95200000, len: 0x00300000, space: "data", access: "RW" }, TRACE_BUF: { name: "TRACE_BUF", base: 0x9F000000, len: 0x00060000, space: "data", access: "RW" }, EXC_DATA: { name: "EXC_DATA", base: 0x9F060000, len: 0x00010000, space: "data", access: "RW" }, PM_DATA: { name: "PM_DATA", base: 0x9F070000, len: 0x00070000, space: "data", access: "RWX" /* should this have execute perm? */ }, };
DSP Stack/Heap Allocation¶
The default DSP configuration allocates 1MB for the Stack and 3MB for the Heap. You can change how much of this is used in the Dsp.cfg file as follows:
// Allocates the stack to be 4KB Program.stack = 0x1000; var Memory = xdc.useModule('xdc.runtime.Memory'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var heapMemParams = new HeapMem.Params(); // Allocates the heap to be 32KB heapMemParams.size = 0x8000; Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
Go to top