Работа с GPIO: различия между версиями

Нет описания правки
Строка 204: Строка 204:
<!--T:28-->
<!--T:28-->
Если нужно установить libgpiod в debian stretch, можно воспользоваться сторонними репозиториями (например, [https://github.com/rcn-ee/repos этим]). '''Используйте сторонние репозитории на свой страх и риск; компания WirenBoard не контролирует их содержимое'''.
Если нужно установить libgpiod в debian stretch, можно воспользоваться сторонними репозиториями (например, [https://github.com/rcn-ee/repos этим]). '''Используйте сторонние репозитории на свой страх и риск; компания WirenBoard не контролирует их содержимое'''.
<!--T:28-->
Для работы с gpio из bash в пакете ''gpiod'' поставляются следующие утилиты:
* gpiodetect - информация обо всех банках gpio в системе
* gpioinfo - подробная информация обо всех линиях gpio определённого банка
* gpioget <чип> <линия> - возвращает значение определённого gpio
* gpioset <чип> <линия1>=<значение1> <линия2>=<значение2> - устанавиливает состояние на определенные линии gpio
* gpiofind <название> - возвращает номер gpio
* gpiomon - отслеживание событий gpio
<!--T:28-->
Примеры использования gpiod можно посмотреть в [https://www.acmesystems.it/gpiod] и [https://github.com/brgl/libgpiod]


===Работа из python===<!--T:29-->
===Работа из python===<!--T:29-->


<!--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.]


Модуль позволяет работать с gpio в синхронном и асинхронном (с регистрацией коллбэков) режимах.
Модуль позволяет работать с gpio в синхронном и асинхронном (с регистрацией коллбэков) режимах.


==Прямое обращение через память процессора==<!--T:29-->
===Прямое обращение через память процессора===<!--T:29-->


<!--T:30-->
<!--T:30-->
<b>Этот метод настоятельно НЕ РЕКОМЕНДУЕТСЯ для использования без достаточных оснований. Для работы из С/C++ стоит использовать работу через файлы в sysfs, как описано в предыдущем разделе</b>.
<b>Этот метод настоятельно НЕ РЕКОМЕНДУЕТСЯ для использования без достаточных оснований. Для работы из С/C++ стоит использовать работу через файлы в sysfs или chardev, как описано в предыдущих разделах</b>.


<!--T:31-->
<!--T:31-->
Строка 226: Строка 239:
=Работа из ядра Linux=<!--T:44-->
=Работа из ядра Linux=<!--T:44-->


===GPIO и Device Tree=== <!--T:33-->
===Рекомендации по Device Tree=== <!--T:33-->


<!--T:5-->
<!--T:5-->
wb_editors
556

правок