一,DDR打印信息
DDR 打印信息包括 loader 中的打印和 kernel 中的打印,loader 中打印的解析如下:
DDR Version 1.05 20170712// DDR 初始化代码的版本信息,用于核对版本。从这行开始,已经进入DDR初始化代码
In
SRX // 有SRX,说明是热重启;没有SRX,说明是冷开机。有的芯片没加这个功能,一直都是没有SRX的
Channel a: DDR3 400MHz // 下面都是DDR容量的详细信息,具体解析可以看"如何查看DDR的容量"章节
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Channel b: DDR3 400MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Memory OK // DDR自测的结果,第一个Memroy OK是Channel a的自测结果
Memory OK // 是Channel b的自测结果。有报错,说明焊接有问题;没报错,说明当前自测没问题,整个DDR是否能稳定工作,还得看后续阶段的运行结果。
OUT // 这行打印之后,就退出了DDR初始化代码
二,将DDR bin 合成成完整可用的 loader
-
将 DDR bin 放在 U-Boot 工程的 rk\rkbin\bin\对应目录下;
-
删除原有的 DDR bin 文件;
-
将新的 DDR bin 改名为删除掉的名字;
-
编译 U-Boot(编译前make distclean),就会生成对应的loader文件;
-
根据 DDR bin 打印的串口信息,确认 loader 已经更新正确;
三,修改DDR bin文件
可以使用rkbin/tools/ddrbin_tool命令行工具,说明文档是 rkbin/tools/ddrbin_tool_user_guide.txt
。
1. 官方说明help如下:
~/Rockchip/RK3588_Android12/rkbin/tools$ ./ddrbin_tool -h
version v1.17 20230725
chip name error
For more details, please refer to the ddrbin_tool_user_guide.txt
This tools support two functions
for example:
function 1: modify ddr.bin file from ddrbin_param.txt.1) modify 'ddrbin_param.txt', set ddr frequency, uart info etc what you want.If want to keep items default, please keep these items blank.like: ./ddrbin_tool px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.binfunction 2: get ddr.bin file config to gen_param.txt fileIf want to get ddrbin file config, please run like that:./ddrbin_tool px30 -g gen_param.txt px30_ddr_333MHz_v1.15.binThe config will show in gen_param.txt.Note: The function 1 and function 2 are two separate functions
The gen_param.txt file which is generated by function 2 is no need used in function 1.For more details, please refer to the ddrbin_tool_user_guide.txt
2. 如何修改DDR频率?
RK3588在loader初始化DDR时,会一起初始化4个DDR频率,供后续的kernel使用,且默认以最高频退出loader,继续后面的程序。如下的F1,F2,F3,F0就是这4个频率,默认以F0退出。
DDR V1.12 52218f4949 cym 23/07/06-19:46:50
LPDDR4X, 1848MHz /* 当前DDR频率 */
channel[0] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[1] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[2] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[3] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
Manufacturer ID:0x13
CH0 RX Vref:28.9%, TX Vref:22.8%,0.0%
CH1 RX Vref:29.7%, TX Vref:22.8%,0.0%
CH2 RX Vref:29.3%, TX Vref:23.8%,0.0%
CH3 RX Vref:31.4%, TX Vref:21.8%,0.0%
change to F1: 528MHz /* 4个DDR频率 */
change to F2: 1068MHz
change to F3: 1560MHz
change to F0: 1848MHz
out
步骤1:确定当前的ddr.bin文件
具体文件名可在rkbin/RKBOOT/RK3588MINIALL.ini
中查看:
步骤2:查看当前ddr.bin配置
./ddrbin_tool rk3588 -g gen_param.txt ../bin/rk35/rk3588_ddr_lp4_1848MHz_lp5_2736MHz_v1.12.binversion v1.17 20230725
chip rk3588
version 4
generate info from bin file ok.
生成的gen_param.txt会包含DDR.bin的配置信息。
步骤3:修改gen_param.txt,设置DDR频率
修改lp5_freq的值,保存退出。
./ddrbin_tool rk3588 gen_param.txt ../bin/rk35/rk3588_ddr_lp4_1848MHz_lp5_2736MHz_v1.12.bin
步骤4:编译烧录
修改完成后,需要重新编译U-Boot,并烧录u-boot下新生成的rk3588_spl_loader_v1.19.113.bin。
3.修改完成
串口可看见DDR频率已更新成功。