Pinctrl子系统和GPIO子系统
Pinctrl子系统:
借助Princtr子系统来设置一个Pin的复用和电气属性;
pinctrl子系统主要做的工作是:1. 获取设备树中的PIN信息;2.根据获取到的pin信息来设置的Pin的复用功能;3.根据获取到的pin信息去设置pin的电气特性,比如上下拉、速度、驱动等。
打开imx6ull.dtsi: (设备树相关的代码保存在代码被保存在.dts/dtsi后缀文件中)
- IOMUXC SNVS控制器:

- IOMUXC控制器:

- GPR控制器:

以上三个节点:
具体信息查看6ULL参考手册。
IOMUXC 具体一个IO 做什么需要打开自己板子对应的设备树进行添加和查看。(alientek-emmc .dts):
如:

dts文件追加了很多信息如上如图。
- 如何添加一个PIN的信息:

在pinfunc.h中找到的相应的定义的引脚 (宏)

#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0090 0x031C 0x0000 0x5 0x0
IO19是复用的 ,对应的是
0x0090 0x031C 0x0000 0x5 0x0
<mux_reg conf_reg input_reg mux_mode input_val>
IOMUXC父节点首地址 0x 020e 0000 ,因此UART_RTS_B 这个PIN的Mux寄存器地址就是: + 0X 0090 = OX 020e 0090。
conf_reg : 0x031C : 这个寄存器就是电气属性配置地址。
Mux_mode : 5 表示复用为GPIO1_IO19 ,将其写入 0X020e 0090 。
input_val :偏移是0 ,表示PIN没有input的功能。
注:
传统Pin的配置方式:操作寄存器
①IO复用 eg:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
②pin配置电气属性 eg:IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03
-
PINctl 子系统去驱动
配置好了在设备树中添加好了,那么一定需要在子系统中进行驱动了。
Pinctrl 和 GPIO的子系统 就是驱动分离 与 分层思想的产物。如何找到6ULL对应的PINCTRL的子系统的驱动。
通过compatible,此属性是字符串列表。驱动文件里面有一个的描述驱动兼容性的东西,当设备树节点的compatible属性和驱动里面的兼容性字符串匹配一致的时候,那么设备和驱动就匹配了。
只需要全局看一下设备节点里面的compiable属性的值,看一看哪一个.c文件里面有,那么此.c文件就是驱动文件。
Pinctrl-im6ull.c
当驱动和设备匹配以后执行probe函数。也就是 platform——driverz这个结构体中probe会去执行。


GPIO的使用
当把一个IO复用成GPIO功能的时候,我们就需要使用GPIO子系统。
Imx6ull.dtsi

查看GPIO的手册。

如何从设备树中获取要是用的GPIO信息,----of函数。
如:

