TMS320F28335芯片
原来有一版编译器为TIv6.2.0的 程序,没有问题,现在改成新的TIv6.4.6,rts2800_fpu32.lib也改了,但是发生了错误:
<Linking>
"../CMD/F28335.cmd", line 147: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
f28335.cmd中是这样的:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML6 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
工程文件.map中是这样的
.esysmem 1 00000400 00000400 UNINITIALIZED
00000400 00000001 rts2800_fpu32.lib : memory.obj (.esysmem)
00000401 000003ff –HOLE–
显然是esysmem占了stack的位置,但是在TIv6.2.0编译器下,工程.map没有问题
.stack 1 00000400 00000400 UNINITIALIZED
00000400 00000400 –HOLE–
请问为什么,怎么解决
Hank Zhao:
右击工程,在c2000 linker下的basic options窗口中可以设置stack size。
TMS320F28335芯片
原来有一版编译器为TIv6.2.0的 程序,没有问题,现在改成新的TIv6.4.6,rts2800_fpu32.lib也改了,但是发生了错误:
<Linking>
"../CMD/F28335.cmd", line 147: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
f28335.cmd中是这样的:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML6 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
工程文件.map中是这样的
.esysmem 1 00000400 00000400 UNINITIALIZED
00000400 00000001 rts2800_fpu32.lib : memory.obj (.esysmem)
00000401 000003ff –HOLE–
显然是esysmem占了stack的位置,但是在TIv6.2.0编译器下,工程.map没有问题
.stack 1 00000400 00000400 UNINITIALIZED
00000400 00000400 –HOLE–
请问为什么,怎么解决
ALAN YUAN:
回复 Hank Zhao:
知道设置stack size,但是在6.4.6编译器下,.esysmem就占了0x400,而RAMM1只有0x400这么大,这样我stack size无论设多大都没有用
TMS320F28335芯片
原来有一版编译器为TIv6.2.0的 程序,没有问题,现在改成新的TIv6.4.6,rts2800_fpu32.lib也改了,但是发生了错误:
<Linking>
"../CMD/F28335.cmd", line 147: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
f28335.cmd中是这样的:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML6 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
工程文件.map中是这样的
.esysmem 1 00000400 00000400 UNINITIALIZED
00000400 00000001 rts2800_fpu32.lib : memory.obj (.esysmem)
00000401 000003ff –HOLE–
显然是esysmem占了stack的位置,但是在TIv6.2.0编译器下,工程.map没有问题
.stack 1 00000400 00000400 UNINITIALIZED
00000400 00000400 –HOLE–
请问为什么,怎么解决
Hank Zhao:
回复 ALAN YUAN:
那你在CMD文件中将stack和esymem分配到不同的RAM区域中
TMS320F28335芯片
原来有一版编译器为TIv6.2.0的 程序,没有问题,现在改成新的TIv6.4.6,rts2800_fpu32.lib也改了,但是发生了错误:
<Linking>
"../CMD/F28335.cmd", line 147: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
f28335.cmd中是这样的:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML6 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
工程文件.map中是这样的
.esysmem 1 00000400 00000400 UNINITIALIZED
00000400 00000001 rts2800_fpu32.lib : memory.obj (.esysmem)
00000401 000003ff –HOLE–
显然是esysmem占了stack的位置,但是在TIv6.2.0编译器下,工程.map没有问题
.stack 1 00000400 00000400 UNINITIALIZED
00000400 00000400 –HOLE–
请问为什么,怎么解决
ALAN YUAN:
回复 Hank Zhao:
我将esysmem分配到RAML6中,编译通过了,但是还没来得及测试程序
对于cmd文件请问有比较详细的说明文档么,.esysmem的意义有相关的说明文档么
编译器不同带来的问题有没有个简单的解答?
我发现6.4.6编译后map文件有:
.esysmem 1 0000e000 00000400 UNINITIALIZED 0000e000 00000001 rts2800_fpu32.lib : memory.obj (.esysmem) 0000e001 000003ff –HOLE–
而6.2.0编译后没有相关内容
TMS320F28335芯片
原来有一版编译器为TIv6.2.0的 程序,没有问题,现在改成新的TIv6.4.6,rts2800_fpu32.lib也改了,但是发生了错误:
<Linking>
"../CMD/F28335.cmd", line 147: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1. Available memory ranges:
RAMM1 size: 0x400 unused: 0x0 max hole: 0x0
f28335.cmd中是这样的:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML6 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
工程文件.map中是这样的
.esysmem 1 00000400 00000400 UNINITIALIZED
00000400 00000001 rts2800_fpu32.lib : memory.obj (.esysmem)
00000401 000003ff –HOLE–
显然是esysmem占了stack的位置,但是在TIv6.2.0编译器下,工程.map没有问题
.stack 1 00000400 00000400 UNINITIALIZED
00000400 00000400 –HOLE–
请问为什么,怎么解决
Hank Zhao:
回复 ALAN YUAN:
在TMS320C28x Optimizing C/C++ Compiler文档中有简单的说明,.esysmem:Memory for far_malloc functions 。你设置一下优化试试