GPIO Linux (обновлено: 21 Feb 2022, 14:39:47)

Поддержка работы с локальными GPIO в Linux приложении. Документация актуальна для всех опций, использующих GPIO.

По умолчанию для работы с GPIO используется метод через sysfs - это когда настройка и управление GPIO идет через папки и файлы в файловой системе ОС Linux. Это очень медленный способ управления. Подойдет только для управления реле или другими не требующими скорости задачами. Некоторые опции могут просто не заработать или сильно тормозить задачи в ПО. Работа с аппаратными интерфейсами SPI, I2C, UART на данный момент происходит так же через sysfs - это не влияет на скорость их работы.

Более скоростной способ управления GPIO - прямой доступ через память. Это индивидуальная настройка под каждый чип. Метод доступен пока только на Rapberry и Orange миникомпьютерах. Способ так же позволяет работать с ШИМ выводами.


Переназначение локальных GPIO(включается в шестеренке)

Опция переназначения gpio используется, если номера системных GPIO имеют слишком большие номера с разбросом. В проекте же номера локальных GPIO должны быть в диапазоне от 0 до установленного значения в шестеренке. Большое число уменьшает свободные GPIO для других опций.

Опция удобна для назначения своей удобной нумерации указанной на корпусе изделия. 

Для переназначения GPIO требуется создать файл в папке приложения под именем gpiomap.cfg. При отсутствии файла нумерация будет иметь стандартный вид. Изменения в файле применяются при запуске/перезапуске приложения.

В каждой новой строчке необходимо задать соответствие номеров GPIO в приложении и системные номера GPIO через знак равно. Дополнительно можно через знак равно добавить режим работы GPIO - INPUT или OUTPUT

Пример:

0=452
1=453=INPUT
2=469=OUTPUT
3=470=OUTPUT
4=471=OUTPUT
5=472=OUTPUT
Такие номера используются в контроллере jethome - их нумерация выходит за возможные в приложении.