사용자 공간 작업을 커널 코드와 연결

사용자 공간 작업을 커널 코드와 연결

저는 Ubuntu 18.04가 설치된 up2board와 전용 커널을 가지고 있어 LED와 같은 보드의 특정 하드웨어를 사용할 수 있습니다. 이 LED를 켜려면 다음 명령을 사용합니다.

$ sudo -i
$ cd /sys/class/gpio
$ echo 432 > export
$ cd gpio432
$ echo "out" > direction
$ echo 1 > value

이제 저는 두 가지를 알아내고 싶습니다.

  1. echo 1 > value명령이 사용자 공간에서 드라이버로 전파되는 방식 .

  2. 이 LED 지원을 담당하는 드라이버를 찾는 방법.

답변1

아주 간단하게:

의 항목은 /sys실제 파일이 아닙니다. 이러한 유형의 마운트는 sysfs커널에서 커널의 다른 부분이 스스로 등록할 수 있는 API에 해당합니다. 그런 다음 해당 파일 시스템의 "파일"을 읽거나 쓸 때 sysfs는 이러한 작업을 등록된 모듈에 전달합니다.

gpio커널(범용 I/O) 계층은 다시 다른 드라이버가 등록할 수 있는 추상화 계층입니다. 일반적으로 이는 GPIO 레지스터 자체가 있는 칩 또는 칩셋용 드라이버입니다. 이러한 칩의 GPIO 핀이 배선되는 방식은 하드웨어에 따라 다릅니다.

자세한 내용은 Documentation/gpio/gpio.txt커널 소스 코드 등에서 확인할 수 있습니다.

드라이버를 식별하는 한 가지 방법은 ll gpio432gpio 노드를 생성한 후 심볼릭 링크를 살펴보는 것입니다. 이는 GPIO 레지스터가 있는 칩/칩셋이 있는 장치를 가리킵니다. 그런 다음 장치의 드라이버를 찾으십시오.

dmesg또 다른 접근 방식은 GPIO를 등록할 때 드라이버가 메시지를 생성하는지 확인하는 것입니다 .

아마도 이 정보는 를 통해서도 접근할 수 있을 것입니다 udevadm.

관련 정보