
SAMA5D27 임베디드 보드에서 Linux를 사용하고 있습니다. 또한 보드의 GPIO 구성을 조작하기 위해 libgpiod를 사용하고 있습니다. 먼저, 명령을 사용하여 지정된 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"을 개인용으로 예약하고 싶습니다. 이 핀은 빨간색 LED를 나타냅니다. 하지만 이 GPIO 핀을 조작하는 데 사용된 명령이 무엇이든 다음과 같이 표시됩니다.
error setting the GPIO line values: Device or resource busy
으로 표시되기 때문인 것 같습니다 [used]
.
사용하지 않게 하는 방법이 있나요? 내가 조작할 수 있도록 무료로 만들려면?
답변1
마커 used
는 Device or resource busy
이 I/O 핀이 드라이버에 의해 독점적으로 사용되었음을 의미합니다.
핀을 사용하는 것이 무엇인지 조사하는 몇 가지 방법이 있습니다.
- 확인
/sys/class/gpio/gpio*/
(현재는 더 이상 사용되지 않지만 여전히 자주 사용됨) - 확인
/sys/kernel/debug/gpio
(사용debugfs
가능하고 마운트된 경우) - 활성 장치 트리를 검토하여 핀이 장치 또는 드라이버와 연결되어 있는지 확인하세요.
여기에 이름이 지정되어 red
있고 LED라고 말씀하셨는데, /sys/class/leds/*
기본 트리거를 사용하여 아래에 노출될 수 있다고 말씀하셨죠? 그렇다면 트리거를 수정하여 용도를 변경하거나 libgpiod를 사용하여 핀을 보다 직접적으로 제어하려는 경우 LED로 등록을 취소할 수 있습니다. 장치 트리를 편집하면 변경 사항을 영구적으로 만드는 방법이 될 수 있습니다. .
답변2
"사용됨"은 이 핀이 주변 장치나 버스에 연결되어 있음을 의미합니다. 커널 장치 트리 dts 파일 및 보드 회로도에서 어떤 항목이 이 핀에 매핑되어 있는지 확인할 수 있습니다. 예를 들어 핀이 i2c 버스에 연결된 경우 gpio cmd 대신 i2c 명령을 사용해야 합니다.