没有合适的资源?快使用搜索试试~ 我知道了~
首页DDR开发指南.pdf
DDR开发指南.pdf
需积分: 49 533 浏览量
更新于2023-05-27
评论 2
收藏 464KB PDF 举报
介绍RockChip 平台DDR开发。涉及1、如何配置DDR对的dts;2、系统启动后如何给DDR定频。包含3.10和4.4内核。
资源详情
资源评论
资源推荐

芯
片
名
称
内
核
版
本
所有芯片 所有内核版本
日
期
版
本
作
者
修
改
说
明
2017.12.21 V1.0 何灿阳
2018.3.30 V1.1 何灿阳 增加对kernel 4.4 DDR频率相关的描述
DDR
开
发
指
南
发布版本:1.1
作者邮箱:hcy@rock-chips.com
日期:2018.3.30
文件密级:公开资料
前
言
适用于所有平台的开发指南
概
述
产
品
版
本
读
者
对
象
本文档(本指南)主要适用于以下工程师:
技术支持工程师
软件开发工程师
修
订记
录
DDR
开
发
指
南
如何看懂DDR打印信息
如何将我们给的DDR bin 合成成完整可用的loader
如何修改U-Boot中的DDR频率
如何enable/disable kernel中的DDR变频功能
如何让kernel一次DDR变频都不运行
如何查看DDR的容量
如何修改DDR频率
如何修改DDR某个频率对应的电压
如何关闭DDR的负载变频功能,只留场景变频

DDR如何定频
如何查看DDR带宽利用率
如何测试DDR可靠性
如何确定DDR能运行的最高频率
怎么判断DDR已经进入自刷新(self-refresh省电模式)
怎么判断DDR已经进入auto power-down省电模式
如何调整DQ、DQS、CA、CLK的de-skew
如
何
看
懂
DDR
打
印
信
息
DDR打印信息包括loader中的打印和kernel中的打印,loader中打印的解析如下:
如下是kernel 3.0和kernel 3.10中打印的DDR信息
kernel 3.10还会有如下打印,是DDR变频模块的输出信息
DDRVersion1.0520170712//DDR初始化代码的版本信息,用于核对版本。从这行开始,已经进入DDR初始化
代码
In
SRX//有SRX,说明是热重启;没有SRX,说明是冷开机。有的芯片没加这个功能,一直都是没有SRX的
Channela:DDR3400MHz//下面都是DDR容量的详细信息,具体解析可以看"如何查看DDR的容量"章节
BusWidth=32Col=10Bank=8Row=15CS=1DieBus‐Width=16Size=1024MB
Channelb:DDR3400MHz
BusWidth=32Col=10Bank=8Row=15CS=1DieBus‐Width=16Size=1024MB
MemoryOK//DDR自测的结果,第一个MemroyOK是Channela的自测结果
MemoryOK//是Channelb的自测结果。有报错,说明焊接有问题;没报错,说明当前自测没问题,整个DDR是否
能稳定工作,还得看后续阶段的运行结果。
OUT//这行打印之后,就退出了DDR初始化代码
[0.528564]DDRDEBUG:version1.0020150126//版本信息
[0.528690]DDRDEBUG:Channela: //DDR容量详细信息
[0.528701]DDRDEBUG:DDR3Device
[0.528716]DDRDEBUG:BusWidth=32Col=10Bank=8Row=15CS=1TotalCapability=1024MB
[0.528727]DDRDEBUG:Channelb:
[0.528736]DDRDEBUG:DDR3Device
[0.528750]DDRDEBUG:BusWidth=32Col=10Bank=8Row=15CS=1TotalCapability=1024MB
//后面还有其他DDR打印信息,可以不用管,是写DDR驱动人员用的
//DDRDEBUG的字样打印结束,就是kernel中DDR初始化完成了
[1.473637]ddrfreq:verion1.220140526 //DDR变频模块版本
[1.473653]ddrfreq:normal396MHzvideo_1080p240MHzvideo_4k396MHzdualview396MHzidle
0MHzsuspend200MHzreboot396MHz //DDR各个场景对应的频率,是从dts表格中读取出来的
[1.473661]ddrfreq:auto‐freq=1 //负载变频功能是否开启,1表示开启,0表示关闭
[1.473667]ddrfreq:auto‐freq‐table[0]240MHz //负载变频的频率表格
[1.473673]ddrfreq:auto‐freq‐table[1]324MHz
[1.473678]ddrfreq:auto‐freq‐table[2]396MHz
[1.473683]ddrfreq:auto‐freq‐table[3]528MHz
//如果在这段打印过程中系统卡死了,很可能是DDR变频有问题
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8

