質問:
シリアルポート(別名RS-232)を介してデバイス(GSMモデムなど)を接続しましたが、/dev/
のどのファイルを使用しているかを確認する必要があります このデバイスと通信できるようにするために、このデバイスはファイルシステムに接続されていました。残念ながら、/dev/
には新しく作成されたファイルはありません dmesg
にも何も表示されません 出力。ですから、これは難しい質問のようです。
背景:
シリアルデバイスを使ったことがなかったので、昨日、必要が生じたときにGoogleで試してみましたが、何も役に立ちませんでした。数時間シークに費やしましたが、誰かに役立つ可能性があるため、見つかった回答を共有したいと思います。
承認された回答:
残念ながら、シリアルポートはPlugNPlayではないため、カーネルはどのデバイスが接続されているかを認識しません。 HowToを読んだ後 チュートリアル実用的なアイデアがあります。
/dev/
OSのようなUNIXのディレクトリには、 ttySnという名前のファイルが含まれています (nは数字) 。それらのほとんどは既存のデバイスに対応していません。どれが実行されるかを見つけるには、コマンドを発行します:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
上記は私のPCの出力例です。いくつかのシリアルポートの初期化を確認できます:
ttyS0
、ttyS1
、ttyS4
、ttyS5
。
そのうちの1つは、デバイスが接続されると正の電圧になります。したがって、ファイル/proc/tty/driver/serial
の内容を比較します。 デバイスが接続されている場合と接続されていない場合で、 ttySを簡単に見つけることができます。 私たちのデバイスに関連しています。だから、今やる:
$ sudo cat /proc/tty/driver/serial> /tmp/1
デバイスのプラグを抜く
$ sudo cat /proc/tty/driver/serial> /tmp/2
次に、2つのファイルの違いを確認します。以下は私のPCの出力です:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
3つの数値をdmesg出力と比較することで、どちらがポートであるかを判別できます。
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
したがって、デバイスは/dev/ttyS0
です。 、ミッション達成!