当前位置: 首页 > news >正文

Linux基础 -- 设备树引脚复用之`/omit-if-no-ref/` 用法解析

RK3588 设备树中 UART 引脚复用定义与 /omit-if-no-ref/ 用法解析

在进行 RK3588 嵌入式平台开发时,串口(UART)调试是 Bring-up 阶段的核心手段。而 RK3588 SoC 支持多个引脚复用配置(pinmux),通过设备树灵活选择,合理配置对于调试成功至关重要。

本文以 UART2 为例,讲解其设备树引脚配置方式、复用模式选择机制、以及 /omit-if-no-ref/ 的作用与使用方法。


一、设备树引脚复用定义示例

设备树(通常为 rk3588s-pinctrl.dtsi)中,对 UART2 的多个引脚复用模式进行预定义:

uart2 {/omit-if-no-ref/uart2m0_xfer: uart2m0-xfer {rockchip,pins =/* uart2_rx_m0 */<0 RK_PB6 10 &pcfg_pull_up>,/* uart2_tx_m0 */<0 RK_PB5 10 &pcfg_pull_up>;};/omit-if-no-ref/uart2m1_xfer: uart2m1-xfer {rockchip,pins =/* uart2_rx_m1 */<4 RK_PD1 10 &pcfg_pull_up>,/* uart2_tx_m1 */<4 RK_PD0 10 &pcfg_pull_up>;};/omit-if-no-ref/uart2m2_xfer: uart2m2-xfer {rockchip,pins =/* uart2_rx_m2 */<3 RK_PB2 10 &pcfg_pull_up>,/* uart2_tx_m2 */<3 RK_PB1 10 &pcfg_pull_up>;};/omit-if-no-ref/uart2_ctsn: uart2-ctsn {rockchip,pins =/* uart2_ctsn */<3 RK_PB4 10 &pcfg_pull_none>;};/omit-if-no-ref/uart2_rtsn: uart2-rtsn {rockchip,pins =/* uart2_rtsn */<3 RK_PB3 10 &pcfg_pull_none>;};
};

二、关键概念解释

1. 多个复用模式(如 uart2m0、m1、m2)

RK3588 中每个 UART 支持多个 引脚复用配置(不同 GPIO 管脚连接),例如:

名称GPIO BankGPIO Pin模式编号对应功能
uart2m0_xferGPIO0_B6PB610uart2_rx_m0
uart2m0_xferGPIO0_B5PB510uart2_tx_m0
uart2m1_xferGPIO4_D1PD110uart2_rx_m1
uart2m1_xferGPIO4_D0PD010uart2_tx_m1
uart2m2_xferGPIO3_B2PB210uart2_rx_m2
uart2m2_xferGPIO3_B1PB110uart2_tx_m2

这些 uart2mX_xfer 节点是为不同硬件连线方案预先定义的 pinmux 配置,供开发者按实际布线选择使用。


2. /omit-if-no-ref/ 的含义

设备树编译器(DTC)的指令,含义如下:

如果该节点没有被设备树的其它部分引用,在编译 .dtb 时将自动省略该节点。

它的作用是:

  • 提高设备树精简度;
  • 避免生成不必要的 pinctrl 配置;
  • 防止未使用的 pinmux 造成冲突。

三、如何在设备树中选择 UART2 引脚

要启用 UART2 并绑定某一组引脚,需要在设备树主文件中这样写:

&uart2 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart2m1_xfer>;  // 选择 uart2 使用 mode1 对应的引脚
};

注意:

  • 如果不写 pinctrl-0 或引用了不存在的节点,UART2 将无法工作;
  • 仅被引用的 uart2mX_xfer 才会在最终 .dtb 中生成;
  • 没被引用的节点因 /omit-if-no-ref/ 会自动剔除。

四、常见问题与排查建议

问题原因解决方法
UART 无法打印调试信息未配置 pinctrl-0,或引用错误的 uart2mX_xfer检查是否引用了实际布线所用引脚定义
编译后的 dtb 文件缺少 uart2mX_xfer 节点未被引用 + 使用了 /omit-if-no-ref/添加有效引用(如 pinctrl-0 = <&uart2m1_xfer>
引脚功能冲突多个设备使用相同 GPIO确保 pinctrl 定义中引脚唯一性

五、小结

  • RK3588 支持多种引脚复用方案;
  • uart2mX_xfer 定义了不同 pinmux 模式;
  • /omit-if-no-ref/ 是设备树中用来精简未使用节点的常用指令;
  • 开发者应根据实际硬件选择一组引脚,并通过 pinctrl-0 显式指定;
  • 正确的引脚选择是串口调试输出的关键保障。

相关文章:

  • 技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(下)
  • Abp Vnext Pro Vben5
  • 【QueryServer】dbeaver使用phoenix连接Hbase(轻客户端方式)
  • unityPc端设置了全屏(Exclusive Fullscreen)但是仍然有白边解决办法
  • 网站每天几点更新,更新频率是否影响网站收录
  • Nidec Digitax HD M753 伺服控制器 尼得科
  • SpringBoot自定义实体类字段的校验注解
  • 响应式布局进阶:企业商城系统复杂交互页面的多端适配方案
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 按钮大小设置的小技巧
  • 零衍课堂 | 环境初始化部署流程
  • 国内有哪些智能外呼机器人
  • 三强联合!Attention+LSTM,结合特征融合,起手二区!
  • git和gitee的常用语句命令
  • 【数据集】无缝1 km地表温度数据集(US)
  • 【Golang入门】第四章:控制结构——从条件分支到异常处理
  • 如何去除文章的AI痕迹2025新方法
  • linux——TCP问题
  • 正则表达式的修饰符
  • Error Swap_arc198c分析与解答
  • 如何做支付接口呢?
  • 医疗机构网站以患者做宣传/湖南专业的关键词优化
  • 郑州网站制作选择乐云seo/百度投诉电话24小时
  • 珠海杰作网站建设网络公司/让手机变流畅的软件下载
  • 湖北响应式网站建设/公众号引流推广平台
  • 怎么在欧美做网站推广/福州seo网站管理
  • 网站设计中超链接怎么做/网络销售就是忽悠人