芯
片
平
台
路
径
Note
RK3036 tools\rk_tools\bin\rk30\rk3036_ddr3_XXXMHz_vX.XX.bin 1
RK3126、RK3126B、RK3126C tools\rk_tools\bin\rk31\rk3126_ddr3_300MHz_vX.XX.bin
RK3128 tools\rk_tools\bin\rk31\rk3128_ddr_300MHz_vX.XX.bin
RK3288 tools\rk_tools\bin\rk32\rk3288_ddr_400MHz_vX.XX.bin
RK322x tools\rk_tools\bin\rk32\rk322x_ddr_300MHz_vX.XX.bin
RK3368 tools\rk_tools\bin\rk33\rk3368_ddr_600MHz_vX.XX.bin
RK322xh tools\rk_tools\bin\rk33\rk322xh_ddr_333MHz_vX.XX.bin
RK3328 tools\rk_tools\bin\rk33\rk3328_ddr_333MHz_vX.XX.bin
RK3399 tools\rk_tools\bin\rk33\rk3399_ddr_XXXMHz_vX.XX.bin 2
如
何
将
我
们
给
的
DDR bin
合
成成
完
整
可
用
的
loader
1. 将DDR bin放在U-Boot工程的tools\rk_tools\bin\对应目录下
2. 删除原有的DDR bin文件
3. 将新的DDR bin改名为删除掉的名字
4. 编译U-Boot(见U-Boot根目录下的UserManual),就会生成对应的loader文件
5. 根据DDR bin打印的串口信息,确认loader已经更新正确
各平台DDR bin对应目录整理如下:
Note 1:具体用哪个频率由tools\rk_tools\RKBOOT\RK3036_ECHOMINIALL.ini或RK3036MINIALL.ini文件中指
定。其中RK3036_ECHOMINIALL.ini是ECHO产品使用的,其他产品都使用RK3036MINIALL.ini。至于哪个是ECHO
产品,请联系产品部的人。
Note 2:具体用哪个频率由tools\rk_tools\RKBOOT\RK3399MINIALL.ini文件中指定
Note 3:不在这个表格中的芯片,就是不支持从U-Boot中生成loader。
如
何
修
改
U-Boot
中
的
DDR
频
率
目前这个功能只有RK322x支持,修改方法是,修改kernel-3.10代码中的arch/arm/boot/dts/rk322x.dtsi
修改其中的,dram_freq就可以了,这里单位是Hz,频率可以随便选择。
dram:dram{
compatible="rockchip,rk322x‐dram";
status="okay";
dram_freq=<786000000>;
rockchip,dram_timing=<&dram_timing>;
};
1
2
3
4
5
6

U-Boot会去解析这个dts,然后读取这个频率,变频到对应频率。
如
何
enable/disable kernel
中
的
DDR
变
频
功
能
先确认该芯片支持kernel中的DDR变频功能,如果支持,可以通过如下方式enable或disable变频功能。
对于kernel 4.4,需要找到dts中最终的dmc节点,将status改成disabled就可以disable kernel的DDR变频功
能。相反的,改成okay,就会enable DDR变频功能。
Note: 由于早期代码,dmc节点有依赖于dfi节点,如果dfi节点为disabled,也会导致dmc节点无效。所以最
好dfi节点的status保持跟dmc一致。
举例如下,RK3399 EVB板的最终dmc节点在arch/arm64/boot/dts/rockchip/rk3399-evb.dtsi中,
对于kernel 3.10,需要找到dts中最终的clk_ddr_dvfs_table节点,将status改成disabled就可以disable
kernel的DDR变频功能。相反的,改成okay,就会enable DDR变频功能。举例如下,RK3288 SDK板的最终
clk_ddr_dvfs_table在arch/arm/boot/dts/rk3288-tb_8846.dts中,
对于kernel 3.0,需要在板级的borad-**.c文件中修改dvfs_ddr_table, 让这个表,只留一个
DDR_FREQ_NORMAL频率,就不会运行DDR变频了。举例如下,RK3066 SDK板的板级文件在
arch/arm/mach-rk30/board-rk30-sdk.c中
&dfi{
status="okay";
};
&dmc{
status="okay";/*enablekernelDDR变频*/
........
};
&dfi{
status="disabled";
};
&dmc{
status="disabled"; /*disablekernelDDR变频*/
........
};
&clk_ddr_dvfs_table{
........
status="okay"; /*enablekernelDDR变频*/
};
&clk_ddr_dvfs_table{
........
status="disabled"; /*disablekernelDDR变频*/
};
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
1
2
3
4
剩余19页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0