专家好,请问如何将数组定义到外扩的SRAM中?定义的程序代码能简单写一下吗?(比如数组num[50]定义到Xintf的zone6中,地址假设为0x100000).谢谢
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.
专家好,请问如何将数组定义到外扩的SRAM中?定义的程序代码能简单写一下吗?(比如数组num[50]定义到Xintf的zone6中,地址假设为0x100000).谢谢
1. 如果您定义的数组为常数:
#pragma DATA_SECTION (num, "A");
Uint16 const num[50] =
{
#include "num50.txt"
};
CMD文件中:
SECTIONS
{
A : LOAD = FLASHH, PAGE = 0
RUN = XINTF, PAGE = 0
LOAD_START(_A_loadstart),
LOAD_END(_A_loadend),
RUN_START(_A_runstart)
}
2. 如果您定义的数组为变量:
1) 将此数组放在一个A.c中。
2) 编译A.c,会生成A.obj
3) CMD中做如下操作:
B :{A.obj(.ebss)}>XINTF, PAGE = 1
.ebss :{*(.ebss)}>> RAML0 PAGE = 1
Jones Chen :谢谢你的指点。我按照你的方法,第一个做出来了,第二个有点问题,还请你帮我解答一下。
关于第一个:我与你的有点不同
A : LOAD =EXTERNSRAM, PAGE = 1 (1、此处我的PAGE须放在PAGE=1处,即数据处,为何你的是PAGE=0 2、我将LOAD放在我外扩的存储器中了,而RUN将程序放在了内部存储器DRAM0中,这样有哪些不妥的地方吗? )
RUN = DRAM0 PAGE = 1
LOAD_START(_A_loadstart),
LOAD_END(_A_loadend),
RUN_START(_A_runstart)
关于第二个:我按照你的方法试了下
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
#include "string.h"
#include "math.h"
#pragma DATA_SECTION (sam, "C")
Uint16 sam[200];
这就是我的B.c文件。
我的cmd文件是:
C :{B.obj(.ebss)}> SARAM63, PAGE = 1
.ebss :{*(.ebss)}>> DRAMH0 PAGE = 1
可是出现一个警告: line 109: warning: B.obj(.ebss) not found
这是怎么回事? 麻烦你抽时间帮我解答一下,谢谢!
您需要将B.obj文件放在和.pjt文件在相同的路径下,否则CMD文件找不到。