U-Boot 之九 详解 Pinctrl 子系统、命令、初始化流程、使用方法

本文介绍了U-Boot中的Pinctrl子系统,用于处理嵌入式芯片的引脚复用功能,类似于Linux Kernel的实现。文章详细讲解了Pinctrl的架构,包括UCLASS与UDEVICE、命令、初始化流程和使用方法,并以STM32F769I-EVAL开发板为例说明驱动移植过程。重点讨论了PINCTRL和PINCONFIG设备的创建、命令配置和设备树的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  嵌入式芯片中,引脚复用是一个非常常见的功能,U-Boot 提供一个类似 Linux Kernel 的 Pinctrl 子系统来处理引脚复用功能。正好最近用到了这部分功能,需要移植 Pinctrl 驱动,特此记录一下学习过程。

架构

  U-Boot 提供一个类似 Linux Kernel 的 Pinctrl 子系统,用来统一各芯片厂商的引脚管理。注意,在 U-Boot 中,PINCTRL、IOMUX、PINMUX 通常是一个意思,均可以指 Pinctrl 子系统。要启用 Pinctrl 子系统,必须配置如下所示的配置项:

  • CONFIG_PINCTRL:全局开关
  • CONFIG_PINCTRL_FULL:这为 Pinctrl 子系统提供了与 Linux 兼容的设备树接口(直接解析 linux Kernel 设备树中的 Pinctrl 配置)。此功能取决于设备树配置,因为它解析了设备树以寻找外围设备与之关联的 Pinctrl 设备。
  • CONFIG_PINCTRL_STM32: 我这里的 STM32F769I-EVAL 开发板实际使用的 Pinctrl 驱动,根据自己的开发板来选择的。
    在这里插入图片描述
  • CONFIG_PINCTRL_xx:其他一些与 Pinctrl 功能相关的配置项,根据自己的需要来启用