This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6678 更新common文件时,cmd文件出错

Other Parts Discussed in Thread: TMS320C6678

大家好

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
}

  • LL2不够用了,放不下这些段

  • 恩,谢谢,错误已经解决了

    查了下这些段的含义

    .cinit    存放程序中的变量初值和常量

    .const      存放程序中的字符常量、浮点常量和用const声明的常量

    .switch      存放程序中switch语句的跳转地址表

    .text     存放程序代码

    .bss     为程序中的全局和静态变量保留存储空间

    .far     为程序中用far声明的全局和静态变量保留空间

    .stack     为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果

    .sysmem       用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间

    还想问下,.cio  指的是什么,

    今天调试的时候,虽然build没出错,但在板子上跑的时候会卡在等待EDMA传输结束的语句上(数据可以传输过去),这是之前用旧的common文件没出现过的,

    TI有没有官方的文档,说明这些段应该怎样分配合适(LL2 还是MSM,或者其他),这个涉及哪方面的知识,

    谢谢

  • cio标准输入输出的buffer;

    段的分配是灵活的,根据需要来做,一般读写频繁的放在LL2,SL2会比较好。

    EDMA出错需要查一查设置,数据能传完说明已经启动了。