OK3506 6.1.99 Buildroot 以UART為例的設(shè)備樹引腳復(fù)用方法

原創(chuàng) 2025-10-30 18:32:00 RK3506

1. 概述

本文檔聚焦飛凌嵌入式RK3506開發(fā)板UART3UART5_M1引腳復(fù)用配置。由于系統(tǒng)已默認(rèn)集成UART驅(qū)動,因此僅需修改設(shè)備樹即可實現(xiàn)引腳功能切換,其他外設(shè)(如SPI、I2C)的復(fù)用邏輯可參考此流程。

硬件平臺:OK3506-C開發(fā)板 /OK3506-S開發(fā)板

操作系統(tǒng):Linux6.1.99

2. 目標(biāo)

完成RK3506開發(fā)板上以下UART接口的引腳復(fù)用配置,確保驅(qū)動正常加載并生成對應(yīng)的設(shè)備節(jié)點:

  • 將指定GPIO引腳復(fù)用為UART3的TX(發(fā)送)和RX(接收)引腳
  • 將指定GPIO引腳復(fù)用為UART5_M1(模式1)的TX和RX引腳
  • 驗證UART驅(qū)動注冊狀態(tài),確認(rèn)設(shè)備節(jié)點正常生成

3. 修改方法

UART引腳復(fù)用需遵循「引腳選擇→原生功能確認(rèn)→找到Pinctrl配置→修改設(shè)備樹」的流程,具體步驟如下:

3.1 UART引腳復(fù)用完整步驟

  1. 選擇引腳:根據(jù)《OK3506-C引腳復(fù)用對照表》,確認(rèn)目標(biāo)引腳是否支持UART功能復(fù)用。
  2. 確認(rèn)原生功能:記錄目標(biāo)引腳的默認(rèn)(原生)功能,避免復(fù)用沖突。
  3. 找到Pinctrl配置:在設(shè)備樹源碼中定位目標(biāo)引腳的Pinctrl(引腳控制)描述節(jié)點。
  4. 修改設(shè)備樹:配置UART節(jié)點的Pinctrl引用,注釋/禁用引腳的原生功能,啟用UART功能。

3.1.1 引腳選擇(UART3 & UART5_M1)

通過《OK3506-C引腳復(fù)用對照表》篩選支持UART功能的引腳,需注意:部分引腳(Atl7列底色為藍(lán)色)支持98種功能切換,可通過下拉菜單選擇UART模式。

RK3506 UART3引腳復(fù)用對照表

圖1:UART3引腳選擇(連接器引腳91=GPIO0_C3,92=GPIO0_C4)

UART3選用以下引腳:

連接器引腳號 GPIO編號 復(fù)用功能 備注
91 GPIO0_C3 UART3_TX 發(fā)送引腳
92 GPIO0_C4 UART3_RX 接收引腳
UART5與其他UART不同,支持兩種模式(M0/M1),對應(yīng)兩組不同引腳。本文選擇UART5_M1(模式1),需在設(shè)備樹中明確引用M1的Pinctrl節(jié)點。
OK3506 UART5_M1引腳復(fù)用對照表

圖2:UART5_M1引腳選擇(GPIO1_PD2=TX,GPIO1_PD3=RX)

UART5_M1選用以下引腳:

GPIO編號 復(fù)用功能 對應(yīng)Pinctrl節(jié)點
GPIO1_PD2 UART5_TX_M1 uart5m1_xfer_pins
GPIO1_PD3 UART5_RX_M1 uart5m1_xfer_pins

3.1.2 確認(rèn)引腳原生功能(避免沖突)

目標(biāo)引腳的原生功能需在設(shè)備樹中禁用,否則會導(dǎo)致功能沖突(如UART與CAN同時占用同一引腳)。
復(fù)用功能 引腳 原生功能 處理方式
UART3 GPIO0_C3、GPIO0_C4 CAN0(TX/RX) 禁用CAN0節(jié)點(status="disabled")
UART5_M1 GPIO1_PD2、GPIO1_PD3 LCDC(顯示控制器) 確保LCDC未占用該組引腳

3.1.3 定位Pinctrl配置文件

飛凌嵌入式RK3506的Pinctrl配置分散在以下兩個設(shè)備樹文件中,需根據(jù)引腳類型選擇對應(yīng)文件:

# 1. 通用RMIO引腳配置(含UART3)
kernel/arch/arm/boot/dts/rk3506-pinctrl-rmio.dtsi

# 2. 核心Pinctrl配置(含UART5)
kernel/arch/arm/boot/dts/rk3506-pinctrl.dtsi

