笔者使用的是正点原子的RK3588开发板(ATK-DLRK3588),ATK-DLRK3588开发板默认使用UART2作为调试串口,有些客户自己设计底板,可能会使用其它串口作为调试串口,本文讲一下如何更换默认调试串口、使用其它串口(本文将以UART3为例进行介绍)作为调试串口。
硬件平台:正点原子RK3588开发板
系统:Android12 & Android13以及Linux buildroot
1.修改ddrbin文件
同样第一步也是修改ddrbin文件,进入rkbin/tools/目录,打开ddrbin_param.txt文件:
cd rkbin/tools/
vi ddrbin_param.txt
找到“uart id”和“uart iomux”这两个变量,“uart id”用于指定我们使用的是哪个串口,譬如“uart id=3”表示使用UART3;“uart iomux”用于设置引脚复用,譬如“uart iomux=2”表示复用M2(即UART3_TX_M2/UART3_RX_M2)。
uart id=3
uart iomux=2
修改完成后保存退出!
接着执行如下命令:
./ddrbin_tool rk3588 ddrbin_param.txt \
../bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.13.bin
2.修改u-boot
U-Boot其实是可以不用改动的,它会沿用ddrbin文件中的配置。
3.修改内核
如果是Android SDK,打开kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi文件,如果是Linux SDK,则打开kernel/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsi文件:
# Android SDK
vi kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi
# Linux SDK
vi kernel/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsi
找到fiq-debugger节点,修改“rockchip,serial-id”和“pinctrl-0”这两个属性的值,如下所示:
rockchip,serial-id = <3>;
pinctrl-0 = <&uart3m2_xfer>; //配置引脚复用
再找到chosen节点,修改bootargs参数,更改串口的基地址,如下所示:
这个地址是串口的基地址,不同串口其基地址不同,RK3588一共有10个UART外设(UART0~UART9),对应的基地址如下所示:
UART0: 0xfd890000
UART1: 0xfeb40000
UART2: 0xfeb50000
UART3: 0xfeb60000
UART4: 0xfeb70000
UART5: 0xfeb80000
UART6: 0xfeb90000
UART7: 0xfeba0000
UART8: 0xfebb0000
UART9: 0xfebc0000
修改完成后保存退出!
如果是Android SDK,打开kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-atk-evb7-lp4-v10.dts文件,如果是Linux SDK,则打开kernel/arch/arm64/boot/dts/rockchip/rk3588-atk-devkit.dts文件:
# Android SDK
vi kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-atk-evb7-lp4-v10.dts
# Linux SDK
vi kernel/arch/arm64/boot/dts/rockchip/rk3588-atk-devkit.dts
由于fiq_debugger和普通串口互斥,在使能fiq_debugger节点后必须禁用对应的普通串口uart节点。在文件末尾添加如下内容:
&uart3 {
status = "disabled";
};
这里禁用了普通串口UART3(本文是以UART3为例,你实际用的是哪个串口,你就禁用哪个)。修改完成后保存退出!
4.编译测试
以上修改完成后,需要重新编译u-boot和Linux内核。
如果是Android SDK,执行如下命令:
source build/envsetup.sh
lunch ATK_DLRK3588-userdebug
make installclean
./build.sh -UKA -J12
将编译生成的MiniLoaderAll.bin、uboot.img以及boot.img烧录到开发板上进行测试。
如果是Linux SDK,执行如下命令(此前已完整编译过整个SDK):
./build.sh alientek_rk3588_defconfig
./build.sh kernel
./build.sh clean:loader
./build.sh uboot
将编译生成的MiniLoaderAll.bin、uboot.img以及boot.img烧录到开发板上进行测试。