第 50 章 シリアルポートテスト (sptest)
sptest は、システムのオンボードシリアルポート (zs[0,1]、zsh[0,1]、se[0,1]、se_hdlc[0,1]) 以外にも、複数端末インタフェース (ALM2) ボード (mcp[0-3]) を検査します。データを送信側デバイスに書き込み、そのデータを受信側デバイスから読み戻し、1 バイトを送信するごとにデータを照合します。
このテストを実行するには、intervention モードを有効にする必要があります。
sptest はスケーラブルテストではありません。
sptest はテスト用の se、zs、zsh、se_hdlc ポートを動的にプローブします。すべてのエラーメッセージ、警告メッセージ、テストパラメタのダイアログボックスのオプションには、正しいポート名が動的に設定されます。たとえば、システムの a と b のポートが su ポートで、cとd のポートが se ポートの場合、sptest は c ポートと d ポートをテストします。さらに、テストパラメタのダイアログボックスのメニューオプションには、たとえば、"Test Type: c to d" のように、正しいポートが表示されます。テストパラメタのダイアログボックスの例は、表 50-1を参照してください。
表 50-1 シリアルポートテスト
モード
|
説明
|
非同期テスト
(Asynchronous testing)
|
非同期テストモードでは、zs(7D) および se(7D) のマニュアルページの説明にあるように、非同期通信プロトコルが使用されます。ポートの設定には、termio(7I) インタフェースが使用されます。
このモードでは、使用するループバックパスと、転送するデータの大きさ、使用するボーレートを選択することができます。
sptest は、ループバックパスを使用してデータを書き込んでから読み取り、元のデータと照合します。最初に 1 文字を送信し、時間切れを含めて何もエラーが検出されない場合に、残りのデータを同時に読み書きして、照合します。
|
同期テスト
(Synchronous testing)
|
同期テストモードでは、sptest は、zsh(7D) および se_hdlc(7D) のマニュアルページの説明にあるように、同期 HDLC フレームインタフェースを使用します。データは、検査合計保護されたパケットの形式で読み書きされます。
このモードでは、使用するループバックパスとクロックレートを選択することができます。
同期テストは以下の 3 つのフェーズで実行されます。
-
第 1 フェーズでは、ポートが動作中か監視されます。4 秒間以上動作がなければ、テストは次のフェーズに進みます。その間に動作があると、回線が有効なため、テストを進められなかったことが通知され、sptest は、エラーを出力して終了します。
-
第 2 フェーズでは、1 つのパケットの送信と受信が試みられます。5 回試行してもパケットが返されないと、テストはエラーメッセージを出力して終了します。パケットが返されると、元のパケットと比較されます。パケットの長さと内容が正確に一致していなければ、エラーメッセージが発行されます。
-
第 3 フェーズでは、ループによって多数のパケットの送信が試みられます。第 1 パケットフェーズでリンクの完全性が検証されているため、特定の回数のタイムアウト後も、テストは失敗しません。待ち時間が経過してもパケットが返されない場合は、メッセージが表示されます。このフェーズで送信されるパケットの個数とサイズは、デフォルト値によって決まります。返された各パケットは元のパケットと長さおよび内容を比較されます。一致しない場合には、エラーメッセージが発行されます。
|
sptest 同期テストのソフトウェア条件
マシンに zs(7D) シリアルポートが存在する場合は、同期デバイスが存在しないことになります。/dev ディレクトリに zsh (h は 0 か 1、またはその両方) が存在しているかどうかを調べてください。存在しない場合は、作成することができます。
同期デバイスを作成する
-
/etc/devlink.tab ファイルに以下の 2 行が含まれていることを確認します。
type=ddi_pseudo;name=zsh zsh¥M0
type=ddi_pseudo;name=clone;minor=zsh zsh
|
注意 - 上記の行にあるスペースは、zsh と zsh の間に 1 文字のタブ文字が含まれることを示します。空白文字は使用しないでください。
-
/etc/devlink.tab ファイルに上記の行が既に存在することを確認したら、/kernel/drv ディレクトリに移動して、add_drv
zsh コマンドを実行します。
-
このコマンドが正しく機能しなかった場合は、rem_drv
zsh コマンドを実行し、その後で再度 add_drv zsh コマンドを実行します。
sptest のオプション
ダイアログボックスを表示するには、システムマップにあるテスト名を右クリックし、Test Parameter Options を選択します。システムマップにこのテスト名が表示されない場合は、グループツリーを展開すると表示される場合があります。展開しても表示されない場合は、このテストに合ったデバイスがシステムに含まれていない可能性があります。詳細は、『SunVTS 4.2 ユーザーマニュアル』を参照してください。
図 50-1 sptest のテストパラメタオプションダイアログボックス
様々なループバックパスを使用することができます。内部ループバックパスでは、外部コネクタは必要ありません。内部ループバックパスを使用できるかどうかは、デバイスによって異なります。zs(7D) デバイスには同期モード用の内部パスがあり、se(7D) デバイスには非同期モード用の内部パスがあります。外部ループバックコネクタについては、付録 A を参照してください。必要とされるループバックコネクタのタイプは、システム入出力パネルの構成によって異なります。
以下に loopback テストコマンドの例をいくつか示します。コマンド行の構文に関する詳細は、「sptest のコマンド行構文」を参照してください。
コマンド行から内部ループバックを使って /dev/term/b をテストするには、以下のコマンドを入力します。
% ./sptest -vf -o M=async,T=b,L=I
|
コマンド行から外部ループバックを使って/dev/term/b をテストするには、以下のコマンドを入力します。
% ./sptest -vf -o M=async,T=b,L=P
|
zs(7D) マシンでは、同期モードの場合のみ内部ループバックパスがアクティブになります。
% ./sptest -vf -o M=sync,T=b,L=I
|
各 CPU ボードのポートのデバイス名を以下の表に示します。a は CPU ボードのポート a を表し、b は CPU ボードのポート b を表しています。
表 50-2
sptest シリアルデバイス
CPU
|
ポート
|
非同期デバイス
|
同期デバイス
|
0
|
a
b
|
zs0 or se0
zs1 or se1
|
zsh0 or se_hdlc0
zsh1 or se_hdlc1
|
1
|
a
b
|
zs2
zs3
|
zsh2 *
zsh3 *
|
2
|
a
b
|
zs4
zs5
|
zsh4 *
zsh5 *
|
* 現在デバイスドライバでサポートされているのは zsh0 と zsh1 だけです。
|
表 50-3
sptest のオプション
オプション
|
説明
|
Test Type
|
テストの実行方法として以下のいずれかを選択します。
|
Loopback Type
|
ループバックテスト方法として以下のいずれかを選択します。
Internal - 内部パスを使用します (a、b、a_b、a_b_concurrent テストタイプで有効)。
Plug_a_to_a__b_to_b - 外部ループバックプラグを使用します (a、b、a_b、a_b_concurrent テストタイプで有効)。
no_modem_a_to_b - 外部ループバックケーブルを使用します (a_to_b、a_to_b_concurrent テストタイプで有効)。
Modem_a_to_b - 同期が取られた送信およびクロックを生成するためのモデムが接続された外部ループバックケーブルを使用します。Modem_a_to_b は、サンの内部で使用することのみを目的としています。このテストは、外部に提供されていない特別な設備を必要とします。
|
Test Mode
|
テスト実行前のシリアルデバイスのモードを指定します。指定可能なモードは asynchronous (非同期)、synchronous (同期)、both (両方) のいずれかです。both を選択すると、非同期モード後に、同期モードでテストが実行されます。
|
Data Type
|
転送するデータパターンとして以下のいずれかを選択します。
Random
Sequential
Alphanumeric
0x00-0xff
|
Async Baud Rate
|
非同期モードテスト時のボーレートを選択します。有効な値は、110、300、600、1200、4800、9600、19200、38400、57600、76800、115200、153600、230400、307200、460800、ALL で、デフォルトは 9600 です。一部のプラットフォームは、38400 または 76800 までのボーレートしかサポートされていません。サポートされているよりも速いボーレートを試みると、エラーが返されます。153600 を超えるボーレートを使用するには、シリアル回線ドライバを RS-232 モードではなく、RS-423 モードに設定する必要があります。通常、この RS-423 と RS-232 モードの設定は、マザーボード上のジャンパを使用して行います。詳細は、使用するハードウェアの取り扱い説明書を参照してください。
|
Async Data Size
|
非同期モードで転送する総バイト数を指定します。有効な値は、1 〜 10000の範囲です。
|
Async Flow Control
|
非同期モードで使用するフロー制御方式として Hardware (RTS/CTS)、Software (XON/XOFF)、None のいずれかを選択します。デフォルトはテストタイプの指定によって異なります。a、b、a_b、a_b_concurrent テストタイプで、Software フロー制御を使用することはできません。
|
Sync Baud Rate
|
同期モードでデバイスが生成するクロックレートを指定します。有効な値は 110 〜 230400 の範囲です。 この数値は、非同期モードでのボーレートとは異なり、特定の値である必要はありません。デフォルトのレートは 9600 です。一部のプラットフォームは、38400 または 76800 までのボーレートしかサポートされていません。サポートされているよりも速いボーレートを試みると、エラーが返されます。100000 を超えるボーレートを使用するには、シリアル回線ドライバを RS-232 モードではなく、RS-423 モードに設定する必要があります。通常、この RS-423 と RS-232 モードの設定は、マザーボード上のジャンパを使用して行います。詳細は、使用するハードウェアの取り扱い説明書を参照してください。
|
Sync Packet Drop Tolerance
|
同期モードの many_packets サブテスト中の、パケットドロップの許容レベルを指定します。有効な値は、0% 〜 99%です。クロックレートが高く、システムの負荷が大きくなると、パケットドロップが発生する可能性が高くなります。
|
Sync Poll Count
|
同期モードでのパケット送信の追加待ち時間を秒単位で指定します。この追加待ち時間は、システムの負荷が大きく、時間切れが検出されるときに必要になることがあります。一般的に、システムの負荷が小さいときはゼロ(0) に設定し、システムの負荷が大きいときに値を大きくしてください。
|
sptest のテストモード
sptest は、SunVTS の 3 つのテストモードをすべてサポートしています。
表 50-4
sptest のテストモード
テストモード
|
サポート
|
説明
|
接続テスト
|
○
|
sptest は、ポートを開いて、デバイスが接続されているかどうかを判定しようとします。ポートがビジーではないのに開けなかった場合は、テストは終了してエラーが返されます。ポートが開いたか、ビジーまたは排他使用エラーでポートを開けなかった場合は、デバイスがポートに接続されているとみなされ、テストは成功したことになります。
|
機能テスト
(オフライン)
|
○
|
選択されたループバックテストを行います。
|
機能テスト
(オンライン)
|
○
|
sptest は、動作中のアプリケーションに極力テストの影響を与えないように動作します。オンラインテストは、同期と非同期の両方のモードで動作します。デバイスが内部ループバックをサポートしている場合は、内部ループバックを利用してオフラインテストを実行します。zs(7D) は内部同期ループバック、se(7D) は内部非同期ループバックをサポートしています。
|
sptest のコマンド行構文
/opt/SUNWvts/bin/sptest 標準引数 -o dev=デバイス名,porta= ポート名, T=テストタイプ,L=ループバックタイプ,M=モード,D=データパターン,AB=非道期時ボーレート,S=非同期時書き込みサイズ,par=none|even|odd,BS=1|10|100|1000|3000|5000|10000 ,F=フロー制御,
B=同時期ボーレート,DP=同期時ドロップ許容レベル,P=同期時時間切れ
表 50-5
sptest のコマンド行構文
引数
|
説明
|
dev=デバイス名
|
テストするシリアルポートを指定します。デフォルト値はないため、以下のような形式で必ず指定する必要があります。
-
se0,
-
zs0, zs1
-
zs2, zs3
-
..., ...
|
porta=ポート名
|
シリアルデバイスペアの最初のデバイス名を指定します。デフォルトは a です。
|
T=テストタイプ
|
実行するテストのタイプとして、以下のいずれかを指定します。
|
L=ループバックのタイプ
|
ポートに接続するループバックコネクタのタイプとして以下のいずれかを指定します。
-
No_modem_a_to_b
-
Internal_a_to_a__b_to_b
-
Plug_a_to_a__b_to_b
-
Modem_a_to_b
|
M=モード
|
テストモードとして、以下のいずれかを指定します。
デフォルトは、asynchronous (非同期) です。
|
D=データパターン
|
転送するデータパターンを指定します。指定可能な値は以下のいずれかです。
-
Random
-
Sequential
-
0x00-0xFF
-
Alphanumeric
|
AB=ボーレート
|
非同期モードでのボーレートを指定します (デフォルト = 9600)。有効な値は、110
〜 460800 の範囲です。
注 - 一部のプラットフォームでは、38400 または 76800 までのボーレートしかサポートされていません。153600 を超えるボーレートを使用するには、シリアル回線ドライバを RS-232 モードではなく、RS-423 モードに設定する必要があります。
|
S=非同期時総サイズ
|
非同期モードでの総書き込みバイト数を 1 〜 10000 バイトの範囲で指定します。
|
par=none|even|odd
|
非同期ループテストでのパリティーを指定します。デフォルトは none です。
|
BS=1|10|100|1000|3000|5000|10000
|
非同期モードでの書き込みバイト数です。デフォルトは100 です。
|
F=フロー制御
|
非同期モードでのフロー制御方法として、以下のいずれかを指定します。
-
Hardware (RTS/CTS)
-
Software (xon/xoff)
-
None
|
B=ボーレート
|
同期モードでのボーレートを指定します (デフォルト = 9600)。 有効な値は 110
〜 256000 の範囲です。
注 - 一部のプラットフォームでは、38400 または 76800 までのボーレートしかサポートされていません。100000 を超えるボーレートを使用するには、シリアル回線ドライバを RS-232 モードではなく、RS-423 モードに設定する必要があります。
|
DP=同期時ドロップ
許容レベル
|
同期モードでのパケットドロップの許容レベルを指定します
(デフォルト=20 %)。
|
P=同期時時間切れ
|
同期モードでのポーリング中の追加待ち時間を秒単位で指定します。
|
注 - 64 ビットのテストは、sparcv9 サブディレクトリに格納されています (/opt/SUNWvts/bin/sparcv9/テスト名)。このディレクトリにテストが存在しない場合は、そのテストは、32 ビットのテストとしてだけ実行することができます。詳細は、「32 ビットテストと 64 ビットテスト」を参照してください。