嵌入式芯片中,引脚复用是一个非常常见的功能,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 功能相关的配置项,根据自己的需要来启用
U-Boot 还提供了一个通用 Pinctrl 框架,提供了一套通用的设备树接口来使用 Pinctrl 子系统。通用的