跳到主要内容

DRAM 新物料适配流程

当硬件方案更换DRAM颗粒型号时,需要重新适配DDR参数以确保系统稳定运行。本文档介绍使用DragonHD工具进行DRAM参数调试的完整流程,涵盖从低频初始化、参数调优、提频验证到稳定性测试的各环节。

本文适用读者:硬件工程师、驱动开发人员


DragonHD工具简介

DragonHD是全志平台提供的DRAM调试工具,无需下载固件即可快速对最小系统进行检测和诊断。该工具兼容AW所有平台,为DRAM参数调试提供了便捷的操作界面。

下载地址https://open.allwinnertech.com/#/devtoolIndex?menuID=37

image-20260330124830474

工具界面说明

DragonHD界面分为四个功能区:

image-20260330125014787

区域功能说明
区域1(红色)操作区:设置DDR时钟频率、循环次数、启动/停止测试
区域2(绿色)平台用例区:选择平台后显示该平台的所有测试用例
区域3(蓝色)测试信息区:显示测试进度、状态、结果和过程日志
区域4(黄色)软件功能区:软件升级、配置模板管理、退出软件

工具设置方法

打开DragonHD后,需完成以下四项设置:选择平台、输入测试频点、输入测试次数、选择测试用例。

测试项目说明

测试项目说明是否必选
uart_init串口初始化,通信基础必选
dram_initDRAM初始化,其他测试的基础必选
set_ddr_voltagePMU电压设置,根据硬件是否有PMU电源芯片选择可选
memtesterDRAM压力测试,初始化PASS后再勾选可选

image-20260330125112029

修改DRAM参数

选中dram_init测试项,右键弹出编辑配置,单击打开即可在弹出的par文件中修改参数。

image-20260330125140525

image-20260330125210403

了解工具使用方法后,下面开始DRAM参数适配。


DRAM参数适配

DRAM 参数配置器

配置导入

粘贴已有的 dram_para 配置文本,点击解析后会自动填充到下方各参数输入框。

基础配置(容量参数)

自动计算结果

Page Size: 0 Bytes (0 B)

DRAM 总容量: 0.00 MB

基础参数输出

dram_clk: 1056

dram_type: 3 (DDR3)

dram_para1: 0x0

dram_para2: 0x0

高级配置(驱动/ODT/相位/MR)

驱动能力与ODT配置

相位延迟配置 (范围: 0-F)

MR 寄存器配置 (十六进制, 参考对应JEDEC协议文档)

高级参数输出

dram_zq: 0x0

dram_odt_en: 0x1

dram_tpr10: 0x0

dram_tpr11: 0x0

dram_tpr12: 0x0

dram_mr0: 0x1c70

dram_mr1: 0x2

dram_mr2: 0x18

dram_mr3: 0x0

参数配置

[dram_para]
dram_clk = 1056
dram_type = 3
dram_zq = 0x0
dram_odt_en = 0x1
dram_para1 = 0x0
dram_para2 = 0x0
dram_mr0 = 0x1c70
dram_mr1 = 0x2
dram_mr2 = 0x18
dram_mr3 = 0x0
dram_tpr0 = 0x004A2195
dram_tpr1 = 0x02423190
dram_tpr2 = 0x0008B061
dram_tpr3 = 0xB4787896
dram_tpr4 = 0x0
dram_tpr5 = 0x48484848
dram_tpr6 = 0x48
dram_tpr7 = 0x1621121e
dram_tpr8 = 0x0
dram_tpr9 = 0x0
dram_tpr10 = 0x0
dram_tpr11 = 0x0
dram_tpr12 = 0x0
dram_tpr13 = 0x34040500

低频参数适配

为什么从低频开始?

高频环境下信号完整性问题更突出,调试难度大。从低频(建议360MHz)开始适配,可以:

  • 降低信号完整性要求,更容易调通初始参数
  • 快速验证颗粒基本配置是否正确
  • 为后续提频调优奠定基础

适配步骤(以DDR3颗粒为例):

以下以一款DDR3颗粒为例,说明参数配置方法。颗粒Datasheet关键参数如下:

image-20260330125314400

步骤1:配置时钟频率

