一、背景與需求說明
在嵌入式開發中,串口作為基礎調試接口至關重要。本文檔針對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文件等。
-
嵌入式
+關注
關注
5198文章
20442瀏覽量
333976 -
串口
+關注
關注
15文章
1618瀏覽量
82809 -
RK3588
+關注
關注
8文章
556瀏覽量
7320
發布評論請先 登錄
瑞芯微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
評論