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.
我用的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.
如果想把所有代码都搬到RAM需要怎样处理呢,还有下面这两条为什么不能同时存在,会报错,请指教
.text : LOAD = FLASH_AB, PAGE=0 |
RUN=RAM_H0 | RAM_L0L1,PAGE=0 |