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.

F2812的.text代码段太长,CMD配置怎么修改

我用的CCS3.3,芯片F2812

问题描述:

目前map中.text代码段超过8K了,编译报错,在网上查资料得知,2812有2个不连续的8K的RAM_L0L1和RAM_H0空间,需要对.text进行拆分处理,分别映射到RAM_L0L1和RAM_H0。进行了如下处理,还不是不行,本人菜鸟,还请各位大侠们指教。

1..text没超过8K时,CMD的.text代码是这样的,运行没有问题,从Flash加载,从RAM_L0L运行

.text  :  LOAD = FLASH_AB, PAGE=0
          RUN  = RSM_L0L1, PAGE=0
          LOAD_START(_text_loadstart),
          RUN_START(_text_runstart),
          SIZE_START(_text_size)

2. 

.text  :  LOAD = FLASH_AB, PAGE=0
            {*(text)}>>RAM_H0 | RAM_L0L1,PAGE=0
          LOAD_START(_text_loadstart),
          RUN_START(_text_runstart),
          SIZE_START(_text_size)
          报如下错误
 
去掉   LOAD = FLASH_AB, PAGE=0报如下警告,且map中.text没有分成.text1和.text2
 
如果只写
 {*(text)}>>RAM_H0 | RAM_L0L1,PAGE=0则如下错误
 
3. 写成如下,报如下图错误
.text  :  LOAD = FLASH_AB, PAGE=0
            RUN=RAM_H0 | RAM_L0L1,PAGE=0
          LOAD_START(_text_loadstart),
          RUN_START(_text_runstart),
          SIZE_START(_text_size)
 
 4.写成如下,编译时通过了,.map中.text中也确实分成.text1和.text2,但刷完程序后报如下黄色标识警告
.text1 : {Debug/main.obj(.text) }>RAM_L0L1,PAGE=0
          LOAD_START(_text_loadstart),
          RUN_START(_text_runstart),
          SIZE_START(_text_size)
.text2 : {*(.text)}>RAM_H0,                PAGE=0
          LOAD_START(_text_loadstart),
          RUN_START(_text_runstart),
          SIZE_START(_text_size)

Warning: This program contains initialized RAM data. 

It may run successfully under Code Composer Studio 

but not as a standalone system because of this. If 

your Flash program requires initialized data in RAM, 

you will need to write Flash code to initialize RAM memory.