Работа с GPIO: различия между версиями
Строка 51: | Строка 51: | ||
Различия между ''chardev'' и ''sysfs'' хорошо описаны в [https://embeddedbits.org/new-linux-kernel-gpio-user-space-interface/ этой статье]. Sysfs имеет статус deprecated, поэтому, по возможности, <u>стоит работать через chardev</u>. | Различия между ''chardev'' и ''sysfs'' хорошо описаны в [https://embeddedbits.org/new-linux-kernel-gpio-user-space-interface/ этой статье]. Sysfs имеет статус deprecated, поэтому, по возможности, <u>стоит работать через chardev</u>. | ||
===Работа через chardev=== | |||
Представленный в ядре 4.8 интерфейс chardev имеет C/Python библиотеку ''libgpiod'' и userspace-утилиты для работы с gpio. Исходный код библиотеки и документация доступны в [https://github.com/brgl/libgpiod репозитории libgpiod]. | |||
Утилиты распространяются в составе debian-пакетов ''gpiod'' и ''libgpiod-dev'' для debian buster и новее. К сожалению, '''для stretch пакетов в официальных репозиториях нет'''. | |||
Если нужно установить libgpiod в debian stretch, можно воспользоваться сторонними репозиториями (например, [https://github.com/rcn-ee/repos этим]). '''Используйте сторонние репозитории на свой страх и риск; компания WirenBoard не контролирует их содержимое'''. | |||
Для работы с gpio из bash в пакете ''gpiod'' поставляются следующие утилиты: | |||
* <code>gpiodetect</code> — информация обо всех банках gpio в системе | |||
* <code>gpioinfo</code> — подробная информация обо всех линиях gpio определённого банка | |||
* <code>gpioget <чип> <линия></code> — возвращает значение определённого gpio | |||
* <code>gpioset <чип> <линия1>=<значение1> <линия2>=<значение2></code> — устанавливает состояние на определенные линии gpio | |||
* <code>gpiofind <название></code> — возвращает номер gpio | |||
* <code>gpiomon</code> — отслеживание событий gpio | |||
Примеры использования gpiod можно посмотреть в [https://www.acmesystems.it/gpiod] и [https://github.com/brgl/libgpiod] | |||
===Интерфейс sysfs=== | ===Интерфейс sysfs=== | ||
Строка 157: | Строка 175: | ||
См. также [http://elinux.org/GPIO elinux.org] | См. также [http://elinux.org/GPIO elinux.org] | ||
==Python== | ==Python== |