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.

使用CCS调试 8168 DDR遇到的问题

大家好,

     我们公司用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这个型号。

        宽松的时序配置?如何使用?

  • Tan Yiping,

    你的意思是说你们同样的PCB板和硬件(包括电源部分),之前用K4B2G0846D是可以正常工作的么?

    宽松的时序是指表格里面下面的参数:

  • 你好,

        我们新做的板子最小系统都没动,除了DDR3换了型号,因为接口需要更改,所以布线也更改了。原来的板子(包括uboot,内核及应用程序)可以正常运行。

       我试试宽松的时序,有结果再告诉你。

  • 你好,

        附件是根据datasheet更新的值。

    DM816x_C6A816x_AM389x_EMIF4_Register_Settings_K4B2G0846Q-BCK0.xls
  • Tan Yiping,

    请问DDR到DM8168的相关布线是否没有修改?

    你提供的表格是800Mhz DDR 时钟的参数,不是400Mhz的。你现在的测试是DDR时钟配置400Mhz,但参数用的是800Mhz的么?如果是,对于400Mhz时钟,时序已经是宽松了。

    还有一个可以调整的地方是slew rate,默认都是最快的,你可以调慢看看。

  • 你好,

        796.5M这个值我在填写到gel前都改了,各频率都计算一次。800M 、400M两个频率切换时其他值都保持一致,就修改DDR频率这个值,这个会有问题吗?

        另外,slew rate具体是哪个参数?

        

  • Tan Yiping,

    你使用的是2Gb的DDR。tRFC是否应该是160. tXS 170?

    800Mhz和400Mhz配置的CL是不一样的,你要分别选择最小能支持的CL。

    slew rate的寄存器请到TRM的DDR章节寄存器部分搜索一下,个数较多,我就不一一罗列了。