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

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

