问题描述:
一开始上电的时候uart2串口出现了乱码还有部分uboot的log打印信息(通过飞线接到串口抓到),如下图所示:
然后剩下的部分uboot的log打印出现到了debug串口uart4中,
分析修改要达到的目的:让uart4 debug打印正常,uart2上的打印切换到uart4,关闭掉uart2,避免uart2在一上电和uboot状态的时候出现打印乱码和部分uboot的log信息,。
修改如下:
说明:
SDK版本:RK3399 LINUX SDK V0.1_20170117
对比看了下几个版本的SDK,要在安卓10以后的SDK才支持自己配置ddr uart信息,之前的SDK应该是不支持的,所以我这边找到RK3399 android10的SDK来生成自己定制的ddr bin和编译较新版本的loader文件。
涉及的文件:
./rkbin/RKBOOT/RK3399MINIALL.ini
./rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin
./rkbin/tools/ddrbin_tool_user_guide.txt
./rkbin/tools/ddrbin_param.txt
1、通过查看rkbin/RKBOOT/RK3399MINIALL.ini,确认当前uboot使用的是哪个ddr bin,一般rk的SDK代码会默认有三个不通频率值的ddr bin文件备用,我这里修改的ddr bin是rk3399_ddr_800MHz_v1.24.bin文件;
2、修改串口的参数ddrbin_param.txt,我这里使用的是uart4,因此参数设置如下:
uart id=4
uart iomux=0
uart baudrate=115200
具体的参数设置可以查看ddrbin_tool_user_guide.txt文件和cpu的datasheet TRM来修改。
3、然后通过sudo ./ddrbin_tool ddrbin_param.txt …/bin/rk33/rk3399_ddr_800MHz_v1.24.bin重新生成rk3399_ddr_800MHz_v1.24.bin,注意生成的bin要带上目录,否则可能会失败:rk3399_ddr_800MHz_v1.24.bin
4、修改RK3399MINIALL.ini配置文件
--- a/rkbin/RKBOOT/RK3399MINIALL.ini
+++ b/rkbin/RKBOOT/RK3399MINIALL.ini
@@ -2,19 +2,19 @@
NAME=RK330C
[VERSION]
MAJOR=1
-MINOR=15
+MINOR=26
[CODE471_OPTION]
NUM=1
-Path1=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.15.bin
+Path1=bin/rk33/rk3399_ddr_800MHz_v1.24.bin
Sleep=1
[CODE472_OPTION]
NUM=1
-Path1=tools/rk_tools/bin/rk33/rk3399_usbplug_v1.15.bin
+Path1=bin/rk33/rk3399_usbplug_v1.26.bin
[LOADER_OPTION]
NUM=2
LOADER1=FlashData
LOADER2=FlashBoot
-FlashData=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.15.bin
-FlashBoot=tools/rk_tools/bin/rk33/rk3399_miniloader_v1.15.bin
+FlashData=bin/rk33/rk3399_ddr_800MHz_v1.24.bin
+FlashBoot=bin/rk33/rk3399_miniloader_v1.26.bin
[OUTPUT]
-PATH=rk3399_loader_v1.15.115.bin
+PATH=rk3399_loader_v1.24.126.bin
5、编译loader文件拷贝到rkbin/bin/rk33/目录
u-boot 下,执行:
./make.sh loader
sdk目录下:
./mkimage.sh
生成到rockdev下
6、修改uboot的编译脚本build/mk-uboot.sh(不同SDK可能有些许区别,新版的SDK好像直接在uboot目录下能编译loader文件即可),我这里是旧版本的LINUX SDK的代码,修改如下:
diff --git a/build/mk-uboot.sh b/build/mk-uboot.sh
index 0e422a6..6925bd4 100755
--- a/build/mk-uboot.sh
+++ b/build/mk-uboot.sh
@@ -80,16 +80,16 @@ EOF
elif [ "${CHIP}" == "rk3399" ]; then
$TOOLPATH/loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img 0x200000 --size 1024 1
- tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.15.bin idbloader.img
- cat ../rkbin/bin/rk33/rk3399_miniloader_v1.15.bin >> idbloader.img
+ tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img
+ cat ../rkbin/bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.img
cp idbloader.img ${OUT}/u-boot/
- tools/mkimage -n rk3399 -T rkspi -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.15.bin idbloader-spi.img
+ tools/mkimage -n rk3399 -T rkspi -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader-spi.img
cat ../rkbin/bin/rk33/rk3399_miniloader_spinor_v1.14.bin >> idbloader-spi.img
cp idbloader-spi.img ${OUT}/u-boot/spi
- cp ../rkbin/bin/rk33/rk3399_loader_v1.12.112.bin ${OUT}/u-boot/
- cp ../rkbin/bin/rk33/rk3399_loader_spinor_v1.15.114.bin ${OUT}/u-boot/spi
+ cp ../rkbin/bin/rk33/rk3399_loader_v1.24.126.bin ${OUT}/u-boot/
+ #cp ../rkbin/bin/rk33/rk3399_loader_spinor_v1.15.114.bin ${OUT}/u-boot/spi
cat >trust.ini <<EOF
6、重新编译uboot即可,烧录的时候使用最新编译出来的loader文件。