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.
我在程序中定义了8个长度为200的数组,build的时候会提示空间不足呢?
错误代码如下:
warning #10210-D: creating ".stack" section with default size of 0x400; use the
-stack option to change the default size
"C:/ti/controlSUITE/device_support/F2837xD/v110/F2837xD_common/cmd/2837x_RAM_lnk_cpu1.cmd", line 61: error #10099-D:
program will not fit into available memory. run placement with
alignment/blocking fails for section ".ebss" size 0x159c page 1. Available
memory ranges:
RAMLS5 size: 0x800 unused: 0x7f7 max hole: 0x7f7
RAMGS7 size: 0x1000 unused: 0x1000 max hole: 0x1000
RAMGS8 size: 0x1000 unused: 0x1000 max hole: 0x1000
error #10010: errors encountered during linking; "adc_epwm_cpu01.out" not
built
求大神指点!
hank zhao,谢谢!
我的分配情况是这样的
.ebss : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
.econst : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
.esysmem : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
但是在map文件中显示这三段都是 notused 疑惑/
不知这是什么原因啊
BIN YAO 你好
我的映射情况是这样的,但是在map文件中显示 这三块都是 notused,求解答啊,谢谢!
.ebss : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
.econst : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
.esysmem : >> RAMLS5 | RAMGS7 | RAMGS8, PAGE = 1
RAMLS5、RAMGS7和RAMGS8是三个段,不管地址是否连续,CCS都会认为其是3个不同的段,因此>>a|b这样的写法是不可以的。
你可以在声明段的时候把这三个段变成一段,然后再把.ebss、.econst、.esysmem映射到该段就行
hank zhao 谢谢!
原来是这样,涨姿势了,不过我现在又发现一个问题,我给ccs里面.text分配了空间之后,ccs却没有使用,必须加上一个RAMGS类型的空间build才不会报错
我的CMD文件里面这一行是这样的
.text : >>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4 | RAMLS5 | RAMGS15 , PAGE = 0
但是,map文件里面使用情况却是这样的:
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
PAGE 0:
BEGIN 00000000 00000002 00000002 00000000 RWIX
RAMM0 00000122 000002de 000002d7 00000007 RWIX
RAMLS0 00008000 00000800 0000072b 000000d5 RWIX
RAMLS1 00008800 00000800 00000000 00000800 RWIX
RAMLS2 00009000 00000800 00000000 00000800 RWIX
RAMLS3 00009800 00000800 00000000 00000800 RWIX
RAMLS4 0000a000 00000800 00000000 00000800 RWIX
RAMLS5 0000a800 00000800 00000000 00000800 RWIX
RAMD0 0000b000 00000800 000007ff 00000001 RWIX
RAMGS15 0001b000 00001000 00000a46 000005ba RWIX
可以看到RAMLS1~RAMLS5全都没有使用啊,而且要是我不加上RAMGS15的话,就提示空间不够了,我已经把RAMGS15放在page0里面去了
求解答啊!
BIN YAO1 谢谢你!
原来是这样,涨姿势了,不过我现在又发现一个问题,我给ccs里面.text分配了空间之后,ccs却没有使用,必须加上一个RAMGS类型的空间build才不会报错
我的CMD文件里面这一行是这样的
.text : >>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4 | RAMLS5 | RAMGS15 , PAGE = 0
但是,map文件里面使用情况却是这样的:
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
PAGE 0:
BEGIN 00000000 00000002 00000002 00000000 RWIX
RAMM0 00000122 000002de 000002d7 00000007 RWIX
RAMLS0 00008000 00000800 0000072b 000000d5 RWIX
RAMLS1 00008800 00000800 00000000 00000800 RWIX
RAMLS2 00009000 00000800 00000000 00000800 RWIX
RAMLS3 00009800 00000800 00000000 00000800 RWIX
RAMLS4 0000a000 00000800 00000000 00000800 RWIX
RAMLS5 0000a800 00000800 00000000 00000800 RWIX
RAMD0 0000b000 00000800 000007ff 00000001 RWIX
RAMGS15 0001b000 00001000 00000a46 000005ba RWIX
可以看到RAMLS1~RAMLS5全都没有使用啊,而且要是我不加上RAMGS15的话,就提示空间不够了,我已经把RAMGS15放在page0里面去了
求解答啊!
将text分配的段改为 .text : >> RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4 | RAMLS5, PAGE = 0 ,不要把不连续的内存空间用这个符号连在一起。
guodong
.text : >>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4 | RAMLS5 | RAMGS15 , PAGE = 0
这种语法只会把.text放进某一个能放得下的RAM存储块块,比如.text代码有100个数据,只有RAMGS15才超过100,那么数据就会放在这个模块。其他小于100的模块不会用。
如果.text超过上述中所有的块的话,那就会报错。所以上述的语法是并联方式,而非串连。
如果.text太大的话,你应该在上述的存储块中将这些块连在一起,如RAMLS1S2 : 起始地址, 长度。
Eric