DRAM 新物料适配流程
当硬件方案更换DRAM颗粒型号时,需要重新适配DDR参数以确保系统稳定运行。本文档介绍使用DragonHD工具进行DRAM参数调试的完整流程,涵盖从低频初始化、参数调优、提频验证到稳定性测试的各环节。
本文适用读者:硬件工程师、驱动开发人员
DragonHD工具简介
DragonHD是全志平台提供的DRAM调试工具,无需下载固件即可快速对最小系统进行检测和诊断。该工具兼容AW所有平台,为DRAM参数调试提供了便捷的操作界面。
下载地址:https://open.allwinnertech.com/#/devtoolIndex?menuID=37

工具界面说明
DragonHD界面分为四个功能区:

| 区域 | 功能说明 |
|---|---|
| 区域1(红色) | 操作区:设置DDR时钟频率、循环次数、启动/停止测试 |
| 区域2(绿色) | 平台用例区:选择平台后显示该平台的所有测试用例 |
| 区域3(蓝色) | 测试信息区:显示测试进度、状态、结果和过程日志 |
| 区域4(黄色) | 软件功能区:软件升级、配置模板管理、退出软件 |
工具设置方法
打开DragonHD后,需完成以下四项设置:选择平台、输入测试频点、输入测试次数、选择测试用例。
测试项目说明:
| 测试项目 | 说明 | 是否必选 |
|---|---|---|
| uart_init | 串口初始化,通信基础 | 必选 |
| dram_init | DRAM初始化,其他测试的基础 | 必选 |
| set_ddr_voltage | PMU电压设置,根据硬件是否有PMU电源芯片选择 | 可选 |
| memtester | DRAM压力测试,初始化PASS后再勾选 | 可选 |

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


了解工具使用方法后,下面开始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关键参数如下:

步骤1:配置时钟频率
从低频开始适配,建议初始频率设为360MHz。
步骤2:配置DRAM类型
根据颗粒类型设置 dram_type:
| DRAM类型 | dram_type值 |
|---|---|
| DDR2 | 2 |
| DDR3 | 3 |
| DDR4 | 4 |
| LPDDR3 | 7 |
| LPDDR4 | 8 |
本例为DDR3,故 dram_type = 3。
步骤3:配置容量参数
根据Datasheet获取Bank数、Row数、Page Size,配置 dram_para1 和 dram_para2。
本例颗粒参数:
- Bank = 8
- Row = 14
- Page Size = 1KB
配置结果:dram_para1 = 0x10e1,dram_para2 = 0x0
容量参数配置方法详见《DRAM 参数调试》的 dram_para1/dram_para2 章节。
步骤4:配置控制器端驱动与ODT
控制器端的ODT(端接电阻)和驱动能力影响信号质量,需根据DRAM类型设置典型值。
DDR3典型配置:
| 参数 | 推荐值 |
|---|---|
| DX0/1读ODT阻抗 | |
| DX0/1输出驱动能力 | |
| CA输出驱动能力 | |
| CK输出驱动能力 | (最大) |
综合配置:dram_zq = 0x002b7b
驱动能力和ODT档位映射表详见《DRAM 参数调试》的 dram_zq 章节。
步骤5:配置颗粒端驱动与ODT
通过模式寄存器(MR)配置颗粒端的ODT和驱动能力。
DDR3典型配置:
| 参数 | 推荐值 |
|---|---|
| DX0/1写方向ODT | |
| 读方向驱动能力 |
配置结果:dram_mr1 = 0x40
步骤6:配置初始相位
相位配置影响信号的时序对齐。不同DRAM类型有不同的相位要求。
DDR3相位原则:
| 信号关系 | 相位要求 | 说明 |
|---|---|---|
| CK vs CA/CS | CK比CA/CS大90° | 控制器默认输出,初始无需调整 |
| wDQS vs wDQ | wDQS比wDQ大90° | 控制器默认输出,初始无需调整 |
| rDQS vs rDQ | rDQS比rDQ大90° | 颗粒默认边沿对齐,需根据实际调整 |
初始配置:dram_tpr10 = 0x0,dram_tpr11 = 0x0,dram_tpr12 = 0x0
理论上DQS应与DQ相位差90°,但实际受PCB走线等因素影响,相位差不一定正好是90°,需以实际调参结果为准。
参数配置完成后,需验证初始化效果。
低频参数验证
按以下步骤验证低频参数是否正确:
步骤①:确认测试用例勾选正确,参数设置无误
步骤②:点击"启动"按钮,按钮变为"停止",工具处于待连接状态
步骤③:测试板按uboot上电(若无uboot键,可在串口长按2同时上电,进入烧写状态)
步骤④:将测试板通过USB连接PC,工具开始运行

若初始化失败或读写不稳定,可按以下思路调试。
低频读不稳定调试思路
当低频初始化PASS但读写不稳定时,需要调整信号相位和端接配置。
信号相位关系回顾:
| 信号组 | 相位关系 | 来源 |
|---|---|---|
| CK/CA/CS | CK比CA/CS大90° | IP默认设置 |
| wDQS/wDQ | wDQS比wDQ大90° | IP默认设置(DDR3/DDR4/LPDDR3) |
| rDQS/rDQ | rDQS比rDQ大90° | 颗粒边沿对齐输出,需调整 |
理论最佳Vref:
DDR3的最佳Vref为 。具体计算方法可参考《DRAM 参数调试》的Vref理论计算部分。驱动能力和ODT需根据实际眼图调整。

