无法导出特定的 GPIO 引脚。如何查看GPIO引脚的用途以及如何访问寄存器?

无法导出特定的 GPIO 引脚。如何查看GPIO引脚的用途以及如何访问寄存器?

我使用 i.mx6 板 (yocto(jethro)) 并配置设备树。我更改了一个 dts 文件并将 dtb 文件放在启动分区中。我在 dts 文件中设置 GPIO4_IO19 如下。

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-evk {
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
...
MX6UL_PAD_CSI_VSYNC__GPIO4_IO19 0x0000B0B0
...
>;
};
...

起初 MX6UL_PAD_CSI_VSYNC__GPIO4_IO19 是在其他组(usdhcgrp)中定义的,但我注释掉了它们。

启动后,我检查gpio是否按照我的设置成功确定。结果是

echo 115 > /sys/class/gpio/export
-sh: echo: write error: Device or resource busy

所以我检查了这个。

cat /sys/kernel/debug/gpio

    GPIOs 0-31, platform/209c000.gpio, 209c000.gpio:
    gpio-10 (phy-reset ) out lo
    GPIOs 32-63, platform/20a0000.gpio, 20a0000.gpio:
    GPIOs 64-95, platform/20a4000.gpio, 20a4000.gpio:
    gpio-68 (ft5x06_irq_gpio ) in hi
    GPIOs 96-127, platform/20a8000.gpio, 20a8000.gpio:
    gpio-109 (? ) out lo
    gpio-115 (cd ) in lo
    gpio-116 (? ) out lo
    gpio-117 (? ) out lo
    gpio-118 (sysfs ) in hi
    GPIOs 128-159, platform/20ac000.gpio, 20ac000.gpio:
    gpio-128 (phy-reset ) out lo

cd使用gpio-115。也许这意味着卡检测。我想用它作为 sysfs 来读取状态。还有其他方式阅读吗?此外,gpio-10、68、109、116、117被其他设备使用。我如何通过 sysfs 使用它们?

我想我需要做的是检查寄存器是否正确设置值。如果寄存器值与我设置的不同,我猜测其他进程设置了引脚控制。但是我不知道访问寄存器的方式。

我对gpio115的了解如下

 mux_reg address: 0x01DC and the value.
 conf_reg address: 0x0468 and the value.
 input_reg address: 0x0000 and the value.

与其他 GPIO 相同。

如何访问 0x01DC 然后获取 linux(yocto) 中的值?

谢谢您的合作。

答案1

如果您只想知道引脚的状态,它已经在 /sys/kernel/debug/gpio 中呈现给您

gpio-115 (cd ) in lo

它被配置为输入,并且当前值较低,如果您在插槽中插入/取出卡,该值将会改变!

如果您确实想要或需要直接访问寄存器值,请尝试检查实用程序 devregs!

相关内容