Brise
임베디드 리눅스 GPIO 제어 방법 본문
리눅스에서 GPIO 제어 방법은 리눅스 커널 버전, 사용하는 하드웨어 플랫폼 및 개발 보드에 따라 다를 수 있습니다. 여기에는 일반적인 방법을 설명합니다.
- 리눅스 커널 버전 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
리눅스 커널 버전 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"로 설정합니다.
리눅스 커널 버전 3.18 이하 (GPIO sysfs 인터페이스)
이전 버전의 리눅스 커널에서는 /sys/class/gpio 인터페이스를 사용하여 GPIO 핀을 제어할 수 있습니다.
그러나 이 인터페이스는 커널 버전 4.8 이상에서는 더 이상 사용되지 않으며, sysfs 인터페이스 대신 chardev 인터페이스를 사용해야 합니다.
'Linux' 카테고리의 다른 글
vim 사용법 간단정리 (0) | 2023.04.13 |
---|---|
cmake x86->arm cross compile script (0) | 2023.01.19 |
Ubuntu 22.04에서 build-essential 설치 문제 해결하기 (0) | 2023.01.14 |
커널 구조 및 추적 교육 자료 (0) | 2022.06.21 |
Ubuntu 20.04 LTS에서 VS code 설치하기 (0) | 2020.10.24 |
Linux build- (Beagle Bone Black) (0) | 2020.10.19 |
콘솔모드 한글 입력 방법 (0) | 2020.03.13 |