H8/300Hモニタ Version0.22マニュアル

ルネサステクノロジマイクロプロセッサH8/300H用デバッグモニタです。2つの動作モードがあります。

目次

1. 主な機能
2. 動作システム
3. ターミナルソフトでの使用法
4. モニタコマンド
5. 各コマンドの詳細
5.1 Lコマンド
5.2 Rコマンド
5.3 Gコマンド
5.4 Sコマンド
5.5 Bコマンド
5.6 Dコマンド
5.7 Mコマンド
5.8 Aコマンド
5.9 Fコマンド
5.10 Hコマンド
6. キー操作
7. モニタ上でのユーザプログラムの実行
8. gdbで使用する場合
9. 仮想ベクタ
10. ユーザプログラムの割り込みレベル
11. ソースのコンパイル方法
12. カスタマイズ
12.1 SCIのカスタマイズ
12.2 コマンドラインのカスタマイズ
13. 今後の予定
14. GDB Remote Serial Protocol
15. 作者

1. 主な機能

2. 動作システム

現在以下のシステムでの動作を確認しています。

3. ターミナルソフトでの使用法

シリアルポートでPCと接続します。適当なターミナルソフトを以下の設定で使用します。

CPU 3052F(25MHz) 3068F(22MHz) 3068F(20MHz) 3067F(20MHz) 3664F(16MHz)
ビットレート 115200bps 115200bps 57600bps 57600bps 38400bps
データ長 8ビット
パリティ 無し
ストップビット 1

電源投入後ターミナルに以下のメッセージが表示されます。

H8/300(H) 3068F Monitor Ver. 0.22
(c)2003,2004 Takashi Shudo
Virtual vector table area : FFBF20 - FFC01F
Monitor used RAM area     : FFC020 - FFC393
Monitor stack end address : FFC524
Build date                : 11:05:48 Nov 28 2004
>

4. モニタコマンド

以下のコマンドが使用出来ます。

コマンド 機能
l S-Recordデータのロード
r レジスタの表示、変更
g プログラムの実行
s プログラムのステップ実行
b ブレークポイントの設定、削除
d メモリのダンプ表示
m メモリの表示、書き込み
a 逆アセンブル
f 指定メモリ範囲の書き込み
h ヘルプメッセージの表示

5. 各コマンドの詳細

5.1 Lコマンド

【表記】

l [x]

【機能】

S-Recordデータをメモリへロードします。

Please send S-records data.

のメッセージが表示されたら、ターミナルソフトのファイル送信機能を使用してS-Recordデータを送信してください。引数に x を指定すると受信時にX-Flowを使用します。S-Recordを受信中に

SCI Receive buffer full.

のメッセージが表示される場合にこのオプションを使用してください。このオプションを使用するときはターミナルソフトのX-FlowをOnにしてください。

5.2 Rコマンド

【表記】

r [[reg] val]

【機能】

レジスタの表示編集を行います。regを省略すれば全てのレジスタの値を表示します。

例)

>r
PC = FFC800      CCR = 80
R0 = 00000000    R1 = 00000000   R2 = 00000000   R3 = 00000000
R4 = 00000000    R5 = 00000000   R6 = 00000000   R7 = 00FFFF20
>

レジスタ名([reg])を指定すると、指定したレジスタの値を表示します。

例)

>r pc
PC = 00FFC800
>

レジスタ名([reg])の後に値を16進数で指定([val])すると、指定レジスタに値を設定します。

例)

>r r0 100
R0 = 00000100
>

5.3 Gコマンド

【表記】

g [address]

【機能】

プログラムを実行します。addressを指定すればaddressから実行します。

5.4 Sコマンド

【表記】

s

【機能】

プログラムを1マシン命令実行します。

5.5 Bコマンド

【表記】

b [[address]|[- address]]

【機能】

ブレークポイントを設定、削除または現在の設定を表示します。

(1) ブレークポイントの設定

引数にアドレスに対し、ブレークポイントを設定します。

(2) ブレークポイントの削除

引数に"- address"を指定した場合、指定アドレスのブレークポイントを削除します。

(3) 設定されているブレークポイントの表示

addressを指定しなければ現在設定されているブレークポイン示します。

例)

>b fff000
Set breakpoint at FFF000
>b
1 : FFF000
>b - fff000
Deleted breakpoint address FFF000.
>

5.6 Dコマンド

【表記】

d [start [end]]

【機能】

startからendまでのメモリ内用をダンプ表示します。

5.7 Mコマンド

【表記】

m [-b|w|l] address [value ...]

【機能】

valueを指定しなければaddressのメモリ内容を表示します。valueを指定した場合はaddressのアドレスにvalueを書き込みます。-bまたはオプションを指定しなければバイトサイズで書き込みます。-wでワードサイズ(2バイト)、-lでロングワードサイズ(4バイト)で書き込みます。valueは複数個指定出来ます。(最大9個)

5.8 Aコマンド

【表記】

a [address [end]]

【機能】

addressからendまでのメモリを逆アセンブル表示します。

5.9 Fコマンド

【表記】

f address end|@length value

