Найти в Дзене
Forlinx Embedded

Как управлять GPIO на OK3568-C с помощью libgpiod (Buildroot Linux 4.19.206)

В этом руководстве описывается, как управлять GPIO с помощью библиотеки libgpiod в Buildroot (Linux 4.19.206). Основанная на процессоре Rockchip RK3568 , плата поддерживает современное управление GPIO через интерфейсы символьных устройств, заменяя устаревший метод sysfs. Libgpiod — это API пользовательского пространства для библиотеки драйверов GPIO (General-Purpose Input/Output) ядра Linux. Он предоставляет простой способ управления линиями GPIO в системах Linux, которые обычно подключаются к цифровым портам ввода/вывода на аппаратных устройствах, таких как светодиоды, кнопки и т. д. С помощью libgpiod приложения могут легко открывать, читать, записывать и настраивать состояние линии GPIO для работы с аппаратными устройствами и поддержки кроссплатформенного программирования. Начиная с Linux 4.8, интерфейс GPIO sysfs устарел. Пользовательское пространство должно использовать libgpiod для взаимодействия с символьным устройством GPIO. Откройте графический интерфейс конфигурации Buildroot
Оглавление

В этом руководстве описывается, как управлять GPIO с помощью библиотеки libgpiod в Buildroot (Linux 4.19.206). Основанная на процессоре Rockchip RK3568 , плата поддерживает современное управление GPIO через интерфейсы символьных устройств, заменяя устаревший метод sysfs.

1. Описание GPIOD

Libgpiod — это API пользовательского пространства для библиотеки драйверов GPIO (General-Purpose Input/Output) ядра Linux. Он предоставляет простой способ управления линиями GPIO в системах Linux, которые обычно подключаются к цифровым портам ввода/вывода на аппаратных устройствах, таких как светодиоды, кнопки и т. д. С помощью libgpiod приложения могут легко открывать, читать, записывать и настраивать состояние линии GPIO для работы с аппаратными устройствами и поддержки кроссплатформенного программирования. Начиная с Linux 4.8, интерфейс GPIO sysfs устарел. Пользовательское пространство должно использовать libgpiod для взаимодействия с символьным устройством GPIO.

2. Открыть функцию GPIOD

Откройте графический интерфейс конфигурации Buildroot и проверьте следующие параметры.

-2

После регенерации и прошивки новой файловой системы откройте инструмент отладки платы разработки.

Плата разработки создала узел **/dev/gpioN**.

[root@ok3568:/dev]# ls gpio*
gpiochip0 gpiochip1 gpiochip2 gpiochip3 gpiochip4 gpiochip5

На данном этапе плата разработки поддерживает динамическую библиотеку **gpiod**.

[root@ok3568:/usr/lib]# ls libgpiod.so*
libgpiod.so libgpiod.so.0 libgpiod.so.0.3.2

3. Часто используемые команды GPIOD

3.1 gpiodetect выводит список всех контроллеров GPIO в системе.

[root@ok3568:/]# gpiodetect
gpiochip5 [rk817-gpio] (1 строк)
gpiochip4 [gpio4] (32 строки)
gpiochip3 [gpio3] (32 строки)
gpiochip2 [gpio2] (32 строки)
gpiochip1 [gpio1] (32 строки)
gpiochip0 [gpio0] (32 строки)

3.2 gpioinfo: Отображает информацию об устройстве GPIO.

[root@ok3568:/]# gpioinfo
gpiochip5 - 1 строки:
строка 0: безымянный неиспользуемый вход, активный-высокий
gpiochip4 - 32 строки:
строка 0: безымянный неиспользуемый вход, активный-высокий
строка 1: неназванный неиспользуемый вход, активный высокий уровень
строка 2: неназванный неиспользуемый вход, активный высокий уровень
строка 3: неназванный неиспользуемый вход, активный высокий уровень
строка 4: неназванный неиспользуемый вход, активный высокий уровень
строка 5: неназванный неиспользуемый вход, активный высокий уровень
строка 6: неназванный неиспользуемый вход, активный высокий уровень
строка 7: неназванный неиспользуемый вход, активный-высокий
строка 8: неназванный неиспользуемый вход, активный высокий уровень
строка 9: неназванный неиспользуемый вход, активный высокий уровень
строка 10: неназванный неиспользуемый выход, активный высокий уровень
строка 11: неназванный неиспользуемый вход, активный-высокий
строка 12: неназванный неиспользуемый вход, активный-высокий
строка 13: неназванный неиспользуемый вход, активный высокий уровень
строка 14: неназванный неиспользуемый вход, активный-высокий
строка 15: неназванный неиспользуемый вход, активный-высокий
строка 16: неназванный неиспользуемый вход, активный-высокий
...... //Выберите часть информации для печати

3.3 gpioget: Считывает вход GPIO:

[root@ok3568:/]# gpioget gpiochip4 0
1

3.4 gpioset: Устанавливает уровень GPIO

Тест работы команды на примере GPIO3\_A7.

Выход:

[root@ok3568:/sys/class/gpio]# gpioset gpiochip3 7=0 //Установите вывод на низкий уровень; в это время светодиод D6 на плате разработки горит.
[root@ok3568:/sys/class/gpio]# gpioset gpiochip3 7=1 //Установите вывод на высокий уровень; в это время светодиод D6 на плате разработки выключен.

Примечание: В отличие от традиционного sysfs, по умолчанию **gpioset** завершает работу сразу после установки уровня. Состояние GPIO в это время определяется оборудованием и может вести себя по-разному в разных продуктах.

Если требуется постоянный уровень выходного сигнала, укажите рабочий режим как **сигнал**, как показано в следующем примере.

[root@ok3568:/]# gpioset -m сигнал gpiochip0 0=1
//(Нажмите Ctrl+C, чтобы остановить)

3.5 gpiomon: Отслеживает события GPIO:

Тестовый вывод GPIO3\_C1.

[root@ok3568:/]# gpiomon gpiochip3 17
событие: RISING EDGE смещение: 17 метка времени: [1722306410.568497882] // Контакт подключен к источнику питания 3,3 В.
событие: FALLING EDGE смещение: 17 временная метка: [1722306410.568556216] // Контакт отключен от источника питания 3,3 В.
//(Нажмите Ctrl+C, чтобы остановить)

В этой статье представлено подробное введение в процесс управления GPIO на основе libgpiod на плате разработки OK3568, работающей под управлением системы Buildroot, охватывающее настройку среды, использование команд и важные замечания. Целью является предоставление проверенного практического руководства, которое позволяет инженерам быстро применять libgpiod для управления аппаратными линиями GPIO в реальной разработке.