文章目录
- 前言
- 一、ddr_stress_tester_v2.90配置流程
- 二、将inc配置文件下载到板子上
- 1.连接方式
- 2.打开DDR_Tester 软件
- uboot中DDR初始化的修改
前言
💦DDR3在自己做完板子后需要验证下,测试DDR3是否能正常使用,如果不能正常使用,其他的也将无法运行,所以测试DDR3还是非常有必要的,NXP官方提供了一个软件用来测试DDR3的工具,ddr_stress_tester_v2.90。
💦注意:一般认为 DDR 能够以超过标准工作频率10%~20%稳定工作的话就认定此硬件 DDR 走线正常,这就是DDR校准的意义。
一、ddr_stress_tester_v2.90配置流程
①、工具通过 USB OTG 接口与开发板相连接,也就是通过 USB OTG 口进行 DDR 的初始化与测试。
②、工具有一个默认的配置文件,为 excel 表,通过此表可以设置板子的 DDR 信息,生成一个.inc 结尾的 DDR 初始化脚本文件。这个.inc 文件就包含了 DDR 的初始化信息,一般都是寄存器地址和对应的寄存器值。
③、工具会加载.inc 表里面的 DDR 初始化信息,然后通过 USB OTG 接口向板子下载DDR 相关的测试代码,包括初始化代码。
④、对此工具进行简单的设置,即可开始 DDR 测试,一般要先做校准,因为不同的 PCB其结构肯定不同,必须要做一次校准,校准完成以后会得到两个寄存器对应的校准值,我们需要用这个新的校准值来重新初始化 DDR。
⑤、此工具可以测试板子的 DDR 超频性能,一般认为 DDR 能够以超过标准工作频率10%~20%稳定工作的话就认定此硬件 DDR 走线正常。
⑥、此工具也可以对 DDR 进行 12 小时的压力测试。
💦配置项根据自己所使用的DDR芯片参数来填写。
💦举例说明:如果开发板使用的是 EMMC 核 心 板 (DDR3 型 号 为NT5CC256M16EP-EK)配置如下:
💦点击RealView.inc回同步更新Register Configuration文件。
将RealView.inc配置文件导出来,新建一个.inc文件,将excel中的复制出来即可。
二、将inc配置文件下载到板子上
💦首先要用 DDR_Tester.exe 软件对正点原子 ALPAH 开发板的 DDR3L 进行校准,因为不同的 PCB 其走线不同,必须要进行校准,经过校准一会 DDR3L 就会工作到最佳状态。
1.连接方式
①、弹出 SD 卡,如果插入了 SD卡,那么一定要弹出来
②、设置拨码开关从 USB 启动
2.打开DDR_Tester 软件
💦得到校准值,也就是一些配置DRR的寄存器的值。
💦在裸机编程时,要将校准值和imxdownload.h中的对应寄存器进行核对,不一致的地方修改,没有的就不用管。
💦得到的校准值如下:
MMDC registers updated from calibration
Write leveling calibration
MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00000000
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x000B000B
Read DQS Gating calibration
MPDGCTRL0 PHY0 (0x021b083c) = 0x0144013C
MPDGCTRL1 PHY0 (0x021b0840) = 0x00000000
Read calibration
MPRDDLCTL PHY0 (0x021b0848) = 0x40403438
Write calibration
MPWRDLCTL PHY0 (0x021b0850) = 0x40403830
Success: DDR calibration completed!!!
💦更新下inc文件,在从小加载,然后做超频测试.
💦注意:如果没有校准,直接做超频测试回
uboot中DDR初始化的修改
💦uboot编译生成u-boot.imx。u-boot.imx已经包含了IVT DCD数据。
💦 那么u-boot.imx的头部信息是怎么添加的?
💦u-boot.imx的DCD中的DDR初始化代码该怎么修改。
💦uboot编译会输出
./tools/mkimage -n board/freescale/mx6ull_alientek_emmc/imximage.cfg.cfgtmp -T imximage -e 0x87800000 -d u-boot.bin u-boot.imx
💦 根据编译指令可以看出uboot使用/tools/mkimage工具,向u-boot.bin添加board/freescale/mx6ull_alientek_emmc/imximage.cfg.cfgtmp文件信息,从而得到u-boot.imx。
💦 在没有编译前,只有imximage.cfg文件,所以imximage.cfg里面保存的就是DCD数据。DDR初始化也此文件里面。
我们要修改DDR初始化代码,就需要修改imximage.cfg文件。此文件默认复制的NXP给IMX6ULL EVK开发板写的,默认是给512MB DDR3L写的。
💦 上述就是图片里就有DDR的初始化寄存器,在这个文件里,修改校准后的寄存器的值,即可完成uboot下的DDR初始化。
💦 然后在重新编译下uboot在核对下imximage.cfg和imximage.cfg.cfgtmp的寄存器是否一致。