私は最近、最小限の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
の1つを意味します。氏キャラクターデバイス(第二ロック) 10 はプライマリ番号、130 はセカンダリ番号です。