一、背景与需求说明
在嵌入式开发中,串口作为基础调试接口至关重要。本文档针对RK3588平台,详细介绍如何将系统默认串口修改为串口8(UART8),包括U-Boot阶段和内核阶段的配置调整。该修改适用于需要使用额外串口进行调试或通信的场景,例如当默认串口被其他功能占用时,需重新映射控制台到串口8。
二、修改涉及的关键文件与原理
2.1内核设备树配置(rk3588-linux.dtsi)
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsi+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsialiases {};chosen: chosen {- bootargs = "earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00800000@0x00800000(uboot)";+ bootargs = "earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=ttyS8,1500000n8 irqchip.gicv3_pseudo_nmi=0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00800000@0x00800000(uboot)";};
关键修改说明:
•在bootargs中新增console=ttyS8,1500000n8参数
◦ttyS8表示使用串口8作为控制台
◦1500000n8定义波特率为1500000,数据位8位,无校验位,1位停止位
•earlycon=uart8250,mmio32,0xfeb50000用于早期控制台初始化,指定串口控制器基地址
2.2 U-Boot设备树配置(rk3588-u-boot.dtsi)
--- a/u-boot/arch/arm/dts/rk3588-u-boot.dtsi+++ b/u-boot/arch/arm/dts/rk3588-u-boot.dtsistatus = "okay";};+&uart8 {+ clock-frequency = <24000000>;+ u-boot,dm-spl;+ pinctrl-names = "default";+ status = "okay";+ pinctrl-0 = <&uart8m0_xfer>;+};+&hw_decompress {u-boot,dm-spl;status = "okay";
关键修改说明:
•启用uart8设备节点:
◦clock-frequency = <24000000>:设置串口时钟频率为24MHz,用于波特率计算
◦u-boot,dm-spl:标记该串口用于U-Boot SPL(Secondary Program Loader)阶段
◦pinctrl-0 = <&uart8m0_xfer>:指定串口8的引脚复用配置,需确保与硬件设计一致
•该配置使U-Boot在启动阶段能够初始化并使用串口8
2.3 U-Boot CLI代码修改(cli.c)
--- a/u-boot/common/cli.c+++ b/u-boot/common/cli.c@@-15,6+15,10@@++++DECLARE_GLOBAL_DATA_PTR;@@-218,6+222,16@@ err:voidcli_loop(void){+ structudevice*uart_dev;+ writel(0x00ff00aa,0xfd5f8088);+ if(uclass_get_device_by_seq(UCLASS_SERIAL,8, &uart_dev))+ printf("uart: failed to get devicen");+ else+ printf("uart: got devicen");+ serial_dev_setbrg(uart_dev,1500000);++ gd->flags |= GD_FLG_SERIAL_READY;+ gd->cur_serial_dev = uart_dev;parse_file_outer();/* This point is never reached */
关键修改说明:
•新增头文件包含:serial.h、dm.h等,用于串口设备管理
•通过uclass_get_device_by_seq(UCLASS_SERIAL, 8, &uart_dev)获取串口8设备句柄
•serial_dev_setbrg(uart_dev, 1500000)设置波特率为1500000
•更新全局数据结构gd,标记串口已准备就绪并设置为当前串口设备
三、完整修改步骤与实现流程
3.1内核配置修改流程
1.定位设备树文件
进入内核源码目录:cd kernel/arch/arm64/boot/dts/rockchip/
2.修改bootargs参数
使用文本编辑器打开rk3588-linux.dtsi,在chosen节点中添加console=ttyS8,1500000n8,确保内核启动时使用串口8作为控制台。
3.2 U-Boot配置修改流程
1.定位U-Boot设备树文件
进入U-Boot源码目录:cd u-boot/arch/arm/dts/
2.启用串口8设备节点
打开rk3588-u-boot.dtsi,添加&uart8节点配置,包括时钟频率、引脚控制和状态设置,确保U-Boot阶段能初始化串口8。
3.修改CLI代码初始化串口
进入U-Boot源码目录:cd u-boot/common/
打开cli.c,添加串口设备获取、波特率设置及全局数据更新逻辑,确保U-Boot命令行使用串口8。
四、硬件连接与引脚配置说明
4.1串口8硬件连接要求
•控制器基地址:根据设备树配置,串口8的基地址为0xfeb50000(由earlycon=uart8250,mmio32,0xfeb50000指定)
•引脚复用:需确保uart8m0_xfer引脚配置与硬件设计一致,通常包括:
◦TXD8(发送引脚)
◦RXD8(接收引脚)
◦GND(接地)
五、验证与调试方法
5.1 U-Boot阶段验证
1.启动日志检查
连接串口8到调试终端(波特率1500000,8N1),重启设备后观察U-Boot输出:
◦若配置正确,U-Boot启动时会输出uart: got device日志
◦命令行提示符(如=>)应出现在串口8终端
1.串口设备查询
在U-Boot命令行中执行:
printenvconsole# 应输出类似 "console=ttyS8,1500000"dev list | grep serial# 应显示串口 8 设备已注册
5.2内核阶段验证
1.内核日志检查
内核启动后,串口8应输出完整的启动日志(dmesg内容),并显示ttyS8设备初始化信息:
[ 0.000000]console[ttyS8]enabled[ 1.234567]serial8250.8: ttyS8 at MMIO0xfeb50000 (irq =123) is a16550A
1.串口设备测试
在系统中执行:
|
#检查串口设备是否存在
ls /dev/ttyS8
#测试串口通信(例如向串口8发送数据)
echo "Test Data" > /dev/ttyS8
|
5.3常见故障排除
•无输出问题:
a.检查硬件连接是否正确,引脚是否短路或虚接
b.确认串口8的时钟频率(24MHz)与波特率(1500000)计算是否正确
c.检查设备树中的status是否为"okay",确保设备未被禁用
•波特率异常:
◦确认serial_dev_setbrg和console参数中的波特率一致
◦检查clock-frequency设置是否与硬件时钟匹配
通过以上步骤,可在RK3588平台成功将系统串口修改为串口8,实现U-Boot和内核阶段的串口重定向,满足特定硬件调试与通信需求。重要说明,uboot阶段的并没有完全修改为串口8,如需完全显示log,还需要修改其他,比如ddr.bin文件等。
-
嵌入式
+关注
关注
5209文章
20625浏览量
336758 -
串口
+关注
关注
15文章
1626浏览量
83307 -
RK3588
+关注
关注
8文章
585浏览量
7540
发布评论请先 登录
瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读
RK3588 EVB 用户使用指南
TB-RK3588开发板Windows上串口调试与Linux主机调试说明
有什么方法可以去修改RK3588默认的串口波特率吗
通过以下代码修改RK3588的默认串口波特率
基于RK3588平台的会议平板即将发布
rk3588和rk3588s的区别
rk3588是什么类型的芯片?
rk3588参数详解 rk3588芯片参数
rk3588是armv8吗?rk3588硬件资料
Banana Pi BPI-W3 RK3588平台驱动调试篇 [ PCIE篇二 ] - PCIE的开发指南
PET_RK3588_P01开发板介绍
RK3588平台串口配置修改指南:切换至串口8
评论