플랫폼 드라이버 설치

플랫폼 드라이버 설치

나는 최근에 최소한의 Linux 시스템을 실행하고 있는 x86 보드에 감시 타이머가 통합된 장치 드라이버를 얻었습니다. 커널은 3.6.11이고 buildroot.

설치가 작동하지 않으므로 필요한 드라이버를 udev수동으로 설치 insmod하고 가져와야 합니다. mknodCAN 드라이버에 대해서는 이 작업을 성공적으로 수행했지만 이 워치독 드라이버에 대해서는 대상의 소스 코드를 크로스 컴파일할 수 있었고 insmod결과 .ko 파일을 성공적으로 생성할 수 있었습니다. 그 후에는 오류가 생성되지 않으며 lsmod모듈이 로드되었음을 보고하는 호출이 이루어집니다.

제가 겪고 있는 문제는 /dev이 드라이버에 대한 장치 노드를 만들어야 하는데 진행 방법을 모른다는 것입니다. 문자 장치를 얻는 것과 같은 방법으로 장치의 메이저 및 마이너 번호를 얻는 방법을 모르겠습니다.

드라이버 소스에는 플랫폼 장치 드라이버라고 나와 있지만 그게 무슨 뜻인지는 잘 모르겠습니다. 캐릭터 디바이스, 블록 디바이스라는 말만 들었는데, 메이저와 마이너 숫자 개념이 플랫폼 디바이스와 관련이 있는 걸까요? 그렇다면 이 정보를 어떻게 얻을 수 있습니까? 장치 드라이버 이름에 항목이 없고 /proc어떻게 진행해야 할지 모르겠습니다.

답변1

일반적인 커널 감시 인터페이스를 사용하는 경우 /dev/watchdog여기에서는 10, 130입니다.

다른 것을 내보낼 수도 있습니다( /dev/watchdog0등). sysfs를 쿼리하여 찾을 수 있습니다.

$ cat /sys/class/watchdog/watchdog0/dev
253:0
$ cat /sys/class/watchdog/watchdog0/uevent 
MAJOR=253
MINOR=0
DEVNAME=watchdog0

정말:

$ ls -l /dev/watchdog0 
crw------- 1 root root 253, 0 May 17 18:26 /dev/watchdog0

번호는 동적으로 할당될 수 있으므로(확실하지 않음) 컴퓨터에 따라 다를 수 있습니다.

(플랫폼 장치에는 /sys/devices/platform다양한 매개변수를 설정할 수 있는 기능이 있을 수도 있습니다)

편집하다:다음과 같이 mknod루트로 문자 장치를 생성할 수 있습니다.

mknod -m 0600 /dev/watchdog c 10 130

-m설정 모드(여기서는 파일 권한, 8진수를 사용해야 함)는 /dev/watchdog이름 c중 하나를 의미합니다 .문자 장치(두번째잠금) 10은 기본 번호이고 130은 보조 번호입니다.

관련 정보