OK3506 6.1.99 Buildroot 以UART為例的設備樹引腳復用方法
1. 概述
本文檔聚焦飛凌嵌入式RK3506開發板上UART3和UART5_M1的引腳復用配置。由于系統已默認集成UART驅動,因此僅需修改設備樹即可實現引腳功能切換,其他外設(如SPI、I2C)的復用邏輯可參考此流程。
硬件平臺:OK3506-C開發板 /OK3506-S開發板
操作系統:Linux6.1.99
2. 目標
完成RK3506開發板上以下UART接口的引腳復用配置,確保驅動正常加載并生成對應的設備節點:
3. 修改方法
UART引腳復用需遵循「引腳選擇→原生功能確認→找到Pinctrl配置→修改設備樹」的流程,具體步驟如下:
3.1 UART引腳復用完整步驟
- 選擇引腳:根據《OK3506-C引腳復用對照表》,確認目標引腳是否支持UART功能復用。
- 確認原生功能:記錄目標引腳的默認(原生)功能,避免復用沖突。
- 找到Pinctrl配置:在設備樹源碼中定位目標引腳的Pinctrl(引腳控制)描述節點。
- 修改設備樹:配置UART節點的Pinctrl引用,注釋/禁用引腳的原生功能,啟用UART功能。
3.1.1 引腳選擇(UART3 & UART5_M1)
通過《OK3506-C引腳復用對照表》篩選支持UART功能的引腳,需注意:部分引腳(Atl7列底色為藍色)支持98種功能切換,可通過下拉菜單選擇UART模式。
圖1:UART3引腳選擇(連接器引腳91=GPIO0_C3,92=GPIO0_C4)
UART3選用以下引腳:
| 連接器引腳號 | GPIO編號 | 復用功能 | 備注 |
|---|---|---|---|
| 91 | GPIO0_C3 | UART3_TX | 發送引腳 |
| 92 | GPIO0_C4 | UART3_RX | 接收引腳 |
圖2:UART5_M1引腳選擇(GPIO1_PD2=TX,GPIO1_PD3=RX)
UART5_M1選用以下引腳:
| GPIO編號 | 復用功能 | 對應Pinctrl節點 |
|---|---|---|
| GPIO1_PD2 | UART5_TX_M1 | uart5m1_xfer_pins |
| GPIO1_PD3 | UART5_RX_M1 | uart5m1_xfer_pins |
3.1.2 確認引腳原生功能(避免沖突)
| 復用功能 | 引腳 | 原生功能 | 處理方式 |
|---|---|---|---|
| UART3 | GPIO0_C3、GPIO0_C4 | CAN0(TX/RX) | 禁用CAN0節點(status="disabled") |
| UART5_M1 | GPIO1_PD2、GPIO1_PD3 | LCDC(顯示控制器) | 確保LCDC未占用該組引腳 |
3.1.3 定位Pinctrl配置文件
飛凌嵌入式RK3506的Pinctrl配置分散在以下兩個設備樹文件中,需根據引腳類型選擇對應文件:
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節點:
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節點:
};
3.1.4 設備樹修改(啟用UART,禁用原生功能)
修改通用設備樹文件OK3506-S-common.dtsi,主要涉及3處修改:
- 啟用UART3節點,引用其Pinctrl配置
- 啟用UART5節點,引用UART5_M1的Pinctrl配置
- 禁用CAN0節點(避免與UART3引腳沖突)
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節點 */
+&uart3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&rm_io20_uart3_rx &rm_io19_uart3_tx>;
+ status = "okay";
+};
+
+/* 啟用UART5:引用UART5_M1的收發引腳組 */
+&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 {
4. 驗證復用效果
燒錄新的鏡像文件后,通過以下步驟驗證UART復用是否成功:
- 開發板上電啟動,進入終端(如SSH、串口終端)
- 執行ls /dev命令,查看是否生成UART對應的設備節點
- 確認節點存在后,可通過screen或minicom工具測試UART通信
成功復用后,ls /dev輸出應包含以下節點:
...
ttyS2 # 原有UART2節點
ttyS3 # UART3對應的節點(新增)
ttyS5 # UART5對應的節點(新增)
...
root@ok3506-buildroot:/#
相關產品 >
-
FET3506J-S核心板
RK3506J是一款高性能的三核Cortex-A7應用處理器,專為智能工業應用而設計。飛凌嵌入式基于RK3506J設計的核心板,價格僅88元,滿載功耗僅0.7W,是一款值得推薦使用的工業級國產核心板,滿足電力、交通、工控等行業對國產化的要求。同時進行了充分的可靠性測試,確保在工業環境的可靠運行。
了解詳情

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

