web-dev-qa-db-ja.com

シリアル通信に問題があります

私はシリアル通信の専門家ではないので、ずっと前に試しました。私の当面の目標は、Sun Sparc T5140のサービスプロセッサに接続することでしたが、これ以降、複数のデバイスに接続しようとしましたが、毎回同じ結果になりました。画面/端末が空白になり、カーソルが移動せず、画面/端末で何も起こりません。

ホスト(別のホストも試しました)とターゲットの間に、9ピンシリアルポートに接続されたストレート接続ケーブル(ヌルモデムケーブル)を入手しました。

この方法で、使用しているポートを確認しました。

0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 RTS|DTR
1: uart:16550A port:000002F8 irq:3 tx:0 rx:0

これにより、電気的に接続されているのはttyS0であることがわかります。

私はまた、粗い、さまざまなモード/速度などを試しました。

Minicom、screen、PuTTYなどのさまざまなクライアントを試しましたが、すべてこの空の画面/ターミナルに表示され、何も表示されず、入力も行われません。試したことのないクライアントは他にもありますが、その必要はないと思います。問題は他の場所にあります。

ケーブルを検討しましたが、今日は信頼できる店で購入しましたが、電気接続をしているので正しいと思います…?しかし、ここではわかりません...

TtyS0またはttyS1以外のものを使用すると、画面に次のように表示されます。

[root@tc1 ~]# screen /dev/ttyS2
[screen is terminating]

これは、通信がないか、デバイスが構成されていないことを意味しているに違いありません。

Just a screenshot from my empty terminal

1
Jokra

これにより、電気的に接続されているのはttyS0であることがわかります。

申し訳ありませんが、あなたはここで間違っています。

RTSおよびDTR信号は、何かがローカル側のポートをアクティブにしていること、つまりscreenminicomModemManageragettyまたはコンピュータのポートで実行されている同様のプログラム。どちらも発信信号であるため、リモート側については何も伝えません。 fuser -u /dev/ttyS0をルートとして使用して、ポートをアクティブ化しているローカルプロセスのPIDを取得します。

信じられない場合は、screen /dev/ttyS1を実行し、実行中に別のウィンドウでcat /proc/tty/driver/serialを再度実行します。これで、ttyS1RTSおよびDTR信号もアクティブになっているはずです。

一方、CTSおよびDSR信号は、次の2つのことを示します。

  • ケーブル実際にはあります何らかの方法で接続されたライン(一部のシリアルケーブルには、入力データ、出力データ、およびアースの3本のワイヤーしかありません)
  • cTSおよびDSR信号が、RTSおよびDTRなしで単独で表示される場合、そしてそのときのみそれは確かにもう一方の端に何かがあることを示します。一部のヌルモデムケーブルは、各コネクタでローカルDTRをローカルDSRに接続し、ローカルRTSをローカルCTSに接続します。これは、一方の端のデバイスがハードウェアハンドシェイクを使用すると、もう一方の端のデバイスはそれを実行できません。その場合、ケーブルのもう一方の端がまったく接続されていなくても、ポートの電源がオンになり、発信RTSおよびDTR信号がアサートされるとすぐに、着信CTSおよびDSR信号が常に表示されます。

多くの場合、シリアル接続が機能する直前に、シリアル接続のパラメータも必要です。最も一般的な変数は、接続のボーレート(速度)です。T5140のコンソールポートでは、最初に9600bpsを試します。他のデバイスも38400または115200bpsを使用する場合があります。これらは私の経験で最も一般的な値です。

他のパラメータは、データビット数(8が今日最も一般的な値)、パリティ( "none"が最も一般的)、およびストップビット数(1が最も一般的)です。

すべてのパラメータが正しい場合でも、入力として有効な文字を取得するまで、もう一方の端は何も送信しない可能性があります。したがって、screenまたはminicomを開始したら、Enterキーを1回または2回押します。

ほとんどのシリアルコンソール接続は「リモートエコー」の原則に基づいて機能します。何かを入力すると、入力した文字は画面に表示されずにシリアルポートから送信されます。リモートエンドが文字をエコーバックした場合にのみ、文字が表示されます。これにより、パスワードを画面に表示せずに入力するなどの操作が可能になり(リモートエンドはパスワード入力のエコー機能を無効にするだけなので)、入力した文字が正しく受信されたことを通知します。

人間が使用することを意図していないシリアル接続では、このリモートエコー機能が省略される場合があります。このような接続のトラブルシューティングを行う場合は、ターミナルエミュレータプログラムで「ローカルエコー」機能をアクティブにすることをお勧めします(「画面」の「Q」とminicomのkeyboard "設定セクションなど)。ローカルエコーとリモートエコーの両方を同時に有効にしている場合、入力した内容はすべて画面に表示されます。

3
telcoM