pinctrl子系统与gpio子系统实验-解决申请IO失败问题

2024-02-01 22:20

本文主要是介绍pinctrl子系统与gpio子系统实验-解决申请IO失败问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.  简介

前面一篇文章对Led 驱动代码进行了测试,测试后驱动出现错误提示,提示 申请IO失败。文章地址如下:

pinctrl子系统与gpio子系统实验-对驱动进行测试-CSDN博客

本文来解决驱动代码中申请IO失败的问题。

二.  Led驱动申请IO失败的解决思路

申请IO的时候失败大部分原因是,这个IO被其他外设占用了。检查设备树,查找有哪些使用同一IO的设备。检查如下两方面:

(1)  检查复用,也就是 pinctl 设置(复用与电器属性配置)。

(2)  gpio的使用,例如,设备树节点中如下属性:

 led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;

三.  具体解决方法

具体检查开发板所运行的设备树文件中,Led所使用的 GPIO是否被其他设备占用了。

1.  所添加的 Led设备节点

注意:这里所使用的开发板是正点原子 nand-Flash版 ALPHA开发板。所以,所对应设备树源文件为 imx6ull-alientek-nand.dts。

前面文章添加 Led设备节点时,我将 Led设备节点信息添加到了 imx6ull-14x14-evk.dts文件中设备树的根节点下(这里imx6ull-alientek-nand.dts设备树文件最终会调用到 imx6ull-14x14-evk.dts )。

设备树根目录下添加了 gpioled设备节点:

/* WeiWuXian/2024/01/25*/gpioled{compatible = "alientek, gpioled";pinctrl-names = "default";pinctrl-0 = <&pinctrl_gpioled>;led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;status = "okay";};

&iomuxc {}节点中,添加了如下 pinctrl节点信息。

/*WeiWuXian//2024/01/25 */pinctrl_gpioled: ledgrp{fsl,pins = <MX6UL_PAD_GPIO1_IO03__GPIO1_IO03   0X10B0>;};

2.  具体解决 IO申请失败问题

(1)  首先,检查 pinctrl配置(即复用与电器属性配置)

在这个实验中, LED 灯使用的 PIN GPIO1_IO03 ,因此,先检查 GPIO_IO03 这个 PIN 有没 有被其他的 pinctrl 节点使用。在 imx6ull-alientek-nand.dts 中找到如下内容:
		pinctrl_tsc: tscgrp {fsl,pins = <MX6UL_PAD_GPIO1_IO01__GPIO1_IO01	0xb0MX6UL_PAD_GPIO1_IO02__GPIO1_IO02	0xb0/*	MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0xb0  */MX6UL_PAD_GPIO1_IO04__GPIO1_IO04	0xb0>;

可以看到,pinctrl_tsc 节点是 TSC(电阻触摸屏接口)pinctrl 节点,从第 5 行可以看出,默认情况下 GPIO1_IO03 作为了 TSC 外设的 PIN,复用为了GPIO功能。所以,需要屏蔽掉如上的 MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 这一行。

(2)  其次,检查 gpio使用。

因为本实验中,我们将 GPIO1_IO03 这个 PIN 配置为了 GPIO ,所以还需要查找一下有没有 其他的外设使用了 GPIO1_IO03 ,在 imx6ull-alientek-nand.dts 中搜索 “ gpio1 3 ” ,找到如下内 容:
&tsc {pinctrl-names = "default";pinctrl-0 = <&pinctrl_tsc>;
/*	xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>; */measure-delay-time = <0xffff>;pre-charge-time = <0xfff>;status = "okay";
};

tsc TSC 的外设节点,从第 4 行可以看出, tsc 外设也使用了 GPIO1_IO03 ,同样我们需 要将这一行屏蔽掉。然后在继续搜索 “ gpio1 3 ”,看看除了 LED 灯以外还有没有其他的 地方也使用了 GPIO1_IO03,找到一个屏蔽一个。没有其他设备使用 GPIO1_IO03。


接下来就是编译设备树文件,开发板重新加载新编译的设备树文件进行测试。


 

这篇关于pinctrl子系统与gpio子系统实验-解决申请IO失败问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668663

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at