飞凌精灵(ElfBoard)技术贴|如何在RK3506开发板上实现UART功能复用

IOMUX(引脚功能复用)是芯片厂商为高效利用有限的硬件引脚资源而设计的核心技术。通过软件配置,单个物理引脚可灵活切换为GPIO、UART、I2C等多种功能。不同SoC芯片的IOMUX配置方式存在差异,本文将以ELF-RK3506开发板上UART2的引脚复用为例,详细介绍从硬件查询到软件配置的完整实现流程。

1. 引脚确认

在开始配置之前,首先需要了解ELF-RK3506开发板的接口布局特点。ELF-RK3506开发板配备两组40Pin排针,其中一组兼容树莓派40Pin接口,集成了I2C、SPI、UART等常用通信接口及多路GPIO;另一组则引出额外的IO排针,可复用为LCD、DSMC等功能接口。

引脚选择原则:进行引脚复用时,应优先选择40Pin排针上的引脚,这类引脚位于开发板标准排针接口,无需额外焊接,接线更加便捷。

1.1. 查看引脚复用表

引脚复用表路径:++++ELF-RK3506开发板资料包\04-硬件资料\1-ELF-RK3506 引脚复用对照表-20251121++++

在引脚复用表中,通过查看 Alt0~Alt8列可了解各引脚的可选功能;RK3506B采用矩阵IO设计,将98 个功能信号灵活映射至32个RM_IO引脚。针对UART2功能,从"RM_IO功能"列表中找到UART2_TX、UART2_RX信号后,在支持RM_IO的引脚中,遵循"优先选用40Pin排针引脚"的布局原则,最终选定将UART2_TX、UART2_RX映射至RM_IO26、RM_IO28,对应连接器引脚号46、55。

1.2. 匹配开发板引脚

硬件原理图路径:++++ELF-RK3506开发板资料包\04-硬件资料\00- PDF原理图++++

从硬件原理图可知,连接器46、55引脚号对应开发板功能GPIO1_B3、GPIO1_C3。

1.3. 定位开发板物理位置

核心板的功能引脚通过连接器传输到底板,下面需要确认目标引脚在底板上的具体物理接口位置。

在原理图中搜索GPIO1_B3、GPIO1_C3网络标号,对应开发板P14排针的引脚21、11。

2. 源码适配

在完成硬件引脚确认后,接下来需要进行软件层面的配置工作,主要包括设备树中的IOMUX配置和设备节点配置。

2.1. IOMUX配置

确定引脚后,需要在设备树中配置IOMUX参数以确保引脚正确工作在UART2模式。

打开文件 kernel/arch/arm/boot/dts/rk3506-pinctrl-rmio.dtsi,找到I2C1相关定义,可以看到rm_io26_uart2_tx节点描述了 GPIO1_B3 复用UART2_TX、rm_io28_uart2_rx节点描述了 GPIO1_C3 复用成UART2_RX。

2.2. 设备节点配置

在设备树文件 kernel/arch/arm/boot/dts/rk3502.dtsi 中已经定义好 12 路 PWM 信号的相关节点和使用的引脚。

打开kernel/arch/arm/boot/dts/elf-3506-common.dtsi 添加相关节点,引用rm_io13_pwm1_ch3节点并将状态设为"okay"。

复制代码
&uart2 {
        status = "disabled";
        pinctrl-names = "default";
        pinctrl-0 = <&rm_io26_uart2_tx &rm_io28_uart2_rx>;
};

2.3. 编译

配置完成后,需要重新编译内核以生成包含新配置的镜像文件。

执行编译命令,生成内核镜像:

复制代码
elf@ubuntu:~/work/ELF-RK3506-linux-source$ ./build.sh kernel

编译完成后,将在 kernel 目录下生成 boot.img 内核镜像文件。

3. 烧录与验证

编译生成新的内核镜像后,下一步是将其烧录到开发板并进行验证。

将 kernel 目录下生成的 boot.img 内核镜像文件烧录到开发板。

开发板启动后,/dev 目录会自动生成 UART2 对应的设备节点 ttyS2,通过以下命令验证节点是否存在:

复制代码
root@elf3506-buildroot:~# ls /dev/tty*
相关推荐
慕涯AI2 小时前
Agent 30 课程开发指南 - 第28课
人工智能·python
HackTorjan2 小时前
AI驱动的制品库高效管理:智能分类、自动化追踪与全生命周期优化
linux·人工智能·分类·自动化
.千余2 小时前
【Linux】进程概念
linux·服务器·开发语言·学习
X.AI6662 小时前
小米 MiMo‑V2.5‑Pro 上手体验:一款能硬刚 GPT‑5.4 的国产大模型有多强?
人工智能·gpt·开源
peterfei2 小时前
一个 Tauri + Rust AI 编辑器是怎么同时适配 5 家 AI 大厂的?IfAI v0.4.3 架构拆解
人工智能·算法·架构
思绪无限2 小时前
YOLOv5至YOLOv12升级:农作物害虫检测系统的设计与实现(完整代码+界面+数据集项目)
人工智能·python·深度学习·目标检测·计算机视觉·yolov12·农作物害虫检测
蜡台2 小时前
centos 8 安装 nginx-1.29.8 及相关配置教程
linux·nginx·centos
爱学习的小囧2 小时前
ESXi性能历史怎么监控?2种方法,图形化+命令行全覆盖
java·linux·运维·服务器·网络·esxi·esxi8.0
Java猿_2 小时前
【无标题】
人工智能