个人观点,仅供参考......
个人观点,仅供参考......
个人观点,仅供参考......
ddrbin_tool.py 是瑞芯微官方提供的Python脚本,专门用来修改RK3588平台DDR初始化二进制ddr.bin文件。当硬件DDR型号、速率、UART引脚和参考设计不一致时,就需要使用该工具调整TPL阶段DDR训练参数。
基本操作流程
核心逻辑:从bin导出文本配置 → 修改文本参数 → 回写生成新ddr bin。
1、导出参数配置文件 -g
从原始ddr.bin提取内部配置,生成可编辑文本。
bash
python3 ./tools/ddrbin_tool.py rk3588 -g ddrbin_param.txt ./bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.07.bin
参数说明:
rk3588:指定SOC型号-g:generate,导出配置ddrbin_param.txt:输出配置文本- 最后参数:原始ddr bin路径
不需要改动的参数保持空白,工具会继承bin原有配置。
2、编辑参数文件
bash
vim ddrbin_param.txt
常用修改项:
- UART波特率:
uart baudrate=115200 - UART引脚mux:
uart iomux=0/2,严格对照硬件原理图 - DDR频率、驱动强度、ODT:
frequency、drv、odt - 低温降额:
derate_en,v1.09以上ddr bin支持
3、将修改回写到ddr bin
⚠️该命令会原地覆盖原始bin,操作前务必备份原始bin文件。
bash
python3 ./tools/ddrbin_tool.py rk3588 ddrbin_param.txt ./bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.07.bin
去掉‑g参数,依次传入SOC型号、参数文本、待修改bin。
实战:修改TPL阶段UART串口
用于统一SPL/TPL早期调试串口波特率,DDR初始化阶段即可输出日志。
- 导出配置
bash
python3 ./tools/ddrbin_tool.py rk3588 -g ddrbin_param.txt ./bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.07.bin
- 修改ddrbin_param.txt
ini
uart baudrate=115200
uart iomux=0
- 回写bin
bash
python3 ./tools/ddrbin_tool.py rk3588 ddrbin_param.txt ./bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.07.bin
- 重新编译U‑Boot,生成
MiniLoaderAll.bin烧录才会生效,只更新内核镜像不生效。
重要注意事项
- 运行环境依赖Python3。
- 修改前务必备份原始ddr bin,工具直接覆盖原文件。
- 不同版本ddr bin支持的参数集合不同,以
ddrbin_tool_user_guide.txt为准。 - 错误的DDR时序、驱动、频率参数,会导致不开机、随机报错、低温启动失败;修改完成必须执行stressapptest压力测试、高低温验证。
- 查看帮助:
bash
python3 ./tools/ddrbin_tool.py -h
DDR调试关键区分(容易踩坑)
- ddrbin仅控制U‑Boot TPL阶段DDR训练与时序;DDR颗粒VDD2/VDDQ供电电压由DTS regulator固定,不受ddrbin_tool控制。
- 内核
dmc‑opp‑table是RK3588片内DDR‑PHY频率‑电压查找表,用于DMC DVFS调压,和ddrbin相互独立。 - 修改ddr bin之后,必须重新打包loader镜像,单纯更新kernel镜像不会生效。
相关调试命令:查看DDR控制器频率
bash
cat /sys/class/devfreq/dmc/cur_freq
cat /sys/class/devfreq/dmc/available_frequencies
DDR颗粒实际速率 = DMC频率 ×2。