news 2026/4/15 22:30:34

二十一、pinctrl子系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二十一、pinctrl子系统

前言

前面我们写的GPIO驱动程序都是自己在驱动里面定义好gpio引脚需要用到的寄存器,然后在驱动程序里面直接去配置这些寄存器。Linux是一个成熟的,跨平台的通用操作系统,对于配置引脚这样的最基本的功能,是已经有一套现成的框架可以用的,这就是pinctrl子系统。

需要注意的是pinctrl子系统是用于配置引脚的,包括引脚的复用功能,电气属性等。而当将引脚复用为gpio功能之后,就可以使用另一个叫做gpio的子系统去操作这个gpio引脚,包括将其设置为输入还是输出,输出高电平还是低电平等等。

设备树描述

在IMX6ULL中,负责引脚复用功能以及引脚电气属性配置的模块是IOMUXC控制器,其在设备树中的节点是iomuxc:

/* imx6ull.dtsi */ iomuxc: iomuxc@020e0000{compatible="fsl,imx6ul-iomuxc";reg=<0x020e0000 0x4000>;};/* imx6ull_alientek_emmc.dts */&iomuxc{pinctrl-names="default";pinctrl-0=<&pinctrl_hog_1>;imx6ul-evk{pinctrl_hog_1: hoggrp-1{fsl,pins=<MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */ /* MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 SD1 RESET */ MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x13058 /* USB_OTG1_ID */>;};pinctrl_led: ledgrp{fsl,pins=<MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x10B0 /* LED0 */>;};pinctrl_beep: beepgrp{fsl,pins=<MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x10B0 /* beep */>;};...};};
  • iomuxc:IOMUXC控制器(也可说是pinctrl子系统)的设备树节点
  • compatible:与IOMUXC控制器的平台驱动做匹配
  • reg:IOMUXC控制器的寄存器组起始地址和长度
  • iomuxc节点中的每个子节点都是一个group,也就是一组实现特定功能的物理引脚配置的集合。pinctrl子系统会解析出这些group节点,并在内核中建立和设置很多关于这些group中的每个pin(引脚)配置的映射关系,供其它外设使用到这些引脚时能快速索引并进行配置。

iomuxc节点除了作为IOMUXC控制器节点,其还是一个虚拟的外设节点,对于那些需要在系统启动时就需要配置成特定功能的引脚,可以直接在iomuxc节点中配置。这样,iomuxc节点匹配上IOMUXC控制器驱动的时候,pinctrl子系统就会直接配置这些引脚,比如示例中的:

&iomuxc{pinctrl-names="default";pinctrl-0=<&pinctrl_hog_1>;imx6ul-evk{...};};

就表示在系统启动并初始化pinctrl子系统的时候,就将pinctrl_hog_1引脚组里面的引脚配置成给定的复用功能和电气属性(hog是霸占,强制使用的意思)。

源码数据结构

platform总线调用pinctrl子系统

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 3:44:13

Thinkphp的吉他谱分享平台的设计与实现

目录研究背景与意义系统设计目标技术实现要点创新与特色应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理研究背景与意义 随着音乐爱好者的增多&#xff0c;吉他谱共享需求日益增长。传统分享方式效率低、资源分散&#xff0c;亟需一个专业…

作者头像 李华
网站建设 2026/4/15 10:42:59

SpringBoot+Vue 墙绘产品展示交易平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着城市化进程的加快和艺术文化的普及&#xff0c;墙绘艺术逐渐成为城市美化的重要组成部分&#xff0c;同时也催生了墙绘产品展示与交易的市场需求。传统的墙绘交易模式依赖线下渠道&#xff0c;存在信息不对称、交易效率低等问题。为了解决这些问题&#xff0c;本研究设…

作者头像 李华
网站建设 2026/4/15 12:15:24

【Git核心操作实战】从初始化到冲突解决与回滚(附完整演示)

文章目录目录引言环境准备一、仓库初始化与首次提交1.1 初始化 Git 仓库1.2 创建 .gitignore 文件1.3 首次提交技术解析二、分支创建与多轮小步提交2.1 切出 feature 分支2.2 2-3 次小步提交第一次提交&#xff1a;新增功能基础文件第二次提交&#xff1a;实现核心逻辑第三次提…

作者头像 李华
网站建设 2026/4/15 10:52:53

基于CNN的车牌识别网络

前期准备 这篇博客记录神经网络方法与应用的实验项目&#xff0c;项目开源链接&#xff1a;【免费】神经网络课程设计项目.zip资源-CSDN下载 数据集 数据集是我本人在百度飞桨网站上找到的&#xff0c;这个数据集整理的很全面详细&#xff0c;数据集信息包含10w张训练照片&a…

作者头像 李华
网站建设 2026/4/15 5:07:43

Java Web Web足球青训俱乐部管理后台系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 足球青训俱乐部管理后台系统的开发旨在解决传统足球青训俱乐部在管理学员信息、课程安排、教练分配等方面效率低下的问题。随着足球运动的普及和青训体系的完善&#xff0c;俱乐部需要一套高效、智能化的管理系统来优化运营流程。传统的人工记录和Excel表格管理方式容易导…

作者头像 李华
网站建设 2026/4/15 12:10:43

TypeScript 的本质并非类型,而是信任

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我静态类型悄悄修好的&#xff0c;不只是语法错误&#xff0c;而是你们的精神状态。老实说&#xff0c;我第一次听到 TypeScript 的时候&#xff0c;脑子里…

作者头像 李华