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.

AM335x DDR3 Software Leveling Tool

Other Parts Discussed in Thread: AM3352, AM3358, AM4376

AM335x的DDR3 software leveling可以通过SD卡运行啦!

在AM335x的设计中,如果使用的是DDR3、DDR3L,是必须要进行software leveling的。其目的在于根据板卡的实际布线情况,通过leveling算法优化当前的DDR3的参数配置。而针对这套算法,之前我们提供的方式使用仿真器连接到板卡的JTAG口,修改GEL脚本进行初始化后,通过CCS工具将.out程序加载到AM335x上,执行参数优化算法。

对于板子上没有预留JTAG的情况就杯具了。

现在,通过将该算法移植到了bootloader中,也就是说可以直接将本贴中的MLO拷贝到SD卡FAT32分区中,使用SD卡启动AM335x,即可通过串口进行参数的输入,得到优化的参数配置!这样一来,就可以避免仿真器、JTAG、CCS、改GEL脚本等一系列复杂的操作啦!

大家可以下载使用,体验一下,欢迎给出宝贵的反馈意见!

PS:目前,我们可以支持303MHz和400MHz两个频率,串口0作为调试串口,具体的使用方法可以参考User Guide。

先睹为快:

结果:

另外,将这个MLO的前4个字节去掉就可以通过UART boot. 

4382.MLO(UART DDR3 Leveling)

