
Estoy usando Linux en mi placa integrada SAMA5D27. También estoy usando libgpiod para manipular las configuraciones GPIO de la placa. Primero, puedo enumerar todas las líneas de gpiochips especificados, sus nombres, consumidores, dirección, estado activo con gpioinfo
comando, y esto me muestra:
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 mi trabajo, quiero reservar "PA10" para nosotros personalmente; este pin se refiere a un LED rojo. Pero cualquier comando usado para manipular este pin GPIO me muestra:
error setting the GPIO line values: Device or resource busy
Creo que eso se debe a que se muestra como [used]
.
¿Hay alguna manera de dejarlo sin usar? ¿Para hacerlo libre para poder manipularlo?
Respuesta1
El used
marcador y Device or resource busy
significa que este pin de E/S ha sido reclamado para uso exclusivo por parte de un controlador.
Hay algunas formas de profundizar en lo que podría estar usando el pin:
- Verificar
/sys/class/gpio/gpio*/
(ahora obsoleto, pero todavía se usa con frecuencia) - Consultar
/sys/kernel/debug/gpio
(si lo tienesdebugfs
disponible y montado) - Revise su árbol de dispositivos activos para ver si el pin está asociado con un dispositivo o controlador
Se nombra red
aquí y mencionaste que es un LED, por lo que podría exponerse en /sys/class/leds/*
, ¿posiblemente con un disparador predeterminado? Si es así, puede reutilizarlo modificando el disparador o cancelar su registro como LED si desea controlar manualmente el pin de manera más directa/con libgpiod... editar el árbol de dispositivos probablemente sería la forma de hacer que el cambio sea permanente. .
Respuesta2
"Usado" significa que este pin está conectado a un dispositivo periférico o a un bus. Puede consultar el archivo dts del árbol de dispositivos del kernel y el esquema de la placa para ver cuál está asignado a este pin. Por ejemplo, si el pin está conectado al bus i2c, deberá utilizar el comando i2c en lugar de gpio cmd.