gpioset: GPIO 라인 값 설정 오류: 장치 또는 리소스가 사용 중입니다.

gpioset: GPIO 라인 값 설정 오류: 장치 또는 리소스가 사용 중입니다.

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

마커 usedDevice 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 명령을 사용해야 합니다.

관련 정보