大家好
TMS320C6678板子,将之前做的工程的common文件更新成官网最新版时遇到如下错误
"../C6678.cmd", line 36: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".sysmem" size 0x2000 . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54"../C6678.cmd", line 46: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".stack" size 0x1000 . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54
>> Compilation failure
"../C6678.cmd", line 33: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".far" size 0x99c . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54"../C6678.cmd", line 39: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".fardata" size 0x692 . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54"../C6678.cmd", line 25: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".csl_vect" size 0x200 . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54"../C6678.cmd", line 37: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".cio" size 0x120 . Available memory ranges:
LL2MEM size: 0x7fc00 unused: 0x5c max hole: 0x54
均与LL2有关,请问
1.什么原因造成的
2.应该怎样修改,
谢谢
.cmd配置
-c
-heap 0x2000
-stack 0x1000
MEMORY
{
VECTORS: origin=0x00800000 length=0x00000400
// little_boot(RWX): origin = 0x800400 length = 0x400
//csl_vect: origin=0x00800800 length=0x00000200
LL2MEM: origin=0x00800400 length=0x0007FC00
MSMCRAM: origin=0x0C000000 length=0x00300000
MSMDATA:origin=0x0C300000 length=0x00100000
DDR3RAM: origin=0x80000000 length=0x10000000
DDR32RAM: origin=0x90000000 length=0x10000000
}
SECTIONS
{
//.kernel:{
// *.obj(.text:optimized) {SIZE(_kernel_size)}
//}
vecs > VECTORS
.csl_vect >LL2MEM
.text > LL2MEM
.data > LL2MEM
.fasttext > LL2MEM
// .cinit > LL2MEM
.cinit > MSMDATA
.bss > LL2MEM
.const > LL2MEM
.far > LL2MEM
.switch > MSMDATA
//.sysmem > LL2MEM
.sysmem > LL2MEM
.cio > LL2MEM
.heap > LL2MEM
.fardata > LL2MEM
.neardata > LL2MEM
.rodata > LL2MEM
.INRAM > LL2MEM
.MSRAM > MSMCRAM
.EXRAM > DDR3RAM
.2EXRAM > DDR32RAM
.stack > LL2MEM
}
Tidder Yang:
回复 Allen35065:
恩,谢谢,错误已经解决了
查了下这些段的含义
.cinit 存放程序中的变量初值和常量
.const 存放程序中的字符常量、浮点常量和用const声明的常量
.switch 存放程序中switch语句的跳转地址表
.text 存放程序代码
.bss 为程序中的全局和静态变量保留存储空间
.far 为程序中用far声明的全局和静态变量保留空间
.stack 为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果
.sysmem 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间
还想问下,.cio 指的是什么,
今天调试的时候,虽然build没出错,但在板子上跑的时候会卡在等待EDMA传输结束的语句上(数据可以传输过去),这是之前用旧的common文件没出现过的,
TI有没有官方的文档,说明这些段应该怎样分配合适(LL2 还是MSM,或者其他),这个涉及哪方面的知识,
谢谢