【機能】

addressからendまでのメモリにvalueを書き込みます。またはaddressから @length 分のメモリにvalueを書き込みます。

5.10 Hコマンド

【表記】

h

【機能】

コマンドの表記を表示します。

6. キー操作

bashライクなコントロールキー操作ができます。コマンドヒストリが使えます。

7. モニタ上でのユーザプログラムの実行

モニタ起動時のメッセージに表示される

Virtual vector table area : FFBF20 - FFC01F(仮想割り込みベクタ)
Monitor used RAM area     : FFC020 - FFC453(モニタワーク)
Monitor stack end address : FFC5E4(モニタスタックエリア)

は、モニタのワークエリアを示しています。ユーザプログラムはこれらのエリアを破壊しないようにしてください。これらのエリアが破壊された場合、モニタは正常に動作できなくなります。

8. gdbで使用する場合

cygwin上のgdbで使用する場合はホームディレクトリ、またはカレントディレクトリににアーカイブ内のgdb.ini を置いてください。LinuxやBSDで環境を作っている方は.gdbinitに名前を変更してHOMEディレクトリ、またはカレントディレクトリに置いてください。

set remotebaud 57600

を、モニタのビットレートにあわせて修正してください。

target extended-remote COM4

を、GDBを使用するPCの環境に合わせて修正してください。

Linuxでは「/dev/cua0」や「/dev/ttyUSB0」(USBシリアル)になります。

gdbはcygwin 1.3でビルドしたバージョン5.1.1での動作を確信しています。

gdbは以下のようにビルドしました。

$ ./configure --target=h8300-hms
$ make
$ make install

上記では

/usr/local/bin

にgdbがインストールされます。実行は

$ h8300-hms-gdb

と入力します。

9. 仮想ベクタ

仮想ベクタテーブル機能があります。割り込みハンドラは通常の割り込み処理と同様にRTEで終了してください。

「リセット」割り込みと、モニタで使用している「SCI1」、「TRAPA#3」割り込み以外はユーザの割り込みベクタを動作させることが可能です。

モニタのLコマンドまたはgdbによる0x000000 - 0x0000ff(H8/3664の場合は0x003f)番地へのロードは仮想ベクタテーブルへ転送されます。よって、ベクタテーブルのセクションはROM化する場合と同様のマップ配置が可能です。

ただし、モニタのmコマンドでベクタテーブル領域を表示した場合、表示/編集されるのは実際のメモリ内容(本プログラムベクタテーブル内容)です。

10. ユーザプログラムの割り込みレベル

モニタで使用するSCIは割り込みレベルを1にしています。割り込みハンドラでブレーク、ステップ実行を行う場合は割り込みレベルを0にして下さい。

注意

ユーザ割り込み処理の割り込みレベルを1に設定すると、モニタがコマンド入力待ち状態でも割り込みハンドラが実行されてしまいます。その場合、割り込みルーチンにブレークポイントを設定すると正常に動作しません。

11. ソースのコンパイル方法

H8用に構築したgccの環境が必要です。Makefileの以下の部分を編集してターゲットとなるシステムを選択してください。

#--- Select Processor (3052/3067/3068/3664)
#include Makefile.3052
#include Makefile.3067
include Makefile.3068
#include Makefile.3664

Makefileの以下の部分を編集してプログラムの種類を選択してください。

#--- Select Program (mon/stub)
#include Makefile.prg-stub
include Makefile.prg-mon

"Makefile.prg-stub"はモニタコマンドを除いたgdb stub機能だけを使用する場合に選択してください。RAMの使用サイズを節約することが出来ます。

$ make depend
$ make

でコンパイルしてください。

h8*.mot

をフラッシュROMに書き込んでください。

12. カスタマイズ

config.hを編集することで、モニタをカスタマイズすることが出来ます。

12.1 SCIのカスタマイズ

他のプラットホームで動作させたい場合や、SCIポートの変更、SCIビットレートを変更したい場合に変更してください。

BRR_VAL

SCIのBRRに設定する値を設定してください。

SCI_ADD

SCIレジスタのベースアドレス(先頭のアドレス)を設定します。モニタで使用したいSCIを変更する場合に設定します。その場合、使用する割り込みハンドラに該当するベクタテーブル(vect.c)を変更する必要があります。

MAX_SCI_RXBUF_SIZE

SCIの受信バッファのバイトサイズを設定します。

MAX_SCI_TXBUF_SIZE

SCIの送信バッファのバイトサイズを設定します。

12.2 コマンドラインのカスタマイズ

コマンド入力に関する変更が可能です。設定値を少なくすることにより、RAMを節約することができます。

MAX_COM_HIS

コマンドヒストリの数を指定します。

MAX_LINE_COLUMS

1行で編集できる最大文字数を指定します。

13. 今後の予定

14. GDB Remote Serial Protocol

gdb stubの機能はGDB Remote Serial Protocolを使用しています。

参考:GDB Remote Serial Protocol(http://www.redhat.com/devnet/articles/gdbtable1.htm)

15. 作者

Takashi Shudo(shudo@mbe.nifty.com)