次: , 前: Hitachi Remote, 上: Remote


13.4.9 GDBとリモートMIPSボード

GDBは、 MIPSのリモート・デバッグ用のプロトコルを使って、 シリアル回線に接続されたMIPSボードと通信することができます。 これは、 GDBを`--target=mips-idt-ecoff'によって構成することによって、 利用することができます。

ターゲット・ボードとの接続を指定するには、 以下のGDBコマンドを使用します。

target mips port
ボード上でプログラムを実行するには、 引数にユーザ・プログラムの名前を指定してgdbを起動します。 ボードに接続するには、 `target mips port'コマンドを使用します。 portは、 ボードに接続されているシリアル・ポートの名前です。 プログラムがまだボードにダウンロードされていないのであれば、 loadコマンドを使ってダウンロードすることができます。 その後、 通常利用できるすべてのGDBコマンドを使うことができます。

例えば以下の手順では、 デバッガを使うことによって、 シリアル・ポートを経由してターゲット・ボードに接続した後に、 progと呼ばれるプログラムをロードして実行しています。

          host$ gdb prog
          GDB is free software and ...
          (gdb) target mips /dev/ttyb
          (gdb) load prog
          (gdb) run
     

target mips hostname:portnumber
GDBのホスト構成によっては、 `hostname:portnumber'という構文を使うことで、 シリアル・ポートの代わりに (例えば、 端末多重化装置によって管理されているシリアル回線への) TCP接続を指定することができます。
target pmon port

target ddb port

target lsi port

GDBは、 MIPSターゲットに対して、 以下の特別なコマンドもサポートしています。

set processor args
show processor
プロセッサの種類に固有のレジスタにアクセスしたい場合には、 set processorコマンドを使ってMIPSプロセッサの種類を設定します。 例えば、 set processor r3041は、 3041チップで有効なCPOレジスタを使うよう、 GDBに対して通知します。 GDBが使っているMIPSプロセッサの種類を知るには、 show processorコマンドを使います。 GDBが使っているレジスタを知るには、 info regコマンドを使います。
set mipsfpu double
set mipsfpu single
set mipsfpu none
show mipsfpu
MIPS浮動小数点コプロセッサをサポートしないターゲット・ボードを使う場合は、 `set mipsfpu none'コマンドを使う必要があります (このようなことが必要な場合には、 初期化ファイルの中にそのコマンドを入れてしまってもよいでしょう)。 これによって、 浮動小数値を返す関数の戻り値を見つける方法をGDBに知らせます。 またこれにより、 ボード上で関数を呼び出すときに、 GDBは浮動小数点レジスタの内容を退避する必要がなくなります。 R4650プロセッサ上にあるような、 単精度浮動小数だけをサポートする浮動小数点コプロセッサを使っている場合には、 `set mipsfpu single'コマンドを使います。 デフォルトの倍精度浮動小数点コプロセッサは、 `set mipsfpu double'によって選択することができます。

以前のバージョンでは、 有効な選択肢は、 倍精度浮動小数コプロセッサを使う設定と浮動小数点コプロセッサを使わない設定だけでした。 したがって、 `set mipsfpu on'で倍精度浮動小数コプロセッサが選択され、 `set mipsfpu off'で浮動小数点コプロセッサを使わないという設定が選択されていました。

他の場合と同様、 mipsfpu変数に関する設定は、 `show mipsfpu'によって問い合わせることができます。

set remotedebug n
show remotedebug
remotedebug変数を設定することによって、 ボードとの通信に関するいくつかのデバッグ用の情報を見ることができます。 `set remotedebug 1'によって値1を設定すると、 すべてのパケットが表示されます。 値を2に設定すると、 すべての文字が表示されます。 `show remotedebug'コマンドによって、 いつでも現在の設定値を調べることができます。
set timeout seconds
set retransmit-timeout seconds
show timeout
show retransmit-timeout
MIPSリモート・プロトコルにおけるパケット待ちの状態でのタイムアウト時間を、 set timeout secondsコマンドで制御することができます。 デフォルトは5秒です。 同様に、 パケットに対する確認 (ACK) を待っている状態でのタイムアウト時間を、 set retransmit-timeout secondsコマンドで制御することができます。 デフォルトは3秒です。 それぞれの値をshow timeoutshow retransmit-timeoutで調べることができます (どちらのコマンドも、 GDBが`--target=mips-idt-ecoff'用に構成されている場合のみ使用可能です)。

set timeoutで設定されたタイムアウト時間は、 ユーザ・プログラムが停止するのをGDBが待っている間は適用されません。 この場合には、 GDBは永遠に待ち続けます。 これは、 停止するまでにプログラムがどの程度長く実行を継続するのかを知る方法がないからです。