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.

求教!AM3352BZCZ60 DDR3 Software leveling 400MHz失败



CPU:AM3352BZCZ60

DDR3:MT41K128M16JT-125

实际板载:单颗16Bit DDR3

运行MLO

303MHz下,Software leveling可以给出303MHz的PHY值

400MHz下,Software leveling给出的400MHz的PHY值都是0x00

---------------------------------------------------------------------------------------------

以下为400MHz的配置过程

RatioSeed_AM335x_boards.xls

AM335x_DDR_register_calc_tool.xls

DDR3_EMIF_SDRAM_CONFIG conifguration: :0x61C052B2

运行Software leveling结果

烦请各位了解这块的论坛前辈,Steven Liu前辈帮我分析一下;不了解的同仁们帮顶一下,不胜感激!

1、参数配置是否合理?我个人参照TI的一些文档,反复核对过了,个人认为应该无误

2、DDR3跑400MHz频率,PCB Lyaout这块是否需要特别注意什么,与303MHz会有差异吗?因为303MHz情况是可以给出PHY值,DDR3实际运行也是蛮稳定的

3、软硬件方面还有哪些问题,或者细节会引起400MHz Software leveling失败?例如OPPs设置方面;目前是Core::OPP100;MPU:550MHz

各位前辈碰到400MHz这种问题,解决的话,能不能贴出引起这方面问题的原因,我做为参考,谢谢了!

---------------------------------------------------------------------------------------------------------------------------------------------------------

个人疑问

我在Software leveling 303MHz选项下,给入333MHz的参数,此时可以给出PHY值;用这些PHY值将DDR3配置为333MHz, 系统可以跑到内核,但要嘛卡在Start udev,要嘛在Start udev后报各种异常,系统始终无法登录

1、Software leveling的原理是什么?Steven Liu前辈能否稍微讲解一下

----------------------------------------------------------------------------------------------------------------------------------------------------------

下面是我使用RatioSeed默认值配置的相关参数,实际板上无法运行,u-boot都没能跑起来;各位前辈看一下是否有误

#define MT41J128MJT125_EMIF_READ_LATENCY     0x100007
#define MT41J128MJT125_EMIF_TIM1                            0x0AAAD4DB
#define MT41J128MJT125_EMIF_TIM2                            0x26437FDA
#define MT41J128MJT125_EMIF_TIM3                            0x501F83FF
#define MT41J128MJT125_EMIF_SDCFG                       0x61C052B2

#define MT41J128MJT125_EMIF_SDREF                       0x00000C30

#define MT41J128MJT125_RATIO                                    0x100

#define MT41J128MJT125_INVERT_CLKOUT               0x1

//#define MT41J128MJT125_RD_DQS                             0x40
//#define MT41J128MJT125_WR_DQS                            0x79
//#define MT41J128MJT125_PHY_WR_DATA               0xC1
//#define MT41J128MJT125_PHY_FIFO_WE                  0x117

--------------------------------------------------------------------------------------------------------

已经尝试了各种方法手段了,调试了很多天都没结果!拜托各位前辈点拨提醒一下,还有哪些细节没注意?还有哪些排查方向?

  • 根据你给的datasheet,查了一下你配置的EMIF和SDRAMCONFIG, REF的寄存器配置应该是没有问题的。

    其实303的配置和400的配置,在CL和CWL选取是一致的时候,只要修改clock的数值即可做software leveling。你的303M过了,但是400M没有过的话,建议着检查一下layout,可以参考着我们的335x datasheet的5.6.2.3节: DDR3 and DDR3L Routing Guidelines里面核查你的layout布局是否有明显违背的情况。

    对于333MHz的话,我们对ddr3的支持仅官方支持303MHz和400MHz两个频率点。

    software leveling算法其实就是在不断修改PHY的timing值来进行不同数据模式的读写测试,以一个距离参数作为指标来衡量当前的时序优化程度,直到满足最优解算法就会停止。这个部分是非公开的代码,所以暂时无法给出源码。

    你目前的这个问题,简要来说,就是在数据率由600MHz上升为800MHz的时候,由于速率的加快,自然信号件的干扰会增强,layout的布局如果不太好的话,还是有可能出现这种高速率失败的情况的。PS: 在Linux的配置中,最好还是检查一下,你的ddr clock是否配置为了400MHz。

  • 非常感谢Steven Liu前辈的分析讲解,会根据您提的一些注意点再去排查,多谢谢前辈!

  • Steven Liu 前辈,AM3352BZCZ60 60表示600MHz Cortex-A8,这是指MPU的频率?还是Core的频率?

    u-boot-2013.01.01-psp06.00.00.00源码里设置的内核频率是1000MHz,我们目前用的CPU型号是AM3352BZCZ60 这个会影响DDR3 400MHz的功能吗?

    ---------------------------------------------------------------------------------------

    if (!voltage_update(CORE, PMIC_OP_REG_SEL_1_1_3))

    {
    core_pll_config(OPP_100);
    puts("\n>>SPL CORE PLL:OPP100.\n");
    }

  • 那个60表示的是MPU最高可以跑在600MHz. Core的设置一般都是OPP100,对应到代码中L3的频率设置是200MHz.

    你可以参考着AM335X的datasheet,里面有介绍CORE和MPU频率间的配搭表.

  • 好的,多谢前辈~

  • Steven Liu前辈,不好意思,又得拜托您给指导指导

    -----------------------------------------------------------------------------------

    我们板上目前一组DDR_CK和两组DDR_DSQ 走线长度为

    一组DDR_CK:1.355 inches

    两组DDR_DQS:1.693 inches 1.693 inches

    --------------------------------------------------------------------------------------

    我们有做过尝试,把DDR_CK的长度故意设定的比DDR_DQS的长,Software leveling就可以出来值

    ------------------------------------------------------------------------------------------------------------------------------------------

    我的疑问:

    1、单纯的从Software leveling角度而言,400MHz情况下,Software leveling能给出PHY值,CK与DQS的长度关系是否有要求?

    2、实际板载走线时,DDR3跑在400M的时钟频率下,CK与DQS的走线长度,以及它们之间的长度关系,是否也有要求?

    Steven Liu前辈,又得麻烦您多费心一下了~

  • 关于走线,直接看看datasheet的要求,以datasheet的要求为准。