当前位置: 首页 > news >正文

pinctrl子系统简介

一.  简介

上一章我们编写了基于设备树的 LED 驱动,但是驱动的本质还是没变,都是配置 LED 灯所使用的 GPIO 寄存器,驱动开发方式和裸机基本没啥区别。 Linux 是一个庞大而完善的系统, 尤其是驱动框架,像 GPIO 这种最基本的驱动不可能采用“原始”的裸机驱动开发方式, Linux 内核提供了 pinctrl gpio 子系统用于 GPIO 驱动。

接下来,我们就来学习一下如何借助 pinctrl gpio 子系统来简化 GPIO 驱动开发。

本文我们来具体学习 pinctrl 子系统。

二.  pinctrl 子系统简介

Linux 驱动讲究驱动分离与分层,pinctrl gpio 子系统就是驱动分离与分层思想下的产物, 驱动分离与分层其实就是按照面向对象编程的设计思想而设计的设备驱动框架,关于驱动的分离与分层我们后面会讲。本来 pinctrl gpio 子系统应该放到驱动分离与分层章节后面讲解,但是不管什么外设驱动,GPIO 驱动基本都是必须的,而 pinctrl gpio 子系统又是 GPIO 驱动必须使用的,所以就将 pintrcl gpio 子系统这一章节提前了。

我们先来回顾一下上一章是怎么初始化 LED 灯所使用的 GPIO ,步骤如下:
①、修改设备树,添加相应的节点,节点里面重点是设置 reg 属性, reg 属性包括了 GPIO
相关寄存器。
② 、 获 取 reg 属 性 中 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 这两个寄存器地址,并且初始化这两个寄存器,这 两个寄存器用于设置 GPIO1_IO03 这个 PIN 的复用功能、上下拉、速度等。
③、在②里面将 GPIO1_IO03 这个 PIN 复用为了 GPIO 功能,因此需要设置 GPIO1_IO03 这个 GPIO 相关的寄存器,也就是 GPIO1_DR GPIO1_GDIR 这两个寄存器。
Linux 内核针对 PIN 的配置,推出了 pinctrl 子系统。对于 GPIO 的配置,推出了 gpio 子系统。
大多数 SOC pin 都是支持复用的,比如, I.MX6ULL GPIO1_IO03 既可以作为普通的 GPIO 使用,也可以作为 I2C1 SDA 等等。此外,我们还需要配置 pin 的电气特性,例如,上 / 拉、速度、驱动能力等等。
传统的配置 pin 的方式,就是直接操作相应的寄存器,但是这种配置 方式比较繁琐、而且容易出问题 ( 比如 pin 功能冲突 ) pinctrl 子系统就是为了解决这个问题而引 入的, pinctrl 子系统主要工作内容如下:
①、获取设备树中 pin 信息。
②、根据获取到的 pin 信息,来设置 pin 的复用功能。
③、根据获取到的 pin 信息,来设置 pin 的电气特性,例如,上 / 下拉、速度、驱动能力等。
对于我们使用者来讲,只需要在设备树里面设置好某个 pin 的相关属性即可,其他的初始 化工作,均由 pinctrl 子系统来完成, pinctrl 子系统源码目录为 drivers/pinctrl

相关文章:

pinctrl子系统简介

一. 简介 上一章我们编写了基于设备树的 LED 驱动,但是驱动的本质还是没变,都是配置 LED 灯所使用的 GPIO 寄存器,驱动开发方式和裸机基本没啥区别。 Linux 是一个庞大而完善的系统, 尤其是驱动框架,像 GPIO …...

基于51单片机的温度报警控制系统Protues仿真设计

目录 一、设计背景 二、实现功能 三、总体硬件设计 四、仿真演示 四、源程序 一、设计背景 随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与了解环境温度。特别地,高温情况下极易造成火灾,例如,在…...

多级缓存

一、多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时&#xff…...

【已解决】如何用typedef简化函数指针

博文内容简短&#xff0c;主要介绍typedef简化函数指针&#xff0c;形式是typedef int(*pp)(int,int);并用一个加法的例子去演示&#xff0c;如何用typedef简化函数指针。 示例 #include<stdio.h> int add(int a,int b) {return a b; } typedef int(*p)(int, int); in…...

UI网站汇总

Material Design的九大设计原则 Material Design的学习笔记 Material Design复杂响应式设计 MaterialPalette MD风格调色板 Iconfont Clipartlogo Dribbble https://dribbble.com/search?qapp Uplabs 优设 站酷 我图网 思维网 欢迎补充&#xff01;&#xff01;...

PLC-IoT 网关开发札记(5):将本地数据库作为资产打包发布到 App

