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.

【请教】如何访问系统高6G的DDR3空间?



C6678复位后 XMPAX1_H = 0x80000 01EXMPAX1_L = 0x800000 BF,表示将C6678CorePac逻辑地址0x8000 0000-----0xFFFF FFFF映射到系统
物理地址0x8 0000 0000-----0x8 7FFF FFFF,恰好是DDR3的低2G空间。
 
如果我设计的系统中有4G空间的DDR3,那我如果想访问高2G,即系统物理地址为0x8 8000 0000-----0x8 FFFF FFFF,是不是将XMPAX1对修改为
XMPAX1_H = 0x8000001EXMPAX1_L = 0x880000BF即可?
我在实际测试中发现,这样修改后还是不能访问高2G,而且访问的好像仍然是低2G
 
具体测试方法大体是:
首先:在ccs中,当core0加载gel文件,初始化DDR3后,通过仿真器可查看地址为0x0800 00080x0800 000cXMPAX1_H = 0x80000 0 1E
XMPAX1_L = 0x800000 BF。此时对DDR3进行操作,修改地址为0x8000 0000开始的数据,假设通过仿真器写100aaaa5555
然后:修改地址为0x0800 00080x0800 000cXMPAX1_H = 0x80000 01EXMPAX1_L = 0x880000 BF(目的是将2G的逻辑地址映射到系统DDR3的高2G物理地址)。
最后:通过仿真器查看0x8000 0000地址开始的memory,发现还是100aaaa5555,证明没有成功映射和访问到DDR3的高2G空间。
 
请问专家,我这种设置和测试方法有问题吗?为什么不能成功?应该如何修改?
不胜感激。
 

 

  • 你好!

    我按照你的方法在EVM板上测试,没有问题。

    请你先在EVM板上测试是否正确。

    请上传下你的代码,我帮你看下。

  • 感谢 Bruce Chen的帮忙。

    但是evm板上只有1GB容量的DDR3,是无法验证我的设计的。

    其实我没有任何代码,只是在gel文件中有几个DDR3初始化的寄存器,然后就是我在上面帖子中提到的3步。

    根据对文档的理解,按说应该是可以访问其它6G空间的,但总是无法成功(我设计的板子的确是4GB的DDR3)。

    还有一个疑问:

    在配置地址为0x2100 0008的SDCFG寄存器时,无法理解[28:27]IBANK_POS的含义,不知道该选择0还是1、2、3.而我尝试0和3好像都可以。(见文档SPRUGV8---nNovember 2010 page4-4)

    望专家能帮忙解惑,非常感谢。

  • 你好!

    1. 请先在EVM 板上测试,先确认你的软件 操作没问题;然后才能验证你的硬件啊~

    2. 我在EVM板上按你的方法 不加代码 操作memory 测试了下,运行是没问题的;  操作过程与加载out文件是一样的。

        附件 是测试工程,你可以用于自己的板子测试;EVM板DDR只有512MB,我修改了参数,你注意一下。

     

    请先在EVM 跑下工程,再移到自己的板上(注意修改XMPAX参数),反馈结果。

    bruce4.zip
  • 你好,访问系统高6G的DDR空间,难道不是只需配置地址为0x0800 0008的XMPAX1_L和0x0800 000c的XMPAX1_H就行么?

    还有其他需要注意的地方么?