
Estou usando Linux em minha placa embarcada SAMA5D27. Também estou usando o libgpiod para manipular as configurações GPIO da placa. Primeiro, posso listar todas as linhas dos gpiochips especificados, seus nomes, consumidores, direção, estado ativo com gpioinfo
comando, e isso me mostra:
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
...
Para o meu trabalho, quero reservar "PA10" para nós pessoais; este pino refere-se a um LED vermelho. Mas qualquer que seja o comando usado para manipular este pino GPIO, ele me mostra:
error setting the GPIO line values: Device or resource busy
Acho que é porque é mostrado como [used]
.
Existe uma maneira de torná-lo não utilizado? Para liberá-lo para que eu possa manipulá-lo?
Responder1
O used
marcador e Device or resource busy
significa que este pino de E/S foi reivindicado para uso exclusivo por um driver.
Existem algumas maneiras de descobrir o que pode estar usando o pin:
- Check
/sys/class/gpio/gpio*/
(agora obsoleto, mas ainda usado com frequência) - Verifique
/sys/kernel/debug/gpio
(se tiverdebugfs
disponível e montado) - Revise sua árvore de dispositivos ativos para ver se o PIN está associado a um dispositivo ou driver
É nomeado red
aqui e você mencionou que é um LED, então pode ser exposto em /sys/class/leds/*
, possivelmente com um gatilho padrão? Nesse caso, você pode reajustá-lo modificando o gatilho ou cancelar o registro como um LED se quiser controlar manualmente o pino de forma mais direta/com libgpiod... editar a árvore de dispositivos provavelmente seria a maneira de tornar a mudança permanente .
Responder2
"Usado" significa que este pino está conectado a um dispositivo periférico ou barramento. Você pode verificar no arquivo dts da árvore de dispositivos do kernel e no esquema da placa para ver qual deles está mapeado para este pino. Por exemplo, se o pino estiver conectado ao barramento i2c, você deve usar o comando i2c em vez do gpio cmd.