??嵌入式芯片中,引腳復用是一個非常常見的功能,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 子系統。通用的