MLO
  • 附上User Guide。能够执行software leveling算法的MLO在上楼中。

    User Guide For AM335x DDR3 Software Leveling Program MLO.pdf
  • 谢谢分享。

    能不能顺便介绍一下software leveling算法的简介,原理以及有关DDR3为什么需要Software Leveling机制?

  • 感谢您的关心!简而言之,为了保证DDR3的信号完整性,优化相关的读写时序参数,匹配不同板子因板材、layout走线、线宽等多种因素可能会造成的阻抗变化,所以要求,DDR3的设计,必须要进行Software Leveling,获得最适应于当前layout的DDR3 PHY读写参数。具体的介绍,您还可以参考:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/17684.aspx

  • Is the source code for this DDR3 leveling MLO available?

     

  • 这个代码目前没有开放。

  • 为何我运行的结果是全0x0??


    Please input the AM335x EMIF Timing Configuration:
    -- AM335x Default EMIF Timing configuration (for StarterKit EVM) --
    DDR3_EMIF_SDRAM_TIM_1 : 0x0888A39B
    DDR3_EMIF_SDRAM_TIM_2 : 0x26337FDA
    DDR3_EMIF_SDRAM_TIM_3 : 0x501F830F
    DDR3_EMIF_SDRAM_CONFIG : 0x61C04AB2

    Your choice:  1. Use the default one; 2. Input your own one.
    Please Choose The DDR3 Frequency:  1. 303MHz; 2. 400MHz.
    DDR3 Frequency is Set at 400MHz!

    Please input your DDR3_EMIF_SDRAM_TIM_1 conifguration (in Hex) :
    0aAAD4DB
    Please input your DDR3_EMIF_SDRAM_TIM_2 conifguration (in Hex) :
    266B7FDA
    Please input your DDR3_EMIF_SDRAM_TIM_3 conifguration (in Hex) :
    501F867F
    Please input your DDR3_EMIF_SDRAM_CONFIG conifguration (in Hex) :
    61C05332
    Your input EMIF Timing configuration -- 
    DDR3_EMIF_SDRAM_TIM_1 :         0xAAAD4DB
    DDR3_EMIF_SDRAM_TIM_2 :         0x266B7FDA
    DDR3_EMIF_SDRAM_TIM_3 :         0x501F867F
    DDR3_EMIF_SDRAM_CONFIG :        0x61C05332

    Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :
    0
    Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :
    40
    Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :
    6D
    Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :
    1
    Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :
    80
    The ratio seeds for the DDR3 Software Leveling :
    invert_clkout =         0x0
    RD_DQS_RATIO_VAL =      0x40
    FIFO_WE_SLAVE_RATIO =   0x6D
    WR_DQS_SLAVE_RATIO =    0x1
    PHY_CTRL_SLAVE_RATIO =  0x80

            The Slave Ratio Search Program Values are...
    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0
    ***************************************************************
    rd_dqs_range = 0
    fifo_we_range = 0
    wr_dqs_range = 0
    wr_data_range = 0

    Optimal values have been found!!

    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0
    ***************************************************************

    ===== END OF TEST =====
    DDR3 software leveling done!

     盼复!

  • 全0代表着你的software leveling运算失败了,软件上请检查一下EMIF和PHY的配置;再就是排查一下可能的硬件问题,review一下原理图,或者换一块板子排除一下当前板子可能的焊接问题。

  • 1)我在英蓓特的dev8600上进行同一实验,也是得到全0结果!当然对于需要输入的几个ratio seeds,我直接用的代码里现成的,但这应该没影响吧?

    2)测试的上一块板子,利用同样配置(除那4个ratio定义是参考以前的)是可以运行到将操作系统image文件下载到SDRAM的。只是在下载完成后,在每次加载内核时,都会停在不同位置上。因此,DDR3的电路连接上应该不存在问题,但参数配置有可能不对,导致运行不稳定。对于现在的全0结果,在成熟的开发板上都有发生,有点不能理解。希望TI能给与更多提示!

    3)另外我想问问,在配置EMIF_SDRAM_CONFIG时,reg_ddr_term和reg_dyn_odt这两个域应该如何确定?memory datasheet上也没有给出明确值啊!用的内层颗粒是美光的MT41K256M16-125E。

    谢谢!盼复!

  • 1.你的意思是说你使用的这个MLO中的默认配置进行的实验吗?这个默认的EMIF配置影响很大的!要看你使用的是DDR2、DDR3的型号,不同型号的配置是不一样的,不是通用的。这个代码中默认的配置是按照AM335x的StarterKit开发板进行的设置,DDR3型号:MT41J128M16JT-125

    2.我觉得问题是你配置的EMIF和PHY的参数,是不是适用于你当前的板子的。一般来说,DDR的型号不同,就要检查EMIF的配置,layout的不同,就要用工具去计算DDR PHY的配置。

    3. 这两个值是和DDR的datasheet有关的,是要算的,RZQ是确定值,但是终端匹配和ODT是你要根据手册来分给个合理的值。

  • 为什么我串口写选择“1”,居然给我返回“1”,写什么返回什么,死活不会执行“1”代表的选择啊,

  • 你好,我们使用UART启动,需要u-boot-spl.bin来计算DDR的参数,能提供下么?

  •  我的板子RTOS模式 IAR开发环境已经完成,可以使用,现在准备升级用linux,我根据IAR的配置使用这个MLO去重新计算我的硬件DDR3的最优配置,操作过程中使用了附图上的值,但是输出结果都是0.   想问下会是什么原因呢?

     

  • 此问题不用回复,已经解决,我实验的核心板没有选用对,是硬件有问题的。

  • 在使用AM335x_DDR_register_calc_tool.xls 计算IS43TR16256A的timing时, datasheet里只有DDR3-1066MT/s  DDR3-1333MT/s  DDR3-1600MT/s  DDR3-1866MT/s

    这4种条件下的时序, 没有400MT/s和303MT/s的, 怎么破?

  • 你可以发上来看看,一般选择接近频率的就可以。

  •  800MT/S 换成赫兹是否就是 400Mhz /s?

    附件就是IS43TR16256的datasheet

    4Gb DDR3 SDRAM(IS43TR16256A-15HBLI).pdf
  • am3352

    ddr:

    4GB-AS4C256M16D

    这个是不是也要调?

    我用的最新版的uboot

    u-boot-2016.05+gitAUTOINC+6c5519b6fc-g6c5519b6fc

    在u-boot目录执行:make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_config all

    然后编出来的mlo u-boot.img加载上去,串口一点打印都没有

  • 我们的平台用的是AM3352   DDR3为  MT41K256M16HA-125IT:E  

    模式SD卡启动模式为 SYSBOOT[4:0] =11000b

    时钟 24MHz 

    我们定制的系统正常运行,硬件平台应该没问题。

    但是做了TF卡的MLO无反应,COM1并没有打印信息输出;

    请问如何才能让MLO正常运行起来?

  • 你好,用SDK自带的MLO能启动吗?

    或者你们有没有修改过SDK可以启动的MLO?谢谢

  •  

    更换了一张TF卡,MLO可以跑起来了,但是发现检验的值都是0如下:

     AM335x DDR3 Software Leveling -- Version: Beta 3.0

                                  -- Copyright: Texas Instruments China Local Team

     *************************** Program Start********************************

     

    Please input the AM335x EMIF Timing Configuration:

    -- AM335x Default EMIF Timing configuration (for StarterKit EVM) --

    DDR3_EMIF_SDRAM_TIM_1 : 0x0888A39B

    DDR3_EMIF_SDRAM_TIM_2 : 0x26337FDA

    DDR3_EMIF_SDRAM_TIM_3 : 0x501F830F

    DDR3_EMIF_SDRAM_CONFIG : 0x61C04AB2

     

    Your choice:  1. Use the default one; 2. Input your own one.

    Please Choose The DDR3 Frequency:  1. 303MHz; 2. 400MHz.

    DDR3 Frequency is Set at 303MHz!

     

    Please input your DDR3_EMIF_SDRAM_TIM_1 conifguration (in Hex) :

    aaad4db

    Please input your DDR3_EMIF_SDRAM_TIM_2 conifguration (in Hex) :

    266b7fda

    Please input your DDR3_EMIF_SDRAM_TIM_3 conifguration (in Hex) :

    501f867f

    Please input your DDR3_EMIF_SDRAM_CONFIG conifguration (in Hex) :

    c30

    Your input EMIF Timing configuration --  

    DDR3_EMIF_SDRAM_TIM_1 :         0xAAAD4DB

    DDR3_EMIF_SDRAM_TIM_2 :         0x266B7FDA

    DDR3_EMIF_SDRAM_TIM_3 :         0x501F867F

    DDR3_EMIF_SDRAM_CONFIG :        0xC30

     

    Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :

    0

    Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :

    38

    Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :

    94

    Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :

    7d

    Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :

    80

    The ratio seeds for the DDR3 Software Leveling :

    invert_clkout =         0x0

    RD_DQS_RATIO_VAL =      0x38

    FIFO_WE_SLAVE_RATIO =   0x94

    WR_DQS_SLAVE_RATIO =    0x7D

    PHY_CTRL_SLAVE_RATIO =  0x80

     

            The Slave Ratio Search Program Values are...

    ***************************************************************

    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0

    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0

    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0

    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0

    ***************************************************************

    rd_dqs_range = 0

    fifo_we_range = 0

    wr_dqs_range = 0

    wr_data_range = 0

     

    Optimal values have been found!!

     

    ***************************************************************

    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0

    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0

    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0

    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0

    ***************************************************************

     

    ===== END OF TEST =====

    DDR3 software leveling done!

     

    以上的参数设置是我们现有系统配置的参数。DDR3 datasheet 详见附件。

    请问这是什么原因?

    MT41K256M16HA -125_E.pdf
  • 这个配置一定是错了:DDR3_EMIF_SDRAM_CONFIG :        0xC30

  • Steven, 你好.

    我们之前使用的是AM3358+DDR2,现在新作了一块板是AM3358+DDR3, micron的MT41J256M16HA-125IT.

    下载了你帖子里的MLO,运行起来后minicom超级终端显示全部是乱码:

    使用我们旧板上调好的MLO, 能够正常输出到超级终端,但是使用的你的MLO就会乱码?

    请问你的MLO中对串口的通信设定是怎样的? 可能是什么原因导致的?

    谢谢

  • hi steven,

    我们现在检验值可以获取正常如下:

    AM335x DDR3 Software Leveling -- Version: Beta 3.0
                                  -- Copyright: Texas Instruments China Local Team
     *************************** Program Start********************************

    Please input the AM335x EMIF Timing Configuration:
    -- AM335x Default EMIF Timing configuration (for StarterKit EVM) --
    DDR3_EMIF_SDRAM_TIM_1 : 0x0888A39B
    DDR3_EMIF_SDRAM_TIM_2 : 0x26337FDA
    DDR3_EMIF_SDRAM_TIM_3 : 0x501F830F
    DDR3_EMIF_SDRAM_CONFIG : 0x61C04AB2

    Your choice:  1. Use the default one; 2. Input your own one.
    Please Choose The DDR3 Frequency:  1. 303MHz; 2. 400MHz.
    DDR3 Frequency is Set at 400MHz!

    Please input your DDR3_EMIF_SDRAM_TIM_1 conifguration (in Hex) :
    0AAAD4DB
    Please input your DDR3_EMIF_SDRAM_TIM_2 conifguration (in Hex) :
    266B7FDA
    Please input your DDR3_EMIF_SDRAM_TIM_3 conifguration (in Hex) :
    501F867F
    Please input your DDR3_EMIF_SDRAM_CONFIG conifguration (in Hex) :
    61C05332
    Your input EMIF Timing configuration -- 
    DDR3_EMIF_SDRAM_TIM_1 :         0xAAAD4DB
    DDR3_EMIF_SDRAM_TIM_2 :         0x266B7FDA
    DDR3_EMIF_SDRAM_TIM_3 :         0x501F867F
    DDR3_EMIF_SDRAM_CONFIG :        0x61C05332

    Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :
    0
    Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :
    38
    Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :
    94
    Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :
    44
    Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :
    80
    The ratio seeds for the DDR3 Software Leveling :
    invert_clkout =         0x0
    RD_DQS_RATIO_VAL =      0x38
    FIFO_WE_SLAVE_RATIO =   0x94
    WR_DQS_SLAVE_RATIO =    0x44
    PHY_CTRL_SLAVE_RATIO =  0x80

            The Slave Ratio Search Program Values are...
    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3A
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x9A
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x40
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x7E
    ***************************************************************
    rd_dqs_range = 58
    fifo_we_range = 154
    wr_dqs_range = 64
    wr_data_range = 126

    Optimal values not reached, rerunning program with new values...

            The Slave Ratio Search Program Values are...
    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3A
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x9B
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x3F
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x7B
    ***************************************************************
    rd_dqs_range = 0
    fifo_we_range = 1
    wr_dqs_range = 1
    wr_data_range = 3

    Optimal values have been found!!

    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3A
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x9B
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x3F
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x7B
    ***************************************************************

    ===== END OF TEST =====
    DDR3 software leveling done!

    校验为何还要事先设定好值才可以运行? 

    检验出来的值跟实际设定值差别不多,需要更改过来吗?

    是否有内存压力测试方面的软件?可以动态设定不同频率。

     

  • 校验就是根据现有的值然后无限逼近最优的值,如果初始值乱设可能不一定收敛。

    最好和改成计算出来的值。

    内存压力测试这块需要自己改MLO来测试了,我们没有这部分代码。不要动态设置内存频率,这样不稳定,建议一个频率测完,重启,再测下一个。

  • Hi Denny ,

    我们自己做的板子AM3352+DDR3(IS43TR16256),

    自己编译出来的MLO,u-boot,kernel都可以正常运行,想在想做DDR3 Software Leveling,但是使用了 发的MLO以后,UART0没有任何数据的输出,请问是什么原因呢?

    是不是这个MLO只能用于开发板上呢?

    我的现象好像跟 遇到的一样。

    盼复!

    谢谢!

  • 你好,请问使用RatioSeed_AM335x_boards.xls计算走线长度时,我的板子使用一片16bit的芯片,而不是使用2片8bit芯片,那么DDR_CK trace和DDR_DQSx trace的Byte0和Byte1两个参数是否设置成一样?

  • 你好,请问leveling结果出来后怎么用这些参数?

  • 现在有可以运行在SPI NOR和NAND Flash上的MLO了,请到下面地址下载:
    e2echina.ti.com/.../423444
  • 现在有可以运行在SPI NOR和NAND Flash上的MLO了,请到下面地址下载:
    e2echina.ti.com/.../423444
  • 现在有可以运行在SPI NOR和NAND Flash上的MLO了,请到下面地址下载:
    e2echina.ti.com/.../423444
  • 现在有可以运行在SPI NOR和NAND Flash上的MLO了,下载地址如下:
    e2echina.ti.com/.../423444
  • 如果没有SD卡,这个在nand/nor也是可以使用的,有区别么

  • 刘工,你好,leveling 源码能否开放,tps65217c需要在leveling时调节ddr电压为1.35
  • 请问一下有AM4376 DDR3 Software Leveling Tool吗?
  • 不好意思,没用过AM4376,没有呵

  • Steven Liu:
    你好,我的用户平台是基于BBB上修改而来的,DDR3型号是MT41K256M16HA-125,与BBB完全一致,目前我已经按照你在论坛上给的工具,参照相关文档做了目标板的ddr tuning 和 soft leveling。有几个问题想请教:
    一、实际实验和生产过程中,有必要单独对每块板子都做soft leveling吗?或者说同一批板子,soft leveling一次出来的参数即可?
    二、从MT41K256M16HA-125的datasheet来看,运行频率在303或者400M,工控用途,DDR稳定性至关重要,可以再进一步低于303M,降低频率使用换取稳定性吗?
    三、给一些测试DDR稳定性方面的建议,目前已经做了memtester。
    非常感谢。
  • 你好! 我用你给的这种方法得到的配置目前不能正常启动,串口没有输出,用之前官方提供的参数串口有输出不过就是不稳定!

    下面是我的参数! 用的是400M的频率DDR3!DDR型号:

    MT41K256M16TW-107 IT

    EMIF_SDCFG   的值为  0x61C05332

    利用上面MLO计算出来的结果是

    Optimal values have been found!!

    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3D
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x64
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xC
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x4B
    ***************************************************************

    ===== END OF TEST =====
    DDR3 software leveling done!

    u-boot中修改的参数

    8750.log.txt

    log.txt是MLO计算时输出的log信息。

  • 你好刘工,我的是 美光的 D9GSQ  知道配置TIME1 2 3 其他的参数要怎么配置,有什么工具吗