一,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頻率已更新成功。