gpioset: ошибка установки значений линии GPIO: Устройство или ресурс заняты

gpioset: ошибка установки значений линии GPIO: Устройство или ресурс заняты

Я использую Linux на моей встроенной плате SAMA5D27. Я также использую libgpiod для управления конфигурациями GPIO платы. Во-первых, я могу перечислить все линии указанных gpiochip, их имена, потребителей, направление, активное состояние с помощью gpioinfoкоманды, и это показывает мне:

gpiochip0 - 128 lines:
        line   0:        "PA0"       unused   input  active-high 
        line   1:        "PA1"       unused   input  active-high 
        line   2:        "PA2"       unused   input  active-high 
        line   3:        "PA3"       unused   input  active-high 
        line   4:        "PA4"       unused   input  active-high 
        line   5:        "PA5"       unused   input  active-high 
        line   6:        "PA6"       unused   input  active-high 
        line   7:        "PA7"       unused   input  active-high 
        line   8:        "PA8"       unused   input  active-high 
        line   9:        "PA9"       unused   input  active-high 
        line  10:       "PA10"        "red"  output  active-high [used]
        line  11:       "PA11"       unused   input  active-high 
...

Для моей работы я хочу зарезервировать "PA10" для личного пользования; этот пин относится к красному светодиоду. Но какая бы команда ни использовалась для управления этим пин GPIO, он мне показывает:

error setting the GPIO line values: Device or resource busy

Я думаю, это потому, что он показан как [used].

Есть ли способ сделать его неиспользуемым? Сделать его бесплатным, чтобы я мог им манипулировать?

решение1

Маркер usedи Device or resource busyозначают, что этот вывод ввода/вывода зарезервирован для исключительного использования драйвером.

Есть несколько способов выяснить, что может использовать пин-код:

  • Проверить /sys/class/gpio/gpio*/(теперь не рекомендуется, но часто все еще используется)
  • Проверьте /sys/kernel/debug/gpio(если есть debugfsв наличии и установлены)
  • Просмотрите дерево активных устройств, чтобы узнать, связан ли пин-код с устройством или драйвером.

Он назван redздесь, и вы упомянули, что это светодиод, поэтому он может быть представлен в /sys/class/leds/*, возможно, с триггером по умолчанию? Если так, вы можете переназначить его, изменив триггер, или отменить его регистрацию как светодиода, если вы хотите вручную управлять выводом более напрямую / с помощью libgpiod... редактирование дерева устройств, вероятно, будет способом сделать изменение постоянным.

решение2

"Используется" означает, что этот вывод подключен к периферийному устройству или шине. Вы можете проверить файл dts дерева устройств ядра и схему платы, чтобы узнать, какой из них сопоставлен с этим выводом. Например, если вывод подключен к шине i2c, вы должны использовать команду i2c вместо gpio cmd.

Связанный контент