TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28027: 因为是UPS逆变故电压和电流采集的AD值均以数组形式保存,但数组个数多的时候出现如下错误

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

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28027: 因为是UPS逆变故电压和电流采集的AD值均以数组形式保存,但数组个数多的时候出现如下错误
分享到: 更多 (0)