从低频开始适配,建议初始频率设为360MHz。

步骤2:配置DRAM类型

根据颗粒类型设置 dram_type

DRAM类型dram_type值
DDR22
DDR33
DDR44
LPDDR37
LPDDR48

本例为DDR3,故 dram_type = 3

步骤3:配置容量参数

根据Datasheet获取Bank数、Row数、Page Size,配置 dram_para1dram_para2

本例颗粒参数:

  • Bank = 8
  • Row = 14
  • Page Size = 1KB

配置结果:dram_para1 = 0x10e1dram_para2 = 0x0

提示

容量参数配置方法详见《DRAM 参数调试》的 dram_para1/dram_para2 章节。

步骤4:配置控制器端驱动与ODT

控制器端的ODT(端接电阻)和驱动能力影响信号质量,需根据DRAM类型设置典型值。

DDR3典型配置

参数推荐值
DX0/1读ODT阻抗100Ω100\Omega
DX0/1输出驱动能力40Ω40\Omega
CA输出驱动能力40Ω40\Omega
CK输出驱动能力37.5Ω37.5\Omega(最大)

综合配置:dram_zq = 0x002b7b

提示

驱动能力和ODT档位映射表详见《DRAM 参数调试》的 dram_zq 章节。

步骤5:配置颗粒端驱动与ODT

通过模式寄存器(MR)配置颗粒端的ODT和驱动能力。

DDR3典型配置

参数推荐值
DX0/1写方向ODT120Ω120\Omega
读方向驱动能力40Ω40\Omega

配置结果:dram_mr1 = 0x40

步骤6:配置初始相位

相位配置影响信号的时序对齐。不同DRAM类型有不同的相位要求。

DDR3相位原则

信号关系相位要求说明
CK vs CA/CSCK比CA/CS大90°控制器默认输出,初始无需调整
wDQS vs wDQwDQS比wDQ大90°控制器默认输出,初始无需调整
rDQS vs rDQrDQS比rDQ大90°颗粒默认边沿对齐,需根据实际调整

初始配置:dram_tpr10 = 0x0dram_tpr11 = 0x0dram_tpr12 = 0x0

注意

理论上DQS应与DQ相位差90°,但实际受PCB走线等因素影响,相位差不一定正好是90°,需以实际调参结果为准。

参数配置完成后,需验证初始化效果。


低频参数验证

按以下步骤验证低频参数是否正确:

步骤①:确认测试用例勾选正确,参数设置无误

步骤②:点击"启动"按钮,按钮变为"停止",工具处于待连接状态

步骤③:测试板按uboot上电(若无uboot键,可在串口长按2同时上电,进入烧写状态)

步骤④:将测试板通过USB连接PC,工具开始运行

image-20260330125634415

若初始化失败或读写不稳定,可按以下思路调试。


低频读不稳定调试思路

当低频初始化PASS但读写不稳定时,需要调整信号相位和端接配置。

信号相位关系回顾

信号组相位关系来源
CK/CA/CSCK比CA/CS大90°IP默认设置
wDQS/wDQwDQS比wDQ大90°IP默认设置(DDR3/DDR4/LPDDR3)
rDQS/rDQrDQS比rDQ大90°颗粒边沿对齐输出,需调整

理论最佳Vref

DDR3的最佳Vref为 Vref=VDDQ2V_{ref} = \frac{V_{DDQ}}{2}。具体计算方法可参考《DRAM 参数调试》的Vref理论计算部分。驱动能力和ODT需根据实际眼图调整。

image-20260330125752893

判断读写稳定性的方法

  1. 点击工具上的DDR读写按钮,打开DDR读写功能

image-20260330125849693

  1. 填写起始地址和读写长度
  2. 点击Read执行读操作
  3. 修改地址数据
  4. 点击Write写入数据,观察是否正确写入
  5. 反复操作,确认读写数据是否稳定

image-20260330125908353

调试方向:眼图调优

采用控制变量法,固定其中一个信号相位,调节另一个,找出可用范围,然后选取中心点作为最优配置。

(1) 读方向调优

操作说明
固定rDQ为0,调节rDQSrDQS调节范围0~F,找出可用范围
固定rDQS为0,调节rDQrDQ调节范围0~F,找出可用范围
计算中心点读方向眼图裕量 = rDQS可用范围 + rDQ可用范围

