wb_editors
556
правок
Vdromanov (обсуждение | вклад) |
Vdromanov (обсуждение | вклад) |
||
Строка 67: | Строка 67: | ||
'''Остановка драйверов может привести к неожиданному поведению контроллера'''. Желаемый gpio свободен до следующей перезагрузки. | '''Остановка драйверов может привести к неожиданному поведению контроллера'''. Желаемый gpio свободен до следующей перезагрузки. | ||
== | ==Работа из Bash==<!--T:6--> | ||
<!--T:7--> | <!--T:7--> | ||
В настоящий момент, для работы с gpio в userspace доступны 2 интерфейса: ''sysfs'' и ''chardev'' (начиная с версии ядра 4.8). | |||
<!--T:7--> | |||
Различия между ''chardev'' и ''sysfs'' хорошо описаны в [https://embeddedbits.org/new-linux-kernel-gpio-user-space-interface/ этой статье]. Sysfs имеет статус deprecated, поэтому, по возможности, стоит работать через chardev. | |||
===Интерфейс sysfs===<!--T:6--> | |||
<!--T:8--> | <!--T:8--> | ||
Строка 157: | Строка 162: | ||
#:<pre>root@wirenboard:~# echo 0 > /sys/class/gpio/gpio32/value</pre> | #:<pre>root@wirenboard:~# echo 0 > /sys/class/gpio/gpio32/value</pre> | ||
===Работа с прерываниями===<!--T:22--> | ====Работа с прерываниями====<!--T:22--> | ||
<!--T:23--> | <!--T:23--> | ||
Строка 191: | Строка 196: | ||
См. также [http://elinux.org/GPIO elinux.org] | См. также [http://elinux.org/GPIO elinux.org] | ||
==Работа через | ===Работа через chardev===<!--T:29--> | ||
Представленный в ядре 4.8 интерфейс chardev имеет C/Python библиотеку libgpiod и userspace-утилиты для работы с gpio. Исходный код библиотеки и документация доступны в [https://github.com/brgl/libgpiod репозитории libgpiod]. | |||
<!--T:28--> | |||
Утилиты распространяются в составе debian-пакетов ''gpiod'' и ''libgpiod-dev'' для debian buster и новее. К сожалению, для stretch пакетов в репозитории и бекпортах нет. | |||
<!--T:28--> | |||
Если нужно установить libgpiod в debian stretch, можно воспользоваться сторонними репозиториями (например, [https://github.com/rcn-ee/repos этим]). '''Используйте сторонние репозитории на свой страх и риск; компания WirenBoard не контролирует их содержимое'''. | |||
==Работа из python==<!--T:29--> | ===Работа из python===<!--T:29--> | ||
Для управления gpio из python был написан модуль wb_common.gpio, представляющий собой обёртку вокруг sysfs. Исходный код доступен [https://github.com/wirenboard/wb-common/blob/master/wb_common/gpio.py на нашем github.] | Для управления gpio из python был написан модуль wb_common.gpio, представляющий собой обёртку вокруг sysfs. Исходный код доступен [https://github.com/wirenboard/wb-common/blob/master/wb_common/gpio.py на нашем github.] |