在rk3506-pinctrl-rmio.dtsi中找到UART3的Pinctrl節(jié)點:

/* UART3 TX引腳配置:GPIO0_C3 */
rm_io19_uart3_tx: rm-io19-uart3-tx {
rockchip,pins = <0 RK_PC3 20 &pcfg_pull_none>;
};
/* UART3 RX引腳配置:GPIO0_C4 */
rm_io20_uart3_rx: rm-io20-uart3-rx {
rockchip,pins = <0 RK_PC4 20 &pcfg_pull_none>;
};

在rk3506-pinctrl.dtsi中找到UART5_M1的Pinctrl節(jié)點:


};

3.1.4 設(shè)備樹修改(啟用UART,禁用原生功能)

修改通用設(shè)備樹文件OK3506-S-common.dtsi,主要涉及3處修改:

  1. 啟用UART3節(jié)點,引用其Pinctrl配置
  2. 啟用UART5節(jié)點,引用UART5_M1的Pinctrl配置
  3. 禁用CAN0節(jié)點(避免與UART3引腳沖突)
diff --git a/arch/arm/boot/dts/OK3506-S-common.dtsi b/arch/arm/boot/dts/OK3506-S-common.dtsi
index 4c6f947ee..644f986f2 100644
--- a/arch/arm/boot/dts/OK3506-S-common.dtsi
+++ b/arch/arm/boot/dts/OK3506-S-common.dtsi
@@ -341,11 +341,22 @@ &uart2 {
pinctrl-0 = <&rm_io0_uart2_rx &rm_io2_uart2_tx>;
status = "okay";
};
+
+/* 啟用UART3:引用TX/RX的Pinctrl節(jié)點 */
+&uart3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&rm_io20_uart3_rx &rm_io19_uart3_tx>;
+ status = "okay";
+};
+
+/* 啟用UART5:引用UART5_M1的收發(fā)引腳組 */
+&uart5 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart5m1_xfer_pins>;
+ status = "okay";
+};

/* 禁用CAN0:避免與UART3引腳沖突 */
&can0 {
pinctrl-names = "default";
pinctrl-0 = <&rm_io19_can0_tx &rm_io20_can0_rx>;
- status = "okay";
+ status = "disabled";
};
&can1 {
修改設(shè)備樹后,需重新編譯內(nèi)核生成boot.img,或全編譯生成update.img,并燒錄到開發(fā)板中。

4. 驗證復(fù)用效果

燒錄新的鏡像文件后,通過以下步驟驗證UART復(fù)用是否成功:

  1. 開發(fā)板上電啟動,進(jìn)入終端(如SSH、串口終端)
  2. 執(zhí)行l(wèi)s /dev命令,查看是否生成UART對應(yīng)的設(shè)備節(jié)點
  3. 確認(rèn)節(jié)點存在后,可通過screen或minicom工具測試UART通信

成功復(fù)用后,ls /dev輸出應(yīng)包含以下節(jié)點:

root@ok3506-buildroot:/# ls /dev
...
ttyS2 # 原有UART2節(jié)點
ttyS3 # UART3對應(yīng)的節(jié)點(新增)
ttyS5 # UART5對應(yīng)的節(jié)點(新增)
...
root@ok3506-buildroot:/#
UART設(shè)備節(jié)點命名規(guī)則:ttySx,其中x為UART編號(UART3→ttyS3,UART5→ttyS5)。

相關(guān)產(chǎn)品 >

  • FET3506J-S核心板

    RK3506J是一款高性能的三核Cortex-A7應(yīng)用處理器,專為智能工業(yè)應(yīng)用而設(shè)計。飛凌嵌入式基于RK3506J設(shè)計的核心板,價格僅88元,滿載功耗僅0.7W,是一款值得推薦使用的工業(yè)級國產(chǎn)核心板,滿足電力、交通、工控等行業(yè)對國產(chǎn)化的要求。同時進(jìn)行了充分的可靠性測試,確保在工業(yè)環(huán)境的可靠運行。


    了解詳情
    FET3506J-S核心板
  • FET3506J-C核心板

    RK3506J核心板|采用可插拔式板對板連接設(shè)計,尺寸更小,既便于產(chǎn)品生產(chǎn)組裝,又方便后期維護(hù)升級。本核心板基于 Rockchip RK3506 處理器開發(fā),通過飛凌嵌入式實驗室嚴(yán)苛的工業(yè)環(huán)境測試,確保品質(zhì)穩(wěn)定可靠,且提供 10~15 年生命周期支持,保障供應(yīng)長期穩(wěn)定。 了解詳情
    FET3506J-C核心板

推薦閱讀 換一批 換一批