工作近1年了,也快过年了,总结下一年来学的知识点。
进入正题:
DM6446评估板带有256MB内存,分为7个Segment,Default Memory Map如下:
涉及到内存分配和调整的地方分3类。
1、linux
2、cmem(dsp和arm的数据BUF共享)
CMEM是一个连续物理存储空间分配模块,使得ARM端linux进程和DSP端算法直接能够共享缓冲区,当应用程序需要在共享缓冲区动态申请一个连续的物理空间时,通过调用CMEM的API可以实现,申请得到的空间可以供DSP端访问,进行算法处理时数据的传递和处理。
3、dsp端用的内存
DDRALGHEAP、DDR/DSPLINKMEM、CTRLRESET 这些段存在DSP server源代码中的.tcf或*.tci文件中指定。默认分配如下可自行修改:
/*
* Setup platform-specific memory map:
*/
var mem_ext = [
{
comment: "DDRALGHEAP: off-chip memory for dynamic algmem allocation",
name: "DDRALGHEAP",
base: 0x88000000, // 128MB
len: 0x07700000, // 119MB 0x07A00000
space: "code/data"
},
{
comment: "DDR2: off-chip memory for application code and data", //通常 算法要调用的lib的代码量太大的话,编译会提示此地 方出错,需分配大
name: "DDR2",
base: 0x8F700000, // 250MB 0x8FA00000
len: 0x00700000, // 7MB 0x00400000
space: "code/data"
},
{
comment: "DSPLINK: off-chip memory reserved for DSPLINK code and data",
name: "DSPLINKMEM",
base: 0x8FE00000, // 254MB
len: 0x00100000, // 1MB
space: "code/data"
},
{
comment: "RESET_VECTOR: off-chip memory for the reset vector table",
name: "RESET_VECTOR",
base: 0x8FF00000, // 255MB
len: 0x00000080, // 128 B
space: "code/data"
}
];