Part Number:TMS320F28027
>> Compilation failure
makefile:182: recipe for target '28027_SIN.out' failed
"../M_F28027.cmd", line 135: error: program will not fit into available memory,
or the section contains a call site that requires a trampoline that can't be
generated for this section. run placement with alignment/blocking fails for
section ".cio" size 0x120 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
DRAML0 size: 0x800 unused: 0xb8 max hole: 0xb8 .cio : >> RAMM1 | DRAML0 PAGE = 1// //.cio 这个在HFUPS文件开头 : >> RAMM1 | DRAML0 | DRAMLL0 PAGE = 1// .cio : >> RAMM0 | RAMM1 | DRAML0 PAGE = 1
error: errors encountered during linking; "28027_SIN.out" not built
gmake: *** [28027_SIN.out] Error 1
gmake: Target 'all' not remade because of errors.
以上是CC12编译器的错误信息提示,请问这怎么解决?
还有怎么看编译后生成的代码的大小?
谢谢!
Green Deng:
这个应该是堆栈不够,你看一下CCS里面:view – stack usage,编译一下工程就可以看到堆栈使用情况了。
,
jun liu:
堆栈不够那怎么调整?
,
Green Deng:
确认是堆栈问题吗?是的话可以参考这个帖子的说明来改堆栈:
e2echina.ti.com/…/delay_us-defaultisr-c
,
jun liu:
不清楚 我把代码发你可以不?
,
Green Deng:
代码发过来恐怕我这边也会有很多报错。
修改堆栈主要是修改两个部分,一个是cmd文件的.stack,比如:
cmd文件里:
RAMM1 : origin = 0x000400, length = 0x000400
……
.stack : > RAMM1, PAGE = 1
另一个是CCS的basic options中的set C system stack size(默认应该是0x300大小),如果要设得更大,必须小于cmd里面的stack映射的存储块,否则编译报错。当然,cmd里面的stack也可以映射到一个更大的存储块。
,
jun liu:
好的 我先看下 怎么知道程序中所有变量和数组所占用的空间大小?变量和数组分别存储在什么地方?
,
Green Deng:
最直接的就是通过上面说的view – stack usage,里面会详细列出你的内存使用情况。变量和数组一般都是在stack和heap这些段里面。
,
jun liu:
我程序中使用到printf,但发现printf太占用内存,printf的堆栈在哪里设置?此外假如不使用printf的话 我能否直接使用SCI的串口输出往外打印数字?关于.stack.text.ebss这些哪里有官方文件说明?
,
Green Deng:
发现这个帖子里面的内容挺符合你的问题的,包括问题内附带的帖子:e2echina.ti.com/…/677013