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



专家好,请问如何将数组定义到外扩的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文件找不到。