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.
大家好,
我们公司用8168新做了一块板,最近用CCS对其进行调试,在DDR调试时遇到一些问题,请教下大家。
基本情况: a.8168使用8片 K4B2G0846Q DDR3,总2G内存
b.CCS v5.5,使用TI816x_DDR3.gel配置
操作过程
-> JTag连接裸板
-> load TI816x_DDR3.gel
-> 使用 DDR3_***MHz_doall初始化,load ddr.out,运行
结果:
a.复位后使用DDR3_400MHz_doall,运行后读写的值不一致
b.不复位,使用DDR3_621MHz_doall,运行后正确
c.重新复位,使用DDR3_621MHz_doall,运行后读写的值不一致
规律:每次复位后必须先用DDR3_400MHz_doall运行一次后,再用600M以上的频率测试,结果都正确。
复位后直接用600M以上的频率测试,运行结果不正确。
大家有遇到相关的问题吗?
你好,
请参考下面的链接,修改DDR的时序参数,更新到gel文件里,并且运行DDR SW leveling程序得到最优的Slave Ratio,修改gel和uboot。
http://processors.wiki.ti.com/index.php/DM816x_C6A816x_AM389x_DDR3_Init?keyMatch=DM816x DDR SW leveling&tisearch=Search-EN
你好,
这个我前几天已经修改过了,不过有几个疑问,请您看看问题。
1.RatioSeed.xls 文件中 CLK trace / DQS trace 这两行,是我们硬件工程师给的值,我认为是DDR CLK、DQS与8168连接的长度。
第一次硬件工程师给的值都>5inches,通过测试程序DDR3_SlaveRatio_ByteWiseSearch_TI816x.out,不能得到任何值。
我现在很怀疑这个值是怎么测算的?PCB距离还是?
2.通过测试程序 DDR3_SlaveRatio_ByteWiseSearch_TI816x.out
也得出了值并修改 evm8168_ddr3.gel 中的值:
#define DDR3_WR_DQS_SLAVE_BYTE0 ((emif == 0) ? 0x97 : 0x95) //BYTE0 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_WR_DQS_SLAVE_BYTE1 ((emif == 0) ? 0x90 : 0x92) //BYTE1 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_WR_DQS_SLAVE_BYTE2 ((emif == 0) ? 0x89 : 0x88) //BYTE2 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_WR_DQS_SLAVE_BYTE3 ((emif == 0) ? 0x82 : 0x7a) //BYTE3 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_SLAVE_BYTE0 ((emif == 0) ? 0x3c : 0x3d) //BYTE0 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_SLAVE_BYTE1 ((emif == 0) ? 0x3c : 0x3d) //BYTE1 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_SLAVE_BYTE2 ((emif == 0) ? 0x3e : 0x3f) //BYTE2 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_SLAVE_BYTE3 ((emif == 0) ? 0x3c : 0x3f) //BYTE3 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_GATE_SLAVE_BYTE0 ((emif == 0) ? 0x142 : 0x13e) //BYTE0 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_GATE_SLAVE_BYTE1 ((emif == 0) ? 0x133 : 0x12e) //BYTE1 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_GATE_SLAVE_BYTE2 ((emif == 0) ? 0x11d : 0x117) //BYTE2 optimum value after running the CCS based slave ratio program should be configured
#define DDR3_RD_DQS_GATE_SLAVE_BYTE3 ((emif == 0) ? 0x10f : 0x110) //BYTE3 optimum value after running the CCS based slave ratio program should be configured
但通过这个过程,400M还是有问题,难道CLK trace / DQS trace 这两个值给的不对?
3.每次运行DDR3_SlaveRatio_ByteWiseSearch_TI816x.out,得出的值会有细微的差别,可能+1/-1,这个不影响吧?
你好,
1. 你使用的DDR芯片和EVM上的不同,请问DDR时序参数是否有调整过?
2. slave ratio的值每次运行差+/-1是正常现象。
你好,
你所说的DDR时序是指
#define EMIF_TIM1_DDR3_400 0x0CCCE524
#define EMIF_TIM2_DDR3_400 0x30308023
#define EMIF_TIM3_DDR3_400 0x009F82CF
#define EMIF_SDREF_DDR3_400 0x10000C30
#define EMIF_SDCFG_DDR3_400 0x62A41032 /* 32 bit ddr3, CL=11, 8 banks, CWL=8 10 bit column, 2 CS, */
#define EMIF_PHYCFG_DDR3_400 0x0000010B /* local odt = 1, read latency = 11 (max = 12, min=6) */
这些值吧?根据DM816x_C6A816x_AM389x_EMIF4_Register_Settings.xls这个表修改过,但不确认是否填对。
你好,
请问你们使用的DDR芯片的型号全称是什么?我google了一下k4b2g0846q一些系列是DDR3L,而DM8168支持的是DDR3.
请问你们只做了一块板么?这块板的pcb是否有做过其他的板子,我想知道的是DDR的PCB布线是否有成功案例?是否严格按照数据手册的布线要求来做的?
系统的电源是否稳定,特别是和DDR相关的?
DM816x_C6A816x_AM389x_EMIF4_Register_Settings.xls里面有宽松的时序配置,你是否有尝试过? SW leveling测试的时候gel里面的时序配置是否有根据xls表格更新过?
你好,
我们使用的是K4B2G0846Q-BCK0。
我们原来用的是K4B2G0846D,因为供应商说找不到这个型号,所以就用了Q这个型号。
宽松的时序配置?如何使用?
你好,
我们新做的板子最小系统都没动,除了DDR3换了型号,因为接口需要更改,所以布线也更改了。原来的板子(包括uboot,内核及应用程序)可以正常运行。
我试试宽松的时序,有结果再告诉你。
你好,
附件是根据datasheet更新的值。
你好,
796.5M这个值我在填写到gel前都改了,各频率都计算一次。800M 、400M两个频率切换时其他值都保持一致,就修改DDR频率这个值,这个会有问题吗?
另外,slew rate具体是哪个参数?
Tan Yiping,
你使用的是2Gb的DDR。tRFC是否应该是160. tXS 170?
800Mhz和400Mhz配置的CL是不一样的,你要分别选择最小能支持的CL。
slew rate的寄存器请到TRM的DDR章节寄存器部分搜索一下,个数较多,我就不一一罗列了。