TI中文支持网
TI专业的中文技术问题搜集分享网站

AM625: 查询input的GPIO状态

Part Number:AM625

你好:

在系统中配置了input子系统的引脚如何查询输入状态,使用echo >export 出现busy

Gary Lu:

看样子是引脚被其他进程占用或被锁定了

,

hao teng:

对的,想问一下,这种在其他驱动中已经绑定的输入引脚,有什么办法查询状态么?

,

Gary Lu:

1. 打开终端,输入以下命令查看已经绑定的引脚:

ls /sys/class/gpio/

2. 找到您需要查询状态的引脚,进入该引脚所在的目录,例如引脚编号为GPIO1_23:

cd /sys/class/gpio/gpio23

3. 读取该引脚的值,即可查询其状态:

cat value

该命令会返回引脚当前的输入状态,如果返回 0 表示引脚处于低电平状态,返回 1 表示引脚处于高电平状态

,

hao teng:

/sys/class/gpio/中没有相应的编号,也无法通过echo到export,也会显示busy

,

hao teng:

,

Gary Lu:

应该是文件正在被写入或读取

,

Gary Lu:

权限问题,用sudo来执行相关的命令试一下

,

hao teng:

系统中被设备树配置的GPIO还是无法export

,

Gary Lu:

已给您咨询了资深产品线工程师,这需要一些时间

,

Gary Lu:

您使用的是哪个SDK版本?请注意,在SDK 9.0中不支持使用SYSFS进行GPIO访问。

你能确认这个GPIO引脚没有被其他外设使用吗?

能否共享“gpioinfo 1”的输出?

,

Gary Lu:

检查需要哪个文件的还有一种方法是反编译dtb文件,查看所做的更改是否被反映出来

,

hao teng:

使用的SDK8.6版本的SDK,引脚是绑定在input子系统中被设备树调用,但是在linux中想通过sys/class中进行查看。

,

Gary Lu:

已跟进

,

Gary Lu:

我知道的明确检查GPIO引脚方向的唯一方法是使用带有“cat direction”的Sysfs。我认为它不会工作,因为gpio-498没有导出。

/sys/class/gpio目录下“ls”的输出是什么?

498似乎指向MCU_GPIO0_12。这个信号是由另一个信号使用的吗?

,

hao teng:

在sys/class/gpio下ls输出,如上回复图中所显示的只有chip311,399,486,510,更多的chip需要echo number > expext,但是被占用的引脚显示busy

引脚正被设备树按键驱动所绑定使用,想通过value 直接查看输入状态。

,

Gary Lu:

已跟进

,

Gary Lu:

您能进一步重述您的问题吗?

我理解,导出是不可能的,因为引脚正在被一个驱动程序或由引脚显示繁忙指示的其他资源使用。

GPIO的方向和值可以在/sys/kernel/debug/ GPIO中看到。用“in/out”表示方向,用“hi/lo”表示值。这是您要找的吗?

,

hao teng:

在我以往的提问中,了解到配置为output的引脚通过/sys/kernel/debug/ GPIO查询的值是不确定的,那配置为input的引脚可以通过这个查询到确切的值么,如绑定到input子系统的中断引脚,input的value是否可以通过sys/kernel/debug/ GPIO查询到实时的值。

,

Gary Lu:

hao teng 说:那配置为input的引脚可以通过这个查询到确切的值么

这是GPIO Sysfs的文档:https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

这是GPIO Consumer Interface的文档:https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/driver-api/gpio/consumer.rst?h=ti-linux-6.1.y-cicd

在我看来,这是不可能的。

有关更多信息:https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/driver-api/gpio?h=ti-linux-6.1.y-cicd

,

hao teng:

GPIO的方向和值可以在/sys/kernel/debug/ GPIO中看到。用“in/out”表示方向,用“hi/lo”表示值。这是您要找的吗?

在/sys/kernel/debug/ GPIO中看到的hi/lo是初始化的值,还是实时的值。

,

Gary Lu:

已跟进

,

Gary Lu:

hao teng 说:在/sys/kernel/debug/ GPIO中看到的hi/lo是初始化的值,还是实时的值

在用户或驱动程序更改pin属性之前,它应该是一个初始化值。

,

hao teng:

/sys/kernel/debug/ GPIO中看到的,仅仅代表设备树中配置的,是否可以这么理解

,

Gary Lu:

已跟进

,

Gary Lu:

我仍然没有找到任何支持您正在寻找的内容的文档。

这是驱动程序接口的文档:https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/driver-api/gpio/driver.rst?h=ti-linux-6.1.y-cicd

这表明该引脚已被锁定。您还可以在之前的帖子中查看其他文档。

一些替代审查方法是使用 Chardev 接口(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1260373/faq-transitioning-the-gpio-userspace-interface-from-sysfs-to-chardev)或 TI GPIO Py 库(https://github.com/TexasInstruments/ti-gpio-py)附:(如果它支持您的SDK版本的话)

,

hao teng:

/sys/kernel/debug/ GPIO中看到的,仅仅代表设备树中配置的,是否可以这么理解

请问这个是否可以这么理解

,

Gary Lu:

是的 可以这样理解

,

hao teng:

系统启动后input引脚状态值改变,/sys/kernel/debug/ GPIO中看到的状态也是不会改变?

,

Gary Lu:

已跟进

赞(0)
未经允许不得转载:TI中文支持网 » AM625: 查询input的GPIO状态
分享到: 更多 (0)