各位TI的工程师:
我现在使用TI 6670开发板,我想做的是访问DDR3对应的地址空间(即0x80000000开始的地址空间),通过查询资料发现,需要配置DDR3 EMIF寄存器才可以访问DDR3的地址。我下载了论坛中keystone_Memory.zip这个示例程序,并将其中Memory_Test这个工程加入CCS执行,但是程序执行时发现,在执行完配置EMIF寄存器的相应代码后,DDR3 EMIF寄存器(即0x21000000开始的地址)值并没有改变(感觉好像这块空间是只读的),并且DDR3对应的空间也无法访问。我查了下6670的架构,看DDR3 EMIF寄存器需要通过MSMC访问,请问如果我想要访问DDR3,还需要设置什么?多谢!
Andy Yin1:
DDR3 EMIF config space地址空间0x21000000需要配置XMC MPAX与相应的物理地址映射,这块memory是可读的,你用的程序版本可能有点旧,在配置文件ccxml中选择相应的gel文件,运行gel文件就会初始化EMIF配置及DDR3控制器。
或者你可以下载附件的最新memory test 程序测试。
Billy smith:
回复 Andy Yin1:
你好,你给的这个工程我加载不了,我这的ccs编译器版本只有7.2.2和7.3.4,而您给的程序需要7.4的编译器。另外,是不是这个意思:如果不配置mpax将ddr3 EMIF寄存器(也就是0x21000000)映射到某一地址,该地址就不可访问?麻烦解答下,谢谢了!
Andy Yin1:
回复 Billy smith:
可以选择你安装的编译器没关系。
DDR3 EMIF寄存器空间的逻辑地址是0x21000000开始,物理地址是0x1 0000 0000开始的,他们并不是一一对应,所以在访问之前需要重配MPAX进行地址映射。可以查看之前给你的代码中有一个mpax configure table中有相应的元素配置,或者查看gel文件中也有类似首先对DDR3控制寄存器的重映射,之后再进行DDR3 controller的配置。
Billy smith:
回复 Andy Yin1:
谢谢,上面的问题已经解决。另外有个问题,主程序在执行过程中只是在mpax寄存器中将ddr3 EMIF这块寄存器映射到0x100000000这个地址上,没有去配置ddr3 emif寄存器,但是程序还是执行成功,成功访问到ddr3这个地址,是不是emif寄存器有默认的配置?在默认配置下ddr3也能访问?在实际使用中我还要去配置这个寄存器么?