终极方法(先公布答案)
hexdump -ve '1/1 "%.2X"' rk3399_ddr_800MHz_v1.25.bin | \
sed "s/60E31600/00C20100/" | \
xxd -r -p | openssl rc4 -K 7c4e0304550509072d2c7b38170d1711 | rkflashtool l
rk3399 ddr 初始化代码的默认波特率为 1500000
(≈ 115200 × 13 = 1497600)
这是一个很奇葩的设置!
如何修改
ddr初始化代码一共有3个频率的文件:
rk3399_ddr_666MHz_v1.25.bin
rk3399_ddr_800MHz_v1.25.bin
rk3399_ddr_933MHz_v1.25.bin
在二进制编辑器中,搜索:60 E3 16 00
(1500000),替换成00 C2 01 00
(115200)
注意:应该只会命中一处,如有多处,可能有问题!
运行
cat rk3399_ddr_800MHz_v1.25.bin | openssl rc4 -K 7c4e0304550509072d2c7b38170d1711 | rkflashtool l
就能看到正确的输出结果:
DDR Version 1.25 20210517
In
Channel 0: DDR3, 800MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Channel 1: DDR3, 800MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
256B stride
ch 0 ddrconfig = 0x101, ddrsize = 0x20
ch 1 ddrconfig = 0x101, ddrsize = 0x20
pmugrf_os_reg[2] = 0x32817281, stride = 0x9
OUT