判断读写稳定性的方法:
- 点击工具上的DDR读写按钮,打开DDR读写功能
- 填写起始地址和读写长度
- 点击Read执行读操作
- 修改地址数据
- 点击Write写入数据,观察是否正确写入
- 反复操作,确认读写数据是否稳定

调试方向:眼图调优
采用控制变量法,固定其中一个信号相位,调节另一个,找出可用范围,然后选取中心点作为最优配置。
(1) 读方向调优:
| 操作 | 说明 |
|---|---|
| 固定rDQ为0,调节rDQS | rDQS调节范围0~F,找出可用范围 |
| 固定rDQS为0,调节rDQ | rDQ调节范围0~F,找出可用范围 |
| 计算中心点 | 读方向眼图裕量 = rDQS可用范围 + rDQ可用范围 |
(2) 写方向调优:
| 操作 | 说明 |
|---|---|
| 固定wDQ为0,调节wDQS | wDQS调节范围0~F,找出可用范围 |
| 固定wDQS为0,调节wDQ | wDQ调节范围0~F,找出可用范围 |
| 计算中心点 | 写方向眼图裕量 = wDQS可用范围 + wDQ可用范围 |
中心点计算公式:
低频调通后,逐步提高频率直至目标频率。
提频至目标频率
低频参数调优完成后,按48MHz或96MHz的步进逐步提高DRAM频率。
提频流程:
每提高一个频点后:
- 重复眼图调优步骤,将各信号的可用范围调节至最优
- 运行DragonHD的memtester验证参数稳定性
最终判断:
| 情况 | 结果 |
|---|---|
| 频率达到目标频率,眼图裕量满足要求 | 得到新物料的可用参数 |
| 频率达不到目标频率,或裕量不满足要求 | 调试到满足要求的最高频率 |

参数调通后,还需进行稳定性测试以确保长期可靠运行。
稳定性测试
参数调优完成后,需要进行稳定性测试以验证参数在长时间运行下的可靠性。
测试方法:
在DragonHD中勾选memtester,设置测试容量和循环次数,进行循环稳定性测试。

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

验证标准
| 测试类型 | 验证要求 |
|---|---|
| 高带宽读写压力测试 | 高低温下不出现读写错误、memtester报错,系统不跑飞/卡死,带宽满足要求 |
| 反复初始化测试(Reboot) | 高低温下系统正常重启,不出现跑飞/卡死/无法启动等现象 |
| 自刷新测试(休眠唤醒) | 高低温下系统正常待机休眠和唤醒,不出现跑飞/卡死/无法启动等现象 |
参数同步到SDK
参数调试完成后,需将工具调试的参数同步到SDK,输出固件进行系统测试。
参数配置位置:sys_config.fex
注意事项:
- 确认
dram_select_para功能是否打开 - 确认修改的参数是否为选中的参数组

高带宽压力测试
测试目的:验证DRAM在高带宽、重负载场景下的读写稳定性。
通过运行高带宽压力测试pattern和memtester,营造DRAM的高带宽读写场景。
常见报错:
memtester报错:
Kernel panic报错:

Debug手段:
| 排查方向 | 具体方法 |
|---|---|
| 裕量不足 | 检查参数是否还能优化 |
| 频率定位 | 降低DRAM工作频率排查 |
| 颗粒问题 | 补焊颗粒验证是否有效 |
| 温度相关(低温) | 可考虑给DRAM电源提压 |
| 温度相关(高温) | 检查刷新率是否足够 |
反复初始化测试
测试目的:验证DRAM在连续反复初始化时保持稳定工作的能力。
通过系统反复Reboot重启实现测试。
常见报错:
Kernel panic报错:

DRAM初始化失败:

Debug手段:
| 排查方向 | 具体方法 |
|---|---|
| 裕量不足 | 检查参数是否还能优化 |
| 频率定位 | 降低DRAM工作频率排查 |
| 颗粒问题 | 补焊颗粒验证是否有效 |
| 温度相关(低温) | 可考虑给DRAM电源提压 |
| 温度相关(高温) | 检查刷新率是否足够 |
自刷新测试
测试目的:验证DRAM在反复进入自刷新状态时保持稳定工作的能力。
通过系统反复休眠、唤醒实现测试,系统休眠过程即是DRAM进入自刷新状态的过程。
常见报错:
- Kernel panic报错
- 系统进入休眠失败
- 系统无法唤醒
Debug手段:
基本同高带宽测试的Debug方法。无法休眠/唤醒的问题需更详细定位。
交付标准
兼容性测试完成后,需交付以下材料:
| 交付内容 | 格式要求 |
|---|---|
| DDR兼容性测试日志 | 按实验项目分类,做好标注,设置每行时间戳 |
| DDR兼容性测试报告 | 按报告模板如实填写 |
| DDR颗粒Datasheet | 提供验证颗粒的规格文档 |