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.

dvr_rdk4.0 uboot启动不了的问题

大家好:

         我有一块板子,使用之前dvr_rdk3.0版本的uboot能够正常启动,但是在使用了dvr_rdk4.0的uboot之后发现板子不能正常启动了,进入uboot之后通常只能打印出几行打印,板子就挂了,dvr_rdk4.0的uboot我重新编过,我根据ddr3的芯片手册和ti提供的DM816x_C6A816x_AM389x_EMIF4_Register_Settings.xls表格计算过ddr_defs_ti816x.h和clocks_ti816x.h中的SDTIMR1,SDTIMR2,SDTIMR3,指定了#define CONFIG_TI816X_DDR3_796的值,并且把DDR_CWL 设为1      DDR_CL 设为7,我想问一下除了修改这几个地方还有别的地方要改吗,我做的这些修改有没有什么问题?  

  • 你好,

      你的是什么芯片平台?能否提供一下uboot打印的log?其实可以比较一下你可用的uboot(RDK 3.0)与RDK 4.0的uboot关于DDR的配置,如果一致,应该不是DDR的问题,如果不一致,就将可用的DDR配置导到RDK4.0来试一下。

  • 你好,

        我们用的是dm8168 ccyg4.打印信息在附件中。uboot中修改的文件clocks_ti816x.h和ddr_defs_ti816x.h也在附件里。能不能帮我看一下是不是改这些地方。

    同时还有一个问题,在uboot使用能够启动的版本启动后,用示波器测量差分时钟信号发现,不管如何修改ddr频率等配置,在uboot下板子始终跑在800M的频率下,请问这又是什么原因。

    附件.rar
  • 你好,

      你修改的代码有问题, 下面红色部分是你的代码,控制DDR的频率是通过类似 “CONFIG_TI816X_DDR3_796” 宏来控制的,如果需要DDR为675,请将黄色部分修改宏为CONFIG_TI816X_DDR3_675,另外在ddr_defs_ti816x.h里面只用修改DDR的Timing和DDR leveling提到的几个寄存器。

    #ifndef CONFIG_UD8168_DVR
    #define CONFIG_TI816X_DDR3_796 /* Values supported 400,531,675,796 */
    #endif

    #ifdef CONFIG_TI816X_DDR3_796
    #define DDR_PLL_796 675
    #endif
    #else
    #define DDR_PLL_796 796/* Values supported 400,531,675,796 */
    #endif

  • 你好,

        谢谢你的帮助,现在我们的板子使用4.0版本uboot不能启动的问题解决了,问题应该是在硬件上的电源芯片。但是我照着您说的方法修改ddr的频率之后发现ddr还是只跑在800M上。

        我现在想把频率改到1066,在ddr_defs_ti816x.h中做了如下修改:

    #ifndef CONFIG_UD8168_DVR
    #define CONFIG_TI816X_DDR3_531  /* Values supported 400,531,675,796 */
    #endif

    /* For 531 MHz */
    #if defined(CONFIG_TI816X_DDR3_531)
    #define EMIF_TIM1    0x0CCF36B3//0x0EF136AC
    #define EMIF_TIM2    0x308F7FDA//0x30408063
    #define EMIF_TIM3    0x001F88AF//0x009F83AF

    我暂时没有修改DDR leveling那几个寄存器,那几个寄存器值是通过RatioSeed.xls和DDR3_SlaveRatio_ByteWiseSearch_TI816x.out在CCS上计算的吗?

    修改ddr频率是否一定要修改这几个DDR leveling寄存器?

    最后现在又出现了一个问题,uboot下硬件复位没有问题,但是敲reset命令后只能打印出resetting...  之后就没有任何反应了。不知这个问题您能不能给些思路

    麻烦您了!

  • 你好,

      1.  把DDR PLL对应的寄存器查一下,看是否与DDR3_531的配置一致。

      2. DDR leveling的补偿值需要用到excel的种子,并在CCS上计算出来,再填回到UBOOT代码中。

    /* For 531 MHz */

    #if defined(DDR_PLL_531)
    #define DDR_N 59
    #define DDR_P 0x1
    #define DDR_MDIV1 0x3
    #define DDR_INTFREQ2 0x8
    #define DDR_FRACFREQ2 0xD99999
    #define DDR_MDIV2 0x1E
    #define DDR_INTFREQ3 0x8
    #define DDR_FRACFREQ3 0x0
    #define DDR_MDIV3 0x4
    #define DDR_INTFREQ4 0xE /* Expansion DDR clk */
    #define DDR_FRACFREQ4 0x0
    #define DDR_MDIV4 0x4
    #define DDR_INTFREQ5 0xE /* Expansion DDR clk */
    #define DDR_FRACFREQ5 0x0
    #define DDR_MDIV5 0x4
    #endif