工程师好:
我看6678的存储器Local L2 SRAM 逻辑地址是从0x00800000~0x0087ffff一共512KB的空间,LL2 后面的空间地址是0x00880000~0xdfffff是保留的,一共是5MB+512kB的,我设置平台文件时候L2SRAM时候,超出LL2空间的空间的,处于保留的部分能不能用,我看到我的map文件显示heaps.HeapMem的显示越界,显示这个太大,若我要申请这么大空间,是不是在cfg文件上,通过设置sectMap方式设置。
Shine:
LL2只有512K大小,您是要用保留部分?
Nancy Wang:
试试看增大heapMemParams.size 的大小,sectMap是配置段的。
Ryan BL:
你这种情况确实要将heap放在LL2的话只能考虑缩减heap的大小或缩减其他部分对LL2的占用来让出空间;
如果你只是单存的想增大到一定量的heap,那就需要指定其到MSMC或DDR;
一般地建议是:heap放在MSMC或LL2内存以提高效率;对大块内存不建议使用allloc等heap申请方式而使用全局buffer。当然,如果你运行时malloc的都没有速度要求,就可以忽略以上建议并放心地把heap放到DDR去。不过一般地还是不建议使用过多的malloc/free,仅malloc后作为静态使用也是个不错的主意。毕竟这个是嵌入式系统。
另外。sys/BIOS貌似对heap管理可以支持多个heap pool,申请的时候可以指定申请的堆空间。粗略从html的手册上好像看到过相关接口,感兴趣的话你可以搜寻下,或许可以综合满足你的需求。