Debug 本装置で動作させるユーザプログラムをデバッグするに、特別のデバッグ用インタフェース装置(H-UDI,ICE)は提供していません。 方法として以下の2つの方法があります。 1)作成するユーザプログラムに「ツール関数」を予め埋め込んでおき、指定位置で外部に「デバッグ情報」を出力する方法。
ソフトウェアのツールを使用してユーザプログラムの動作を確認します。
RS-232CインタフェースまたはTELNETプロセスをデバッグ情報出力端として動作させます。
RS-232C:
RsInit
,
RsOut
/
RsOut2
をユーザプログラム内に埋め込みます。
TELNET:
TrInit
,
TrOut
/
TrOut2
をユーザプログラム内に埋め込みます。
また、
LED関連
のファンクションを使用して、制御の分岐などを確認することも可能です。
2)TELNETプロセスを使用する方法。
本装置はユーザプログラムデバッグ用の「簡易デバッガ」を、TELNETプロセスの一部の機能として搭載しています。
「簡易デバッガ」を使用する手順は以下です。
・ 実際に作成されたモトローラファイルを本装置にダウンロードします。
・ 動作パラメータの起動プログラムに「TelnetSv」を設定します。
・ デバッグを行なうユーザプログラム名を、動作パラメータも起動プログラムから削除します。
・ ロータリスイッチ(0〜3)でリセットし、TELNETサーバを走行させます。
・ TELNETクライアントからログインします。
本装置の「簡易デバッガ」は以下のコマンドをサポートします。
アドレス、ブレークポイント番号 | ブレークポイントの設定・参照 | |
アドレス範囲、サイズ | メモリダンプ | |
- | プログラムの実行 | |
プログラム名 | ユーザプログラムのロード | |
- | レジスタの表示 | |
アドレス、サイズ | メモリの編集 | |
- | シングルステップ実行 | |
アドレス範囲 | 逆アセンブル | |
- | 簡易デバッガの終了 |
・起動と終了
本装置を「通常動作モード」で動作させ、TELNETクライアントからログインします。
TELNETのプロンプトに対して
EX DEBUG
と入力してEnterキーを押すと「簡易デバッガ」のプロンプト「-」を表示します。
プロンプトに対して
Q
と入力すると「簡易デバッガ」を終了して、TELNETのプロンプトを表示します。
このとき、デバッグ中のプログラムも終了してメモリ解放する。
・「ユーザプログラムのロード」
以下のコマンドを入力するとプログラムをRAMにロードします。
L プログラム名
ロードするプログラムは予め本装置のユーザプログラム格納エリアにダウンロードしておいて下さい。
既にロードされているプログラムが存在する場合、新たにロードしたプログラムの置換されます。
このとき、ブレークポイントの設定も初期化されます。
・「ブレークポイントの設定・参照」
以下のコマンドを入力すると指定されたアドレスにブレークポイントを設定します。
B [Address [0/1]]
「簡易デバッガ」ではブレークポイントを最大2箇所の設定できます。
指定可能なブレークポイント番号は0または1のいずれかです。番号を省略した場合は0とみなします。
パラメータを省略すると現在設定されているブレークポイントを表示します。
C060100番地にブレークポイントを設定したい場合、
B C060100
と入力してEnterキーを押します。
・「プログラム実行」
プロンプトに対して
G
を入力するとロードされているプログラムの実行を開始します。
ブレークポイントが設定されている場合、そのアドレスの実行前で停止します。
停止するとその時点のレジスタの値と、停止したアドレスのニーモニックを表示します。
・「シングルステップ実行」
プロンプトに対して
T
を入力するとロードされているプログラムを1命令だけ実行します。
実行後の時点のレジスタの値と、停止したアドレスのニーモニックを表示します。
TRAPA命令でシングルステップ実行を行なった場合、無条件トラップから復帰した時点で停止します。
RET命令でシングルステップ実行を行なわないで下さい。行なった場合の結果は予測できません。
・「レジスタ表示」
プロンプトに対して
R
を入力すると現在のレジスタの値を表示します。値は全て16進です。
R0 | = | hhhhhhhh | R1 | = | hhhhhhhh | R2 | = | hhhhhhhh | R3 | = | hhhhhhhh | |
R4 | = | hhhhhhhh | R5 | = | hhhhhhhh | R6 | = | hhhhhhhh | R7 | = | hhhhhhhh | |
R8 | = | hhhhhhhh | R9 | = | hhhhhhhh | R10 | = | hhhhhhhh | R11 | = | hhhhhhhh | |
R12 | = | hhhhhhhh | R13 | = | hhhhhhhh | R14 | = | hhhhhhhh | R15 | = | hhhhhhhh | |
GBR | = | hhhhhhhh | MACH | = | hhhhhhhh | MACL | = | hhhhhhhh | PR | = | hhhhhhhh | |
VBR | = | hhhhhhhh | PC | = | 0C060000 | SR | = | 40000000 |
・「逆アセンブル」
以下のコマンドを入力すると指定したアドレスの範囲を逆アセンブルして表示します。
U [StartAddress [EndAddress]]
終了アドレスを省略すると、16命令分を表示します。
開始、終了アドレス共に省略すると、前回表示した続きから16命令分表示します。
アドレスは16進で入力して下さい。
U 0
と入力してEnterキーを押すと、0番地から16命令分逆アセンブルして表示します。
00000000 | DF33 | MOV.L | H'000000D0,R15 | |
00000002 | D031 | MOV.L | H'000000C8,R0 | |
00000004 | A006 | BRA | H'00000014 | |
00000006 | 402E | LDC | R0,VER | |
00000008 | 00A0 | ? | ||
0000000A | C2FF | MOV.L | R0,@(H'03FC,GBR) | |
0000000C | FE4C | ? | ||
00000010 | 6100 | MOV.B | @R0,R1 | |
00000012 | 0000 | ? | ||
00000014 | D830 | MOV.L | H'000000D8,R8 | |
00000016 | 480B | JSR | @R8 | |
00000018 | 0009 | NOP | ||
0000001A | D02C | MOV.L | H'000000CC,R0 | |
0000001C | 9348 | MOV.W | H'000000B0,R3 | |
0000001E | 330C | ADD | R0,R3 |
・「メモリダンプ」
以下のコマンドを入力すると指定したアドレス範囲のメモリ内容を表示します。
D [StartAddress [EndAddress [B/W/L]]]
表示サイズはB(1バイト)、W(2バイト)、L(4バイト)単位で表示します。
終了アドレスを省略すると、256バイト分表示します。
開始、終了アドレスを省略すると、前回の続きから256バイト分表示します。
アドレスは16進で入力して下さい。
D 10000 W
と入力してEnterキーを押すと、10000番地から256バイト分のデータをワード単位で表示します。
00010000 | 4B65 | 726E | 656C | 2020 | 4D4F | 5400 | 8001 | 0018 | |
00010010 | 8000 | 0008 | 0104 | 6300 | E1FF | D021 | 2012 | D221 | |
00010020 | D31D | 332C | 6033 | 6405 | 6501 | 644D | 655D | E000 | |
00010030 | 6125 | 301C | 600D | 3320 | 8BFA | 340C | 350C | 644D | |
00010040 | 655D | 2448 | 8913 | 2558 | 8911 | D114 | 0002 | 201B | |
00010050 | 400E | D815 | C71B | 911B | 6403 | E000 | 9219 | E32F | |
00010060 | 9618 | E520 | 2100 | 2230 | 2600 | 482B | 2150 | DF0F | |
00010070 | D10F | D010 | 412E | 400B | 0009 | D10F | 410B | 0009 |
・「メモリの編集」
以下のコマンドを入力すると指定したアドレスからメモリ内容を変更します。
S [Address [B/W/L]]
編集サイズはB(1バイト)、W(2バイト)、L(4バイト)単位になります。
アドレスおよびデータは16進で入力して下さい。
S C0600000
と入力してEnterキーを押すと、C060000番地からバイトデータの入力待ちになります。
C0600000 00 ->
データを入力してEnterキーを押すと次のアドレスに進みます。
C0600000 00 -> 1 「1(0x01)」を入力した
C0600001 00 ->
編集を終了する場合はデータを入力せずにEnterキーを押します。