Linux驱动开发 gpio_get_value读取输出io的电平返回值一直为0的问题

当时gpio子系统进行读取时返回必定是0

因此,首先必须使用platform驱动来管理gpio和pinctrl子系统,然后如果按照正点原子所教的设备树引脚设置为0x10B0则会导致读取到的电平值为0。

解决方法:

将设备树中的引脚设置为

c 复制代码
pinctrl_gpioled: gpioledgrp {
			fsl,pins =<
				MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0x400110B0
			>;
		};

即将原来的0X10B0改为0x400110B0,即可顺利读取到设置成输出模式的io的电平值了

具体原理可以参考
NXP i.MX6 GPIO value值读取为0

但其实我还遇到了一个问题,那就是我所写的项目中需要注册多个gpio,并且需要监控他们的变化。在注册过程中,

c 复制代码
static const struct of_device_id LNG_platform_of_match[] = {
	{.compatible = "mini,gpioled"},
    { .compatible = "gpio-bounce" },
    { .compatible = "gpio-water-high" },
    { .compatible = "gpio-water-low" },
    { .compatible = "gpio-vacuum" },
    { .compatible = "gpio-absorb" },
    { .compatible = "gpio-stir" },
    { .compatible = "gpio-up1" },
    { .compatible = "gpio-up2" },
    { .compatible = "mini,gpio-add1" },
    { .compatible = "gpio-add2" },
	{/* sentinel */},
};

该匹配函数每有一个子节点便会匹配一次并执行一次probe函数。然后我的probe函数中放入了驱动的注册部分,就会一直报错,但并不影响最终的使用。具体情况如下

目前还没有找到具体的解决方法。先挖个坑,后续找到了我会进行更新。

相关推荐
阿昊真人1 小时前
node 程序占用处理方法与后台运行方法
linux·编辑器·vim
Lllongroad4 小时前
SPI通信及设备驱动
linux·stm32·单片机
Dragon水魅5 小时前
Ubuntu22.04 配置deepseek知识库
linux·服务器·深度学习·ubuntu
96776 小时前
如何将 Jupyter Notebook (.ipynb) 文件转换为 Python (.py) 文件
linux·python·jupyter
forestqq9 小时前
openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能
linux·运维·docker
蓝创精英团队11 小时前
基于Ubuntu Ollama 部署 DeepSeek-R132B 聊天大模型(附带流式接口调用示例)
linux·运维·ubuntu·deepseek
快去睡觉~13 小时前
Linux之Http协议分析以及cookie和session
linux·运维·http
致奋斗的我们13 小时前
项目:利用rsync备份全网服务器数据
linux·运维·服务器·开发语言·github·rsync·openeuler
Htht11113 小时前
【Linux】之【bug】“sudo wpa_cli -i wlan0 scan“ 返回 FAIL-BUSY 解决
linux·运维·bug
pineapple rong14 小时前
shell脚本控制——处理信号
linux·bash