之前做了一个RK3588S平台的项目,在bringup阶段碰到烧录完后无法启动的问题。
上电启动串口关键log如下:
DDR Version V1.02 20211202
LPDDR4X, 2112MHz
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 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
channel[3] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
out
......
U-Boot 2017.09
Model: Rockchip RK3588 Evaluation Board
PreSerial: 2, raw, 0xfeb50000
DRAM: "Error" handler, esr 0xbe000011
* Reason: Exception from SError interrupt
* ELR(PC) = 00000000002a3988
* LR = 00000000002179c8
* SP = 000000000037fc10
* ESR_EL2 = 00000000be000011
* Reloc Off = 0000000000000000
x0 : 00000000eb9ffeb0 x1 : 0000000000000000
x2 : 0000000000000150 x3 : 0000000000000050
x4 : 0000000000000000 x5 : 000000000000002a
x6 : 0000000000000150 x7 : 0000000009400000
x8 : 0000000000000003 x9 : 00000000fe680000
x10: 0000000000000001 x11: ffffffffd0000000
x12: 0000000000000000 x13: 0000000000200000
x14: 0000000000307c80 x15: 00000000ffffffff
x16: 0000000000000000 x17: 0000000000000000
x18: 000000000037fe40 x19: 00000000002af5d8
x20: 00000000002af4e8 x21: 0000000000000000
x22: 0000000000000000 x23: 0000000000000000
x24: 0000000000000000 x25: 0000000000000000
x26: 0000000000000000 x27: 0000000000000000
x28: 0000000000000000 x29: 000000000037fdf0
Call trace:
PC: [< 002a3988 >]
LR: [< 002179c8 >]
Stack:
[< 002a3988 >]
Copy info from "Call trace..." to a file(eg. dump.txt), and run
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt
Resetting CPU ...
### ERROR ### Please RESET the board ###
对比正常启动的log:
DDR Version V1.02 20211202
LPDDR4X, 2112MHz
channel[0] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
channel[1] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
channel[2] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
channel[3] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
out
......
U-Boot 2017.09
Model: Rockchip RK3588 Evaluation Board
PreSerial: 2, raw, 0xfeb50000
DRAM: 7.7 GiB
Sysmem: init
Relocation Offset: edb6f000
Relocation fdt: eb9fa170 - eb9fece8
CR: M/C/I
Using default environment
......
Starting kernel ...
可以发现问题出在DDR:
LPDDR4X, 2112MHz
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 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
channel[3] BW=16 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=2048MB
......
DRAM: "Error" handler, esr 0xbe000011
......
更换DDR后问题解决,问题原因是焊接问题。
RK3588S焊盘引脚间距较小,对焊接有一定要求,如果出现DDR稳定性问题,可以先检查CPU和DDR的焊接。