(2) 写方向调优

操作说明
固定wDQ为0,调节wDQSwDQS调节范围0~F,找出可用范围
固定wDQS为0,调节wDQwDQ调节范围0~F,找出可用范围
计算中心点写方向眼图裕量 = wDQS可用范围 + wDQ可用范围

中心点计算公式

Delayopt=Delayleft+Delayright2Delay_{opt} = \frac{Delay_{left} + Delay_{right}}{2}

低频调通后,逐步提高频率直至目标频率。


提频至目标频率

低频参数调优完成后,按48MHz或96MHz的步进逐步提高DRAM频率。

提频流程

每提高一个频点后:

  1. 重复眼图调优步骤,将各信号的可用范围调节至最优
  2. 运行DragonHD的memtester验证参数稳定性

最终判断

情况结果
频率达到目标频率,眼图裕量满足要求得到新物料的可用参数
频率达不到目标频率,或裕量不满足要求调试到满足要求的最高频率

image-20260330130131902

参数调通后,还需进行稳定性测试以确保长期可靠运行。


稳定性测试

参数调优完成后,需要进行稳定性测试以验证参数在长时间运行下的可靠性。

测试方法

在DragonHD中勾选memtester,设置测试容量和循环次数,进行循环稳定性测试。

image-20260330130203975

稳定性测试通过后,进行兼容性测试以验证系统可靠性。


兼容性测试

兼容性测试验证DRAM在系统环境下的稳定性和可靠性,包括高带宽压力测试、反复初始化测试和自刷新测试。

image-20260330134023429

验证标准

测试类型验证要求
高带宽读写压力测试高低温下不出现读写错误、memtester报错,系统不跑飞/卡死,带宽满足要求
反复初始化测试(Reboot)高低温下系统正常重启,不出现跑飞/卡死/无法启动等现象
自刷新测试(休眠唤醒)高低温下系统正常待机休眠和唤醒,不出现跑飞/卡死/无法启动等现象

参数同步到SDK

参数调试完成后,需将工具调试的参数同步到SDK,输出固件进行系统测试。

参数配置位置sys_config.fex

注意事项

  • 确认 dram_select_para 功能是否打开
  • 确认修改的参数是否为选中的参数组

image-20260330130339890

高带宽压力测试

测试目的:验证DRAM在高带宽、重负载场景下的读写稳定性。

通过运行高带宽压力测试pattern和memtester,营造DRAM的高带宽读写场景。

常见报错

memtester报错:

image-20260330130412635

Kernel panic报错:

image-20260330130421039

Debug手段

排查方向具体方法
裕量不足检查参数是否还能优化
频率定位降低DRAM工作频率排查
颗粒问题补焊颗粒验证是否有效
温度相关(低温)可考虑给DRAM电源提压
温度相关(高温)检查刷新率是否足够

反复初始化测试

测试目的:验证DRAM在连续反复初始化时保持稳定工作的能力。

通过系统反复Reboot重启实现测试。

常见报错

Kernel panic报错:

image-20260330130444779

DRAM初始化失败:

image-20260330130451435

Debug手段

排查方向具体方法
裕量不足检查参数是否还能优化
频率定位降低DRAM工作频率排查
颗粒问题补焊颗粒验证是否有效
温度相关(低温)可考虑给DRAM电源提压
温度相关(高温)检查刷新率是否足够

自刷新测试

测试目的:验证DRAM在反复进入自刷新状态时保持稳定工作的能力。

通过系统反复休眠、唤醒实现测试,系统休眠过程即是DRAM进入自刷新状态的过程。

常见报错

  • Kernel panic报错
  • 系统进入休眠失败
  • 系统无法唤醒

Debug手段

基本同高带宽测试的Debug方法。无法休眠/唤醒的问题需更详细定位。

交付标准

兼容性测试完成后,需交付以下材料:

交付内容格式要求
DDR兼容性测试日志按实验项目分类,做好标注,设置每行时间戳
DDR兼容性测试报告按报告模板如实填写
DDR颗粒Datasheet提供验证颗粒的规格文档