news 2026/5/27 19:11:33

二十一、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/5/27 19:11:11

Java Web 社区医院信息平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着信息技术的快速发展&#xff0c;传统社区医院的管理模式已难以满足现代医疗服务的需求。社区医院在日常运营中涉及患者信息管理、医生排班、药品库存、预约挂号等多方面业务&#xff0c;传统的手工记录或单机系统存在效率低下、数据易丢失、信息共享困难等问题。为了提…

作者头像 李华
网站建设 2026/5/20 9:27:49

基于SpringBoot+Vue的IT交流和分享平台管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着互联网技术的快速发展&#xff0c;IT技术交流与知识分享的需求日益增长。传统的技术论坛和社交媒体平台虽然提供了基础的交流功能&#xff0c;但在专业性、系统性和用户体验方面仍有较大提升空间。尤其是在技术问答、资源共享和项目管理等方面&#xff0c;缺乏高效的整…

作者头像 李华
网站建设 2026/5/23 6:35:54

Java SpringBoot+Vue3+MyBatis 师生健康信息管理系统系统源码|前后端分离+MySQL数据库

摘要 随着信息化技术的快速发展&#xff0c;校园健康管理逐渐成为教育领域的重要课题。传统的师生健康信息管理多依赖纸质记录或分散的电子表格&#xff0c;存在数据易丢失、更新不及时、统计效率低下等问题。尤其是在新冠疫情期间&#xff0c;健康信息的实时监控和高效管理显得…

作者头像 李华
网站建设 2026/5/20 9:27:34

前后端分离“衣依”服装销售平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着电子商务的快速发展&#xff0c;服装销售行业对高效、灵活的管理系统需求日益增长。传统的单机版或前后端耦合的系统架构已难以满足现代企业对快速迭代、高并发访问及跨平台兼容性的需求。服装销售平台需要具备商品管理、订单处理、用户交互等功能&#xff0c;同时还需…

作者头像 李华
网站建设 2026/5/20 13:29:22

n8n 满分漏洞 Ni8mare 可导致服务器遭劫持

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;编译&#xff1a;代码卫士n8n 中存在一个CVSS满分、被称为 “Ni8mare” 的严重漏洞CVE-2026-21858&#xff0c;可导致未认证攻击者控制本地部署的工作流自动化平台n8n 实例。网络安全公司 Cyera 表示&#xff0c;目前…

作者头像 李华
网站建设 2026/5/24 10:00:47

上班是一场冷静的交易

将上班视作一场冷静的交易&#xff0c;这并非 cynicism&#xff0c;而是一种珍贵的清醒。它像一副坚固的甲胄&#xff0c;保护我们在职业的疆场上不被无谓的情绪流矢所伤&#xff0c;不被暧昧的期望绑架。我们付出标定好的时间、技能与专注&#xff0c;换取等值的报酬、经验与履…

作者头像 李华