Brise

임베디드 리눅스 GPIO 제어 방법 본문

Linux

임베디드 리눅스 GPIO 제어 방법

naudhizb 2023. 5. 8. 21:43
반응형

리눅스에서 GPIO 제어 방법은 리눅스 커널 버전, 사용하는 하드웨어 플랫폼 및 개발 보드에 따라 다를 수 있습니다. 여기에는 일반적인 방법을 설명합니다.

  1. 리눅스 커널 버전 4.8 이상 (sysfs 인터페이스)

GPIO 디바이스 드라이버가 로드된 후 /sys/class/gpio 디렉토리가 생성됩니다.
이 디렉토리에서 GPIO 핀을 제어할 수 있습니다.
GPIO 핀을 제어하려면 관련된 디바이스를 export해야 합니다.
예를 들어, GPIO 17을 export 하려면 다음 명령어를 실행합니다.

echo 17 > /sys/class/gpio/export

GPIO를 출력 모드로 설정하려면 direction 파일에 "out"을 쓰고, 입력 모드로 설정하려면 "in"을 쓰면 됩니다.
예를 들어, GPIO 17을 출력 모드로 설정하려면 다음 명령어를 실행합니다.

echo out > /sys/class/gpio/gpio17/direction

출력 모드에서 GPIO 핀을 제어하려면 value 파일에 "1" 또는 "0"을 쓰면 됩니다.
예를 들어, GPIO 17을 "1"로 설정하려면 다음 명령어를 실행합니다.

echo 1 > /sys/class/gpio/gpio17/value
  1. 리눅스 커널 버전 4.1 이상 (GPIO chardev 인터페이스)
    GPIO 디바이스 드라이버가 로드된 후 /dev/gpiochipX 파일이 생성됩니다. 여기서 X는 GPIO 컨트롤러 번호입니다.
    이 인터페이스를 사용하여 GPIO 핀을 제어할 수 있습니다.
    GPIO 핀을 제어하려면 해당 GPIO 컨트롤러에서 GPIO 핀의 offset을 얻어야 합니다.
    예를 들어, GPIO 17이 연결된 컨트롤러에서의 offset이 17인 경우, 다음 명령어를 사용하여 GPIO 핀의 값을 설정할 수 있습니다.

    echo 1 > /dev/gpiochip0 0x11
    

    위의 예제는 0번 GPIO 컨트롤러에 연결된 GPIO 17을 "1"로 설정합니다.

  2. 리눅스 커널 버전 3.18 이하 (GPIO sysfs 인터페이스)
    이전 버전의 리눅스 커널에서는 /sys/class/gpio 인터페이스를 사용하여 GPIO 핀을 제어할 수 있습니다.
    그러나 이 인터페이스는 커널 버전 4.8 이상에서는 더 이상 사용되지 않으며, sysfs 인터페이스 대신 chardev 인터페이스를 사용해야 합니다.

반응형
Comments