App需求&#xff1a;保存物模型 什么是物模型 在项目开发中&#xff0c;用到了本地数据库&#xff0c;这个本地数据库记录了系统的物模型。所谓物模型就是对某一个设备的可操纵属性的定义&#xff0c;每一个设备包括了一个或者多个属性&#xff0c;通过获取这些属性的当前值可…...

固态硬盘优化设置

目录 前言&#xff1a; 关闭Windows Search 禁用系统保护&#xff08;不建议&#xff09; 不建议禁用系统保护原因 关闭碎片整理【机械硬盘】 提升固态硬盘速度 开启TRIM 合理使用固态硬盘的容量 正确关机 关闭开机自启 前言&#xff1a; 电脑配备固态硬盘就能一劳…...

SpringBoot跨域问题解决

前端访问后台接口时&#xff0c;浏览器报错&#xff0c;跨域无法访问。 报错信息如下&#xff1a; Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 经过一番百度之后&#…...

FindMy技术与相机结合

FindMy是苹果公司提供的设备追踪服务&#xff0c;用来帮助用户定位丢失的设备。自苹果公司开放Findmy网络之后&#xff0c;FindMy技术便与各种生活设备相结合&#xff0c;比如与相机的结合。 想象一下&#xff0c;你正在外出办事或者旅行时&#xff0c;突然意识到相机丢了&…...

Windows WSL2 占用磁盘空间清理释放

目前工作中时常用到WSL2&#xff08;Ubuntu20.04&#xff09;&#xff0c;在使用一段时间后会发现WSL2所占用磁盘空间越来越多&#xff0c;体现在WSL2之上安装Linux分发对应的vhdx虚拟磁盘文件体积越来越大&#xff0c;会占用Windows自身空间&#xff0c;即使手动清理了Linux分…...

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析 【赛程名称】高职组-云计算赛项第一场-私有云【任务 1】私有云服务搭建[10 分]【题目 2】Yum 源配置[0.5 分]【题目 3】配置无秘钥 ssh[0.5 分]【题目 4】基础安装[0.5 分]【题目 5】数据库安装与调优[0.5 分]【题目 …...

2.C语言——控制语句

控制语句 1.分支语句/判断语句if 语句if...else 语句if...else if...else语句 switch语句 2.循环语句 while 语句 do...while 语句 for 语句 3.转向语句 break continue go to 1.分支语句/判断语句 if 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } …...

Linux网络之PXE高效批量装机、Kickstart全自动化安装

一. PXE网络装机简介和相关知识 1. 常见的三种系统安装方式和相关文件 ① 三种系统安装方式 u启动安装&#xff1a;在U盘中下载相关的安装系统及镜像文件&#xff0c;u盘插机安装 光驱安装&#xff1a;将带有所需系统的光盘放进电脑服务器中&#xff0c;按照官方引导装机 …...

react umi/max 页签(react-activation)

思路&#xff1a;通过react-activation实现页面缓存&#xff0c;通过umi-plugin-keep-alive将react-activation注入umi框架&#xff0c;封装页签组件最后通过路由的wrappers属性引入页面。 浏览本博客之前先看一下我的博客实现的功能是否满足需求&#xff0c;实现功能&#xf…...

计算机网络编程

一、计算机网络&#xff08;概述、简介&#xff09; 说起网络&#xff0c;相信大家都不陌生&#xff0c;把分散在不同地点的计算机设备&#xff0c;通过传输介质、通信设施和网络通信协议&#xff0c;实现资源共享和信息传输的系统&#xff0c;我们称之为&#xff1a;计算机网…...

【计算机网络实训】期末考题-路由重分发+三层交换机VLAN间路由

路由重分发三层交换机VLAN间路由 实验目的实验内容及步骤仿真配置环境搭建要求&#xff1a;实验步骤配置Switch0配置Switch1配置交换机Multilayer Switch 0路由器Router0上的配置路由器Router1的配置 测试PC0 自动获取地址成功&#xff0c;PC0 可 ping 通 switch0&#xff0c;网…...

git 常规操作及设置

git 常规操作及设置 Git是一个分布式版本控制系统&#xff0c;可以用来跟踪文件的修改历史并与其他人进行协作开发。下面是一些常见的Git操作及设置&#xff1a; 初始化仓库&#xff1a;使用命令git init在当前目录创建一个新的Git仓库。 克隆仓库&#xff1a;使用命令git clo…...

element中表格组件的row-class-name和class-name属性的使用以及无效处理

1.这两个属性的使用&#xff0c;row-class-name用在el-table标签上&#xff0c;class-name用在el-table-column标签上。两个属性即可绑定类名也可绑定函数 <!-- 这里是绑定函数&#xff0c;也可以绑定类名 --> <el-table :data"tableData" selection-chang…...

【AI理论知识】EM算法

