реклама на сайте
подробности

 
 
> Управление GPIO на Linux
vgovseychuk
сообщение Jan 21 2016, 08:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-03-14
Пользователь №: 80 955



Добрый день!

Меня интересует возможность управления gpio из linux.
По идее GPIO сначала нужно экспортировать, но как узнать, какой пин нужно экспортировать? Например, я хочу вывести 1 на 28-ой пин 3-его порта. При этом не хочется помнить, что GPIO3.28 - это включение питания USB.
Нельзя ли как-то дать понять системе, например через dts, что этот пин занят юзером и дать к нему доступ сразу, задав к тому же прерывания от этого пина или дефолтное состояние?

Ну и код dts для примера. Led-ы работают сразу через /sys/class/leds , а вот gpio нет.
Код
    gpio {
        compatible = "mygpio";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio_pins_3V3>;
        gpio_USBHOST_VCCEN {
            label = "usbvccen";
            gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
            default-state = "on";
        };
    };
    leds {
        compatible = "gpio-leds";
        pinctrl-names = "default";
        pinctrl-0 = <&leds_pins>;
        power {/* POWER */
            label = "power";
            gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
            default-state = "on";
        };
        status {/* ACT */
            label = "status";
            gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
            default-state = "on";
        };
    };

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alx2
сообщение Jan 22 2016, 09:27
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(vgovseychuk @ Jan 21 2016, 14:34) *
По идее GPIO сначала нужно экспортировать, но как узнать, какой пин нужно экспортировать?
shamrel в-основном уже ответил(а), а я дополню, что номер gpio, которому соответствует ваш пин, может быть разным в разных версиях линукса. Я наступил на эти грабли, когда после апгрейда линукса устройство перестало работать - оказалось, что вся нумерация сдвинулась на 32. Сейчас в программе стоит проверка версии ядра.

Цитата(vgovseychuk @ Jan 21 2016, 14:34) *
Например, я хочу вывести 1 на 28-ой пин 3-его порта. При этом не хочется помнить, что GPIO3.28 - это включение питания USB.
Нельзя ли как-то дать понять системе, например через dts, что этот пин занят юзером и дать к нему доступ сразу, задав к тому же прерывания от этого пина или дефолтное состояние?
Как Вам вариант сделать это в инит-скрипте? Пропишите там
Код
echo 96 >/sys/clagg/gpio/export
... и т.д. ...
и будет ваш пин экспортироваться и настраиваться сразу при старте вашего устройства...
Про прерывание я не понял. Что за прерывание может быть от сигнала включения питания USB, если это выход, и ваша программа сама выдает в него сигналы? Какого рода события на этом пине Вы ожидаете?

И уж если Вы непременно хотите, чтобы при старте линукса пин сразу оказывался доступен без каких-либо дополнительных действий, что мешает объявить его как LED и работать с ним через /sys/class/leds, раз уж Вы говорите, что
Цитата(vgovseychuk @ Jan 21 2016, 14:34) *
Led-ы работают сразу через /sys/class/leds , а вот gpio нет.



--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016