Существует три типа записей в /sys/class/gpio: - Интерфейсы для управления пользовательскими GPIO; - Сами GPIO; - Порты ввода-вывода (gpio_chip). Интерфейсы управления работают только на запись по пути /sys/class/gpio/: "export" - запрашивает экспорт управления GPIO пользователю с записью его номера в файл. Например, "echo 19 > export" создаст файл gpio19. "unexport" - отменяет экспорт. Например, "echo 19 > unexport" удалит файл gpio19. Сигналы GPIO имеют пути /sys/class/gpio/gpioN/ (N - номер GPIO) и имеют атрибуты чтения/записи: "direction" - направление, может принимать зачения "in" (вход) или "out" (выход), обычно пишется. "value" - состояние, может принимать значение 0 (низкий) или 1 (высокий). Если GPIO настраивается на выход, это значение пишется. Ненулевое значение считается высоким. "edge" - реакция на изменение состояния, может принимать значения "none" (нет), "rising" (фронт), "falling" (спад) или "both"(перепад). "active_low" Инвертирование значения "value", может принимать значение 0 (нет) или 1 (да). Ненулевое значение считается единицей. Порты GPIO имеют пути /sys/class/gpio/gpiochipN/ (для порта GPIO начиная с вывода #N) и имеют атрибуты только для чтения: "base" номер первого GPIO управляемого портом. "label" предусмотрена диагностика (не всегда уникальная) "ngpio" сколько выводов GPIO управляется портом Код ядра может явно управлять экспортом GPIO, которые запрошены с помощью gpio_request(): /* экспорт GPIO для пользователя */ int gpiod_export(struct gpio_desc *desc, bool direction_may_change); /* обратный gpio_export() */ void gpiod_unexport(struct gpio_desc *desc); /* создание в sysfs пути на экспортированный указатель GPIO */ int gpiod_export_link(struct device *dev, const char *name, struct gpio_desc *desc);