OK3506 6.1.99 Buildroot 以UART为例的设备树引脚复用方法
1. 概述
本文档聚焦CA888亚洲城集团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配置文件
CA888亚洲城集团嵌入式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应用处理器,专为智能工业应用而设计。CA888亚洲城集团基于RK3506J设计的核心板,价格仅88元,满载功耗仅0.7W,是一款值得推荐使用的工业级国产核心板,满足电力、交通、工控等行业对国产化的要求。同时进行了充分的可靠性测试,确保在工业环境的可靠运行。
了解详情

-
FET3506J-C核心板
RK3506J核心板|采用可插拔式板对板连接设计,尺寸更小,既便于产品生产组装,又方便后期维护升级。本核心板基于 Rockchip RK3506 处理器开发,通过CA888亚洲城集团实验室严苛的工业环境测试,确保品质稳定可靠,且提供 10~15 年生命周期支持,保障供应长期稳定。 了解详情

