
Я использую 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.