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

堆溢出问题

问题1:配置文件中systemHeap是默认映射到L2SRAM中的,我用malloc动态分配内存时溢出了,C6670中每个核最大的L2SRAM为1MB,不能满足我的要求,我想要把heap映射到DDR3中,该如何映射呢?

问题2:可以把systemHeap映射到共享内存中吗?

问题3:systemHeap映射到DDR3中访问速度是多少?对程序性能有多大影响呢?好像GPU中访问显存的带宽好像有140GB,我想知道6670中访问DDR3、L2SRAM、MSM SRAM他们各自的访问带宽多少呢?

问题4:如果我的应用想通过malloc动态分配部分数据到L2 SRAM,部分数据到MSM SRAM,部分到DDR3该如何配置呢?又该如何动态分配呢?

Wei:

关于问题1、4请参考BIOS手册中的第六章节,关于heapMem, heapBuf, heapMultiBuf的描述和使用方法,

问题2,如果共享内存只被当作当前核的heap,应该是可以的。否则不行

问题3可以参考6678的应用手册Throughput Performance Guide for C66x KeyStone Devices (Rev. A)。

Jerry Liu1:

回复 Wei:

搭车提个问题,BIOS手册中的第六章节,6.8和6.9我都看过了,但是没有找到如何使用CFG文件将一个Heap分配到共享内存的方法,请问我想在cfg文件中静态创建一个HeapMultiBuf ,且将该Heap放到共享内存中,该如何做?谢谢!

Andy Yin1:

回复 Jerry Liu1:

首先需要在cfg文件中创建一个heap,可以指定heap的大小及所在memory位置,然后使用memory_alloc从指定的heap中分配内存。参考sysbios手册dynamic memory allocation一节。

Jerry Liu1:

回复 Andy Yin1:

谢谢Andy的答复!我阅读了您说的Sysbios中关于动态分配内存的那一段介绍,我的做法如下:

在cfg中创建了heap,是HeapMultiBuif类型的Heap,大小也指定了,使用program.sectMap[]指令将该Heap放到共享内存中,但是编译结果显示该Heap被分配的位置是在L2SRAM,没有出现在我希望的位置!

 

赞(0)
未经允许不得转载:TI中文支持网 » 堆溢出问题
分享到: 更多 (0)