Rockchip 平台 iomux
Rockchip 平台 iomux在 Rockchip(瑞芯微)平台上,IOMUX(Input/Output Multiplexer,即引脚复用)是实现 SoC 引脚资源高效利用的核心机制。它允许同一个物理引脚(PAD)在不同的功能模块之间进行切换,例如将一个引脚配置为普通的 GPIO、UART 串口、I2C 接口或 PWM 输出。1. IOMUX 的核心概念在嵌入式设计中,芯片的引脚数量有限。为了支持更多外设,Rockchip 通过内部的复用逻辑,让一个引脚可以对应多个Function(功能)。Func 0:通常默认为GPIO模式。Func 1 - Func N:对应不同的硬件控制器信号(如 SPI_CLK, UART_TX 等)。M0/M1/M2(Multi-route):在较新的芯片(如 RK3588, RK3576)中,同一个外设功能可能会有多个引脚组合可选,这就是所谓的“复用路线”。2. 硬件控制原理IOMUX 的配置主要通过GRF (General Register Files)寄存器或专用PMU寄存器来实现。控制维度:Mux Select:选择引脚的功能模式。Drive Strength:配置引脚的驱动电流能力(电平强度)。Pull Up/Down:配置内部上拉或下拉电阻。Schmitt Trigger:开启或关闭施密特触发器(用于去抖和波形整形)。Slew Rate:控制信号翻转率,以优化 EMI(电磁干扰)。作者:炭烤毛蛋 ,点击博主了解更多。提示: Gnome 重度桌面占用存储较多,建议提期调整 WSL 大小。文章目录Rockchip 平台 iomux1. IOMUX 的核心概念2. 硬件控制原理1. uboot iomux1.1 U-Boot 阶段的 IOMUX 引用机制1.1.1 显式引用(设备关联)1.1.2 隐式引用(通用配置)1.2 排查 IOMUX 是否被其它功能占用1.2.1 静态排查:扫描编译后的 DTB1.2.2 动态排查:U-Boot 命令行工具1.2.3 硬件寄存器核对1.3 排查常见的“隐形”占用2. kernel iomux2.1 Kernel 阶段的 IOMUX 引用逻辑2.2 如何排查引脚是否被占用2.2.1 查看引脚所有者(Pinmux Owner)2.2.2 查看所有已注册的 Pinctrl 组2.2.3 查看 GPIO 占用情况2.3 深度排查:常见的“隐性”冲突原因2.3.1 预定义的 DTS 包含文件引脚表示法DTS 结构示例2.3.2 同一 IP 的 Multi-route 路线选择2.3.3 驱动中的硬编码或 GPIO 强行接管2.4 强制查看硬件寄存器值Tips结语1. uboot iomux在 Rockchip 平台的开发中,U-Boot 阶段的 IOMUX 配置(Pinctrl)至关重要。如果引脚在此时配置错误,可能会导致显示屏无法点亮、串口无输出或内核启动异常。1.1 U-Boot 阶段的 IOMUX 引用机制在 U-Boot 中,IOMUX 的配置遵循DTB (Device Tree Blob)规范,但其执行逻辑与 Linux 内核略有不同。1.1.1 显式引用(设备关联)当一个驱动程序(如vop,dw_mmc,serial)加载时,U-Boot 的pinctrl框架会自动寻找该节点下的pinctrl-0属性,并应用对应的引脚配置。uart2 { pinctrl-names = "default"; pinctrl-0 = uart2m0_xfer; // U-Boot 会在 probe uart2 时自动切换 IOMUX status = "okay"; };1.1.2 隐式引用(通用配置)