驱动中对GPIO的操作函数:
1.of_find_node_by_path 函数通过路径来查找指定的节点,函数原型如下:
inline struct device_node *of_find_node_by_path(const char *path)
2.获取GPIO.of_get_named_gpio函数,返回值就是GPIO编号。
3.请求此编号的GPIO,request函数。
4.设置GPIO,输入还是输出。Gpio_direction_input还是Gpio_direction_output.
5.如果是输入,那么通过GPIO_get_value函数读取GPIO值;如果是输出,通过gpio_set_value设置GPIO值。
相关文章:
Pinctrl子系统和GPIO子系统
Pinctrl子系统: 借助Princtr子系统来设置一个Pin的复用和电气属性; pinctrl子系统主要做的工作是:1. 获取设备树中的PIN信息;2.根据获取到的pin信息来设置的Pin的复用功能;3.根据获取到的pin信息去设置pin的电气特性…...
Unittest单元测试框架之unittest构建测试套件
构建测试套件 在实际项目中,随着项目进度的开展,测试类会越来越多,可是直到现在我 们还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的,在 unittest中可以通过测试套件来解决该问题。 测试套件&…...
Django回顾4
一.过滤器 1.过滤器格式 {{变量|过滤器名字}} 2.怎么使用 1.注册app 2.在app下创建templatetags模块(模块名只能是templatetags) 3.在包下写一个py文件,随便命名 4.在py文件中写入:from django import template …...
Apache APISIX 体验指南
APISIX 体验指南 所有的 sh 脚本通过 git bash 执行。 出现错误仔细核对文档。 github 地址: 使用 docker 安装 apisix 确保本地安装 Docker 和 Docker-compose 如未安装参开以下文档安装: Docker:https://docs.docker.com/engine/install/c…...
Promise的resolve和reject方法(手写题)
1.resolve 2.reject 3.手写 1.resolve //构造函数上添加 resolve 方法 Promise.resolve function (value) {return new Promise((resolve, reject) > {if (value instanceof Promise) {value.then((val) > {resolve(val)},(err) > {reject(err)})} else {resolve(v…...
关于wiki的Unlink攻击理解--附例题BUUCTF-hitcontraining_bamboobox1
堆机制我研究了很久,一直没有什么很大的进展。堆相较于栈难度大的多。利用手法也多。目前还没有怎么做过堆题。这次就把理解了很久的Unlink写一写。然后找一题实践一下。 在glibc中,堆管理都是用一个个chunk去组织的。这个就不过多阐述。Unlink是glibc一…...
【linux】日志有哪些
Linux系统日志主要有以下几种类型: 内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中设置决定内核消息及各种系统程序消息记录到什么位置。/var/log/message:该日志文件存放了内核消息…...
Redis主从复制实现RCE
文章目录 前置知识概念redis常用命令redis module 利用条件利用工具思路例题 [网鼎杯 2020 玄武组]SSRFMe总结 前置知识 概念 背景是多台服务器要保存同一份数据,如何实现其一致性呢?数据的读写操作是否每台服务器都可以处理?这里Redis就提供…...
Flutter应用程序的加固原理
在移动应用开发中,Flutter已经成为一种非常流行的技术选项,可以同时在Android和iOS平台上构建高性能、高质量的移动应用程序。但是,由于其跨平台特性,Flutter应用程序也面临着一些安全风险,例如反编译、代码泄露、数据…...
Centos7部署NFS
搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园 在CentOS中搭建NFS - 陌上荼靡 - 博客园 NFS简介 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统…...
我已经开了一个融资融券的账户了,还可以再在别的券商开两融(信用账户)吗?
融资融券交易又称“证券信用交易”或保证金交易,是指投资者向具有融资融券业务资格的证券公司提供担保物,借入资金买入证券(融资交易)或借入证券并卖出(融券交易)的行为。 简单说就是融资做多,…...
Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织
Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织 近日,在负责的项目中,我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利,没想到却遭遇了 Spring Cloud Gateway 无法正…...
华为OD机试 - 最多购买宝石数目(Java JS Python C)
题目描述 橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i] 0 ≤ i < nn = gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续; 例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],...,ge…...
【LeetCode】挑战100天 Day17(热题+面试经典150题)
【LeetCode】挑战100天 Day17(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...
正则表达式的基本语法
1.正则表达式基本语法 两个特殊的符号^和$。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等)࿱…...
使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
平滑处理–滤波 本文使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波 关于其他MFC单文档工程可参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-visual Studio MFC 绘制单一颜色三角形、渐变颜色边…...
Django HMAC 请求签名校验与 Vue.js 实现安全通信
概要 在 Web 应用的开发过程中,确保数据传输的安全性和完整性是一个不容忽视的问题。使用 HMAC(Hash-based Message Authentication Code)算法对请求内容进行签名校验,是一种常见且有效的安全策略。本文将详细介绍如何在 Django …...
深度学习之循环神经网络
视频链接:6 循环神经网络_哔哩哔哩_bilibili 给神经网络增加记忆能力 对全连接层而言,输入输出的维数固定,因此无法处理序列信息 对卷积层而言,因为卷积核的参数是共享的,所以卷积操作与序列的长度无关。但是因为卷积…...
与原有视频会议系统对接
要实现与原有视频会议系统对接,需要确保通信协议的一致性。连通宝视频会议系统可与第三方视频会议系统对接。实现与第三方会议系统对接还可以使用会议室连接器,可以确保不同系统之间的数据传输和交互。 具体对接流程可能因不同品牌和类型的视频会议系统而…...
C# Serilog--可记录异常完整路径
1.Serilog安装 2.控制台代码 --设置日志记录器的最小级别为 Debug,即只记录 Debug 级别及以上的日志信息 --.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day):将日志信息写入到指定路径的文件中(这里的路径…...
Esp32Robot入门04-服务端架构与本地Docker拉起(实战进阶:手把手教你用Docker部署小智助手服务端)
Esp32Robot入门04-服务端架构与本地Docker拉起(实战进阶:手把手教你用Docker部署小智助手服务端) 📌 文章简介: 在AI智能硬件开发中,ESP32-S3因高性价比备受青睐,但面对千亿参数的本地大模型与高…...
太空算力产业正崛起
未来,渔民只需通过手机App向卫星发起查询,卫星便可借助高光谱相机精准定位金枪鱼位置,再通过在轨“智慧大脑”分析处理,将鱼群坐标、渔具使用建议及销售渠道指导等实用信息,精准传回渔民手中。这一充满“黑科技”色彩的…...
英伟达市值“富可敌国”,AI基建核心地位稳固但仍有隐忧
英伟达市值惊人,超多数国家经济体截至2026年5月21日,英伟达的市值大约在5.5万亿美元。据悉,按IMF 2026年4月版《世界经济展望》的名义GDP预测,美国约32.38万亿美元,中国约20.85万亿美元,德国约5.45万亿美元…...
Cadence 17.4 CIS配置踩坑实录:MySQL元件数据库连接失败与中文乱码全解决
Cadence 17.4 CIS配置实战:MySQL元件数据库连接与中文乱码终极解决方案 当工程师尝试将Cadence CIS与MySQL数据库集成时,往往会遇到两个令人头疼的问题:连接失败和中文乱码。这两个问题看似简单,却可能耗费大量调试时间。本文将深…...
ESXi 7.0升8.0后VM启动失败?硬件版本降级就搞定
很多运维人员将ESXi 7.0成功升级到8.0后,会遇到一个棘手问题:原有虚拟机(VM)无法启动,弹出错误提示“incompatible hardware version”(不兼容的硬件版本)。其实故障核心原因很明确:…...
为OpenClaw智能体工作流配置Taotoken作为统一模型服务源
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为统一模型服务源 在构建基于智能体(Agent)的自动化工作流时&#x…...
Gitee Scan:关键领域软件工厂的安全检测能力分析
Gitee Scan:关键领域软件工厂的安全检测能力分析 文章概述 软件供应链安全正成为互联网、金融、国防等关键领域关注的焦点。Gitee Scan 是 Gitee DevSecOps 平台中集成的安全检测组件,提供 SAST(静态应用安全测试)、SBOMÿ…...
IP查询工具怎么选?在线API vs IP离线库:精度、速度、成本、隐私全对比
随着游戏安全、反作弊、精准营销、风控合规等业务场景的增长,IP查询逐渐从“简单的归属地展示”转向大规模实时决策、风险识别与行为画像构建的核心基础能力。选择在线API还是离线库,直接决定了你的系统在高并发下的稳定性、数据合规性以及长期运维成本。…...
2026黑科技对决:UWB硬件瓶颈 vs 镜像视界无感定位・跨镜追踪自由
2026黑科技对决:UWB硬件瓶颈 vs 镜像视界无感定位・跨镜追踪自由 一、UWB:厘米级精度,困在硬件里的“昂贵精准” UWB(超宽带)凭借短脉冲、宽频谱特性,在理想视距环境下可实现5–10厘米定位精度࿰…...
如何快速在Windows上安装安卓应用?APK Installer的终极免费解决方案
如何快速在Windows上安装安卓应用?APK Installer的终极免费解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想在Windows电脑上运行安卓应用…...
