在6678中,运行多核程序时有时会报错,错误内容如下:
这是什么原因,内存空间不够么?
我在运行时修改了RTSC中的内存分配,将code和data都分配在DDR3上,这样也不可以?
那我应该怎么修改呢?
Wei:
这里报错的是heap,不是data和code。
你用malloc申请的内存段很大啊,或者可以考虑静态分配
wumengtiankuo zhou:
回复 Wei:
谢谢Wei Chen2。
你说的静态分配,是指不要使用malloc,用数组么?
那如果想用malloc,应该可以修改内存段的大小,类似于DM6467中修改tcf文件中的mem_ext数组,这种方法不行么?
Wei:
回复 wumengtiankuo zhou:
静态分配就是预先分配好内存给相应的变量。
使用malloc的时候注意在bios中设置heap的大小。
wumengtiankuo zhou:
回复 Wei:
我现在是对RTSC中的内存分配进行了修改,修改如下,我使用的是CCS 5.2.1:
那还需要修改什么么?
Wei:
回复 wumengtiankuo zhou:
你检查一下工程的bios配置文件吧,缺省的heap大小是4k byte。
wumengtiankuo zhou:
回复 Wei:
谢谢Wei!
在cfg文件中有代码如下:
var heapMemParams = new HeapMem.Params;
heapMemParams.size = 0x8000;
var heap0 = HeapMem.create(heapMemParams);
Memory.defaultHeapInstance = heap0;
如果设置bios中的heap,此时会同时设置BIOS.heapSize和Memory.defaultHeapInstance,因此设置的BIOS.heapSize会被忽略。
此时应该如何修改呢??
删除上述代码,使用BIOS么?
Wei:
回复 wumengtiankuo zhou:
BIOS手册里面的描述是这样的
If you want to use a different heap manager for the system heap, you can specify the system heap in your
configuration file and SYS/BIOS will not override the setting.