部件号:EVMK2H
工具/软件:TI C/C++编译器
当使用C6000编译器v 8.2 时,在SYS/BIOS .cfg文件中为C66内核编译SYS/BIOS 6.50 .1.12 程序时,尝试将堆大小设置为以下值,这将使用大部分的2GB区域:
bios.heapSize = 0x7fe0万;
这将使SYS/BIOS生成以下阵列,为SYS/BIOS生成的configPkg/package/cfg/<project_name>_pe66.c源文件中的堆分配空间:
/*--> ti_SysBIOS_States_HeapMem_Instance_0_buf__a */ __t1_ti_SysBIOS_States_HeapMem_Instance_State__buf ti_SysBIOS_States_HeapMem_Instance_Instance_State_0_buf_a_2145386496];
编译程序时未生成警告,但查看映射文件时,堆数组的大小被截断为0x1fe0万字节,而不是源文件中指定的大小0x7fe0万:
远 08000000000 1fe00c08 未初始化 800万 1fe0万 (.common:ti_SysBIOS_States_HeapMem_Instance_0_Buf_A) 9{0万,0.08万 66AK2H14_C66_max_SysBIOS_heap_size_pe66.oe66 (_far:taskStackSection) 9fe0.08万 00000200 (.common:xdc_runtime日志Buf_instance_State_0_entryArr__A) 9fe00a0万 0000.02万 (.COMMON:XDC_Runtime_SYSMIN_Module_State_0_outbuf__A) 9fe00c0万 0000.0008万 (.common:parmbuf)
使用nm --print-size检查目标文件中符号的大小,显示编译器已截断 ti_SysBIOS_States_HeapMem_Instance_State_0_buf_a数组的大小。
我认为此问题是未解决缺陷 SDSCM4.3877万的主题。 C6000编译器是根据设计截断对象>=512 MB的大小,还是一个错误?
SDSCM4.3877万的标题表明,预期的修复方法是使编译器在对象大小被截断时发出警告,而不是生成请求的对象大小。