TI中文支持网
TI专业的中文技术问题搜集分享网站

如何使用#pragma DATA_SECTION将一个初始化数组放到DDR3中去

Hi:

    大家好,我在a.c中写了如下的一段代码:

   #pragma DATA_SECTION(TEST_DATA,".Test_Data");

  const unsigned int TEST_DATA[1024] = {0x21,0x3c,0x58,0x79,…}

  .Test_Data在cfg文件中被指定放在DDR3中起始位置为0x80000000, 然后编译,下载代码,查看0x80000000,发现该位置是全0值,而不是TEST_DATA的初始化值,请问这种情况该怎么解决?

Jane Lu:

Jerry,

         您在下载代码之前有没有初始化DDR接口? 如果没有初始化DDR, 可以用一个GEL脚本先做初始化,再下载代码。 同时注意代码中不能再有DDR的初始化过程。

         如果您的商用软件版本也需要把一个常数表放在DDR,需要考虑类似的问题,即下载DSP代码之前,需要初始化DDR接口。这个可以基于您的单板系统设计做进一步讨论。

Jerry Liu1:

回复 Jane Lu:

我们目前还在调试阶段,使用仿真器,加GEL的方式调试的,使用的GEL使TI提供的6670的GEL,我搜索了一下,GEL中用这样的一个函数ddr3_setup_auto_lvl_1333(0)操作,应该是将DDR初始化了,在此基础上下载代码,放在DDR的值任然看不到,请问这种情况该怎么解决?

Jerry Liu1:

回复 Jerry Liu1:

我做了一个实验,将之前的数据不放在0x80000000开始的地方,而是放在0xa0000000开始的地方,数据不再是全0,而是初始化的值,这个能说明什么呢?

Jane Lu:

回复 Jerry Liu1:

能做个复现小工程发上来看看吗? 谢谢!

Jerry Liu1:

回复 Jane Lu:

Jane 您好,我这两天一直想做一个小工程来复现我遇到的问题,但是都失败了,不管是有Sysbios的,还是没有sysbios的小工程,初始化数据都可以直接放入到0x8000 0000开始的地方,但是在我们的正式工程中数据仍然不能正确初始化。我使用RTSC做的内存规划,请问这样是否有问题;

Jerry Liu1:

回复 Jerry Liu1:

另外请教一个问题,我有四个段.DAF_OSS,.DAF_ShareMem,.DRV_QMSS,.DRV_CPPI, 我想将这四个段放到共享Memory中,并且先后顺序固定,请问该如何配置.cmd;谢谢!

Jane Lu:

回复 Jerry Liu1:

Jerry,

            可以用Group方式实现:

              GROUP{

                .DAF_OSS

                .DAF_ShareMem

                .DRV_QMSS

                 }  >  XX_Memory

 

 

Jerry Liu1:

回复 Jane Lu:

Jane,谢谢你的回答,请问在哪里可以找到如何编写cmd的教程?谢谢!

另外之前的DDR 0x80000000-0xa0000000这段内存不能存放初始化数据这个问题,我把我们的RTSC配置发上来,麻烦你看一下,这样写有什么问题?

谢谢!

Jane Lu:

回复 Jerry Liu1:

Jerry,

           关于CMD的教程您可以参考spru186文档。

           关于DDR的问题,您是在C6670的EVM单板上测试吗? 若是,C6670 EVM板上DDR的size是512M,也就是说DDR memroy的0xa0000000其实和0x80000000对应了同一个物理单元(地址回卷了)。 您的rtsc配置中不能再对0xa0000000开始的空间进行定义。

Jerry Liu1:

回复 Jane Lu:

Jane,

      你好,我们不是使用的C6670的EVM板,是自己设计的基带板,外挂DDR3的size是2G,不知道这样会不会有问题?谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 如何使用#pragma DATA_SECTION将一个初始化数组放到DDR3中去
分享到: 更多 (0)