2025年使用Debugfs确认GPIO_pinctrl占用状态

使用Debugfs确认GPIO_pinctrl占用状态Linux 驱动调试中可能遇到 gpio 无法申请的问题 需要查找 gpio 被哪个驱动占用 用来解决管脚占用问题 介绍几种查找 gpio 占用的方案 如果使用 echo 17 gt sys class gpio export 时报错 sh echo write error Device or resource busy

大家好,我是讯享网,很高兴认识大家。

Linux 驱动调试中可能遇到gpio无法申请的问题,需要查找gpio被哪个驱动占用,用来解决管脚占用问题,介绍几种查找gpio占用的方案

如果使用echo 17 > /sys/class/gpio/export 时报错:
-sh: echo: write error: Device or resource busy
显示gpio被占用。则可以通过一下方法来查看GPIO占用状态

一、方案1

使用debugfs文件系统
(debugfs是一个用于调试目的,简单的,基于内存的文件系统。kernel的信息可以输出到debugfs中,这样方便user space程序查看和使用。
为了使用debugfs功能,编译kernel时需要把CONFIG_DEBUG_FS置成yes。
debugfs文件系统从2.6.10-rc3版本开始在Linux内核中使用。debugfs是一个简单易用的基于RAM的文件系统,专门为调试目的设计。它的存在是为内核开发者提供一种简单的方法,在用户空间中获取内核的相关信息。)
典型的挂载debugfs文件系统命令

mount -t debugfs none /media 

讯享网
讯享网cat /media/gpio 
root@linux:~# cat /media/gpio GPIOs 0-31, platform/pinctrl, gpio0: gpio-1 ( |vbus-5v ) out hi gpio-4 ( |sysfs ) out hi gpio-6 ( |gpio_num ) in lo gpio-8 ( |gpio_num ) out hi gpio-9 ( |fan-gpio ) out lo gpio-10 ( |sysfs ) out hi gpio-11 ( |sysfs ) out hi gpio-12 ( |gpio_num ) out hi gpio-13 ( |headset_gpio ) in lo 

左边一列为gpio管脚,右边列为驱动名称,如果右边驱动列不为? 那么可以根据驱动名称去查找 gpio被哪个驱动占用;

测试:可以先查看驱动占用GPIO状态

讯享网root@localhost:~# cat /media/gpio 

将导出的 GPIO8 引脚删除


讯享网

root@localhost:~# echo 8 > /sys/class/gpio/unexport 

再次查看驱动占用GPIO状态

讯享网root@localhost:~# cat /media/gpio GPIOs 0-31, platform/pinctrl, gpio0: gpio-1 ( |vbus-5v ) out hi gpio-4 ( |sysfs ) out hi gpio-5 ( |bt_default_wake_host) in lo gpio-6 ( |gpio_num ) in lo gpio-9 ( |fan-gpio ) out lo gpio-10 ( |sysfs ) out lo gpio-11 ( |sysfs ) out hi gpio-12 ( |gpio_num ) out hi gpio-13 ( |headset_gpio ) in lo 

GPIO8解除占用

mount -t debugfs debugfs /sys/kernel/debug cat /sys/kernel/debug/gpio 

使用完成

讯享网root@localhost:~# umount debugfs 

参考连接https://blog.csdn.net/zhefan5696/article/details/

小讯
上一篇 2025-03-16 10:35
下一篇 2025-02-15 14:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/123910.html