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,不知道这样会不会有问题?谢谢!