基本定义 期望最大化算法&#xff08;Expectation-Maximization&#xff0c;EM算法&#xff09;是一种用于估计包含潜在变量的概率模型参数的迭代优化算法。EM算法的主要目标是在存在未观测数据或缺失数据的情况下&#xff0c;通过迭代地进行期望步骤&#xff08;E步&#xff…...

03 OSPF

参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2...

MATLAB实时绘图卡顿?优化串口通信与图形刷新的几个实用技巧

MATLAB实时绘图性能优化&#xff1a;突破串口通信与图形刷新的瓶颈 当你在实验室里盯着屏幕上跳动的数据曲线&#xff0c;却发现它像老式幻灯片一样一卡一顿时&#xff0c;那种挫败感简直让人抓狂。特别是在处理高速ADC采样或长时间运行的实验时&#xff0c;MATLAB默认的绘图方…...

ESXi 8.0 无法选择分区方式 小白级详细解决办法

本文针对 ESXi 8.0 安装 / 使用中无法选择分区方式、看不到分区选项、分区界面灰掉、提示分区不支持等问题&#xff0c;从根源排查到终极修复&#xff0c;全程纯文字、步骤拆解到最小操作&#xff0c;小白照着做就能解决&#xff0c;无任何表格。一、先明确&#xff1a;什么是 …...

【国家级智慧农场落地案例】:Python图像算法如何将番茄裂果识别准确率提升至98.7%?

第一章&#xff1a;国家级智慧农场落地背景与番茄裂果识别挑战近年来&#xff0c;国家《“十四五”推进农业农村现代化规划》明确提出加快数字技术与农业生产深度融合&#xff0c;推动建设一批国家级智慧农场示范项目。在华北、华东等核心蔬菜产区&#xff0c;规模化番茄种植基…...

体验人机协同:在快马平台利用ai辅助开发优化天气查询代码

最近在做一个天气查询的小工具&#xff0c;原本的代码功能很简单&#xff0c;就是从API获取数据然后打印出来。但实际用起来发现很多问题&#xff1a;网络不好的时候直接崩溃&#xff0c;返回的数据格式也经常对不上。正好在InsCode(快马)平台上看到了AI辅助开发的功能&#xf…...

Tomcat安全防护指南:如何防御CVE-2017-12615和CNVD-2020-10487漏洞攻击

Tomcat安全防护实战&#xff1a;从漏洞原理到企业级防御体系构建 最近在帮某金融客户做安全审计时&#xff0c;发现他们的Tomcat服务器竟然还开着AJP端口&#xff0c;而且管理后台用的还是默认密码。这让我想起去年处理过的一次安全事件——攻击者仅用3小时就通过CVE-2017-1261…...

FPGA时序路径实战解析:从理论到约束的四大关键场景

1. 时序路径基础&#xff1a;FPGA设计的生命线 第一次接触FPGA时序约束时&#xff0c;我盯着时序报告里密密麻麻的路径延迟数据发懵——这些红色警告就像交通信号灯&#xff0c;而我完全看不懂它们的规则。直到真正理解了时序路径这个概念&#xff0c;才明白它其实就是FPGA设计…...

突破本地开发壁垒:tunnelto无缝连接全球网络的技术革新

突破本地开发壁垒&#xff1a;tunnelto无缝连接全球网络的技术革新 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 痛点诊断&#xff1a;当本地服务成为协作孤…...

Xcode实战:用SwiftUI快速构建一个可交互的卡片视图(含SF Symbols使用技巧)

Xcode实战&#xff1a;用SwiftUI快速构建一个可交互的卡片视图&#xff08;含SF Symbols使用技巧&#xff09; 当你第一次看到那些精美的卡片式UI时&#xff0c;是否好奇它们是如何被构建出来的&#xff1f;在移动应用设计中&#xff0c;卡片视图因其清晰的视觉层次和自然的交互…...

使用Proteus进行电路仿真:为HunyuanVideo-Foley生成电子音效提供灵感

使用Proteus进行电路仿真&#xff1a;为HunyuanVideo-Foley生成电子音效提供灵感 1. 引言&#xff1a;当电路仿真遇上AI音效生成 想象一下&#xff0c;你正在为一款科幻游戏设计音效。传统的音效库已经用腻了&#xff0c;想要一些真正独特、带有"电路感"的声音效果…...

MSG文件高效提取工具:解放双手的Outlook邮件解析方案

MSG文件高效提取工具&#xff1a;解放双手的Outlook邮件解析方案 【免费下载链接】msg-extractor Extracts emails and attachments saved in Microsoft Outlooks .msg files 项目地址: https://gitcode.com/gh_mirrors/ms/msg-extractor 副标题&#xff1a;你是否还在为…...