TI中文支持网
TI专业的中文技术问题搜集分享网站

为什么DM6467用Memory_alloc() 函数分配连续的720*576*4 字节的内存都不行。256M DDR2 内存都用在哪了?

      最近写算法,用Memory_alloc() 函数分配连续的720*576*4 字节的内存都不行,只能分配720*576*3 字节的连续内存空间,但6467 DDR2的容量是256M,想请教一下高手256M DDR2 内存都用在哪了,要怎样才能使得算法中可分配的内存更大一些,不胜感激。

Chris Meng:

你好,

请问你是在哪里申请连续的内存?ARM侧?如果是,TI软件默认是划分了一块连续的内存给CMEM,建议利用cmem来获取连续空间。

关于cmem的介绍,请参考:http://processors.wiki.ti.com/index.php/CMEM_Overview。

YiPeng He:

回复 Chris Meng:

你好,

我是想在DSP侧获取连续的空间,用于存储算法中的视频临时数据。

Chris Meng:

回复 YiPeng He:

你好,

请问你是否使用的CE(VISA接口)?还是直接通过CCS下载的DSP程序?如果是后者,你要看看你DSP的cmd文件是如何配置的。

Chris Meng:

回复 Chris Meng:

你好,

如果是通过CCS在DSP上使用malloc,应该是在heap段来获取buffer的,你要看看你的heap开的是否足够大。

malloc和memery_malloc的区别,请参考文档:1 关于malloc和Memory_alloc的区别.

YiPeng He:

回复 Chris Meng:

你好,

我是使用的CE,我的DSP端DDR2分配如下:

var mem_ext = [{ comment: "DDRALGHEAP: off-chip memory for dynamic algmem allocation", name: "DDRALGHEAP", base: 0x88000000, // 128MB len: 0x07A00000, // 122MB space: "code/data"},{ comment: "DDR2: off-chip memory for application code and data", name: "DDR2", base: 0x8FA00000, // 250MB len: 0x00400000, // 4MB 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"}];

问题好像出在Memory_alloc()函数分配的内存在“DDR2"段,而不是在"DDRALGHEAP"段。

不知如何修改可使Memory_alloc()函数分配的内存处于"DDRALGHEAP"段。

1 关于malloc和Memory_alloc的区别.这个链接好像打不开

Chris Meng:

回复 YiPeng He:

你好,

附上链接上的文档:

YiPeng He:

回复 Chris Meng:

你好,

感谢你的耐心回答,但我这边没用CCS,是用的 XDM接口,是根据”videnc1_copy“例子改的。

是不是在里面写算法,Memory_alloc()函数分配的内存就是在"DDRALGHEAP"段。

Chris Meng:

回复 YiPeng He:

你好,

我认为和你使用的cfg/tcf文件的配置有关。CE例子里面的local.tcf有如下内容:

/* set all BIOS data and code sections to be in DDR2 */bios.setMemDataHeapSections(prog, bios.DDR2);bios.setMemDataNoHeapSections(prog, bios.DDR2);bios.setMemCodeSections(prog, bios.DDR2);

下面论坛讨论你也可以看看:

https://e2e.ti.com/support/embedded/tirtos/f/355/p/66841/241910

赞(0)
未经允许不得转载:TI中文支持网 » 为什么DM6467用Memory_alloc() 函数分配连续的720*576*4 字节的内存都不行。256M DDR2 内存都用在哪了?
分享到: 更多 (0)