저는 Ubuntu 18.04가 설치된 up2board와 전용 커널을 가지고 있어 LED와 같은 보드의 특정 하드웨어를 사용할 수 있습니다. 이 LED를 켜려면 다음 명령을 사용합니다.
$ sudo -i
$ cd /sys/class/gpio
$ echo 432 > export
$ cd gpio432
$ echo "out" > direction
$ echo 1 > value
이제 저는 두 가지를 알아내고 싶습니다.
echo 1 > value
명령이 사용자 공간에서 드라이버로 전파되는 방식 .이 LED 지원을 담당하는 드라이버를 찾는 방법.
답변1
아주 간단하게:
의 항목은 /sys
실제 파일이 아닙니다. 이러한 유형의 마운트는 sysfs
커널에서 커널의 다른 부분이 스스로 등록할 수 있는 API에 해당합니다. 그런 다음 해당 파일 시스템의 "파일"을 읽거나 쓸 때 sysfs는 이러한 작업을 등록된 모듈에 전달합니다.
gpio
커널(범용 I/O) 계층은 다시 다른 드라이버가 등록할 수 있는 추상화 계층입니다. 일반적으로 이는 GPIO 레지스터 자체가 있는 칩 또는 칩셋용 드라이버입니다. 이러한 칩의 GPIO 핀이 배선되는 방식은 하드웨어에 따라 다릅니다.
자세한 내용은 Documentation/gpio/gpio.txt
커널 소스 코드 등에서 확인할 수 있습니다.
드라이버를 식별하는 한 가지 방법은 ll gpio432
gpio 노드를 생성한 후 심볼릭 링크를 살펴보는 것입니다. 이는 GPIO 레지스터가 있는 칩/칩셋이 있는 장치를 가리킵니다. 그런 다음 장치의 드라이버를 찾으십시오.
dmesg
또 다른 접근 방식은 GPIO를 등록할 때 드라이버가 메시지를 생성하는지 확인하는 것입니다 .
아마도 이 정보는 를 통해서도 접근할 수 있을 것입니다 udevadm
.