나는 최근에 최소한의 Linux 시스템을 실행하고 있는 x86 보드에 감시 타이머가 통합된 장치 드라이버를 얻었습니다. 커널은 3.6.11이고 buildroot
.
설치가 작동하지 않으므로 필요한 드라이버를 udev
수동으로 설치 insmod
하고 가져와야 합니다. mknod
CAN 드라이버에 대해서는 이 작업을 성공적으로 수행했지만 이 워치독 드라이버에 대해서는 대상의 소스 코드를 크로스 컴파일할 수 있었고 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은 보조 번호입니다.