Unable to export specific gpio pins. Как проверить, что использует пины GPIO и как получить доступ к регистру?

Я использую плату i.mx6 (yocto(jethro)) и настраиваю дерево устройств. Я изменил файл dts и поместил файл dtb в загрузочный раздел. Я настроил GPIO4_IO19 в dts файле следующим образом.

&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

gpio-115 используется cd. Возможно, это означает обнаружение карты. Я хочу использовать его как 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)?

Спасибо за сотрудничество.

0
08.09.2017, 05:23
1 ответ

Если вы просто хотите узнать состояние пина, оно уже представлено вам в /sys/kernel/debug/gpio

gpio-115 (cd ) in lo

Он сконфигурирован как вход, и текущее значение низкое, Это изменится, если вы вставите/вытащите карту из слота!

Если вы действительно хотите или нуждаетесь в прямом доступе к значению регистра, попробуйте проверить утилиту devregs!

0
28.01.2020, 04:40

Теги

Похожие вопросы