14

mdev ルールを使用して、busybox を実行する組み込み Linux で単純な UART シリアル ドライバーを作成しました。ドライバー コードに " " を指定しました.dev_namettyC2C

static struct uart_driver serial_omap_reg = {
   .owner      = THIS_MODULE,
   .driver_name   = "Omap-C2C-Serial",
   .dev_name   = "ttyC2C",
   .nr      = OMAP_MAX_HSUART_PORTS,
   .cons    = NULL,
};

ただし、ノードは作成されています

./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
./sys/class/tty/ttyC2C0

/ # ls -l ./sys/class/tty/ttyC2C0
lrwxrwxrwx    1 root     0                0 Jan  1 00:14 ./sys/class/tty/ttyC2C0 -> ../../devices/platform/omap_c2c_uart.0/tty/ttyC2C0

/ # ls -l ./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
-r--r--r--    1 root     0             4096 Jan  1 00:14 dev
lrwxrwxrwx    1 root     0                0 Jan  1 00:14 device -> ../../../omap_c2c_uart.0
drwxr-xr-x    2 root     0                0 Jan  1 00:14 power
lrwxrwxrwx    1 root     0                0 Jan  1 00:14 subsystem -> ../../../../../class/tty
-rw-r--r--    1 root     0             4096 Jan  1 00:14 uevent
/ #

tty の mdev ルールは次のとおりです。

tty 0:5 0666
tty.* 0:0 0620

デバイス ノードを として取得する方法は/dev/ttyC2C?

4

2 に答える 2

8

あなたは2つのことを混同しています。表示されている sysfs ノードは、kobject 階層に基づいてカーネルによって実際に維持されます。ただし、デバイス ノードは完全にユーザー空間の問題であり、どこにでも存在できます (ただし、慣例では /dev の下にあります)。

したがって、手動で最初にメジャー番号とマイナー番号を見つけます。

cat /sys/class/tty/ttyC2C0/dev

その後:

mknod /dev/ttyC2C0 c ${MAJOR} ${MINOR}

ただし、すでに示したように、udev のフォーク、mdev を使用して、デバイス ノードのユーザー空間の作成を処理します。ただし、一致するルールは私には奇妙に見えます。mdev には、一致するルールを作成するのに役立つ udevadm に相当するものがあると思います。たとえば、私の USB tty ドライバーは次のように照会できます。

udevadm info -a -p /sys/class/tty/ttyUSB0

生成されたツリーを見ると、照合に使用できる udev 属性のリストが表示されます。だから私の場合:

KERNEL=="ttyUSB0", DRIVERS=="ftdi_sio", NAME="ttyUSB0"

一致するのに十分でしょう (ただし、私のディストリビューションには、動的セットアップを処理するためのより複雑な一致ルールがあります)。

私は推測していますが、あなたが望むマッピングルールは次のようになると思います:

KERNEL=="ttyC2C", NAME="ttyC2C"

各ポート (マイナー番号?) に対して作成されたデバイス ノードを確実に取得するには、もう少し必要になる場合があります。

于 2012-11-28T11:51:02.527 に答える
2

特定の mdev ルールを/etc/mdev.conffor ttyC2C に追加すると、問題は解決しますか? 次のようなものですか?

ttyC2C[0-9]+ root:tty 620

また

ttyC2C[0-9]+ root:tty 620 @/bin/ln -sf $MDEV ttyC2C

于 2012-11-28T18:13:21.470 に答える