組み込み型ノン・リアルタイム・モニター&デバッガー
for CqREEK/SH4
【概要】
このモニタは、AKI-H8版 を基に CqREEK/SH4版 を 作成してみるという試みです。
SH4のユーザブレークコントローラの使用でROM上でもステップ実行が可能!
CqREEK/SH4 には JTAG 対応のデバッガが用意されているので、このモニタの有用性
は無いに等しいでしょう。
【目次】
1.必要資源 ▽
2.ホスト端末との接続 ▽
3.動作モード ▽
3-1. 非起動状態 ▽
3-2. 割り込み駆動モード ▽
3-3. デバッグモード ▽
4.各種機能 ▽
4- 1. コマンドヘルプ ▽
4- 2. メモリ内容ダンプ ▽
4- 3. メモリ初期化▽
4- 4. Sフォーマットロード▽
4- 5. フラッシュ書き込み▽
4- 6. ダンプレジスタ▽
4- 7. 逆アセンブル表示▽
4- 8. ダンプレジスタ&インストラクションコマンド▽
4- 9. ダンプ浮動少数点レジスタ▽
4-10. ステップ/トレース実行▽
4-11. プログラムカウンタブレークポイント設定▽
4-12. メモリ内容変更▽
4-13. レジスタ内容変更▽
4-14. リセット▽
4-15. メモリ内容ウォッチ▽
4-16. 逆アセンブルリスト表示ステップ/トレース実行▽
4-17. ユーザープログラムからターミナルへの出力▽
4-18. ユーザープログラムのターミナルからの入力▽
5.組み込み手順 ▽
5-1. 組み込み例▽
5-2. 外部シンボル定義について▽
5-3. 生成ファイルについて▽
6.注意事項 ▽
7.その他 ▽
1.必要資源
ROM19536バイト(スタートアップ、ベクタ領域含む)
RAM23968バイト(コードコピー領域含む)
シリアル1チャンネル
2.ホスト端末との接続
ターミナル通信ソフトは、下記の設定でご使用ください。
転送レート115200bps
データ長8ビット
パリティ制御なし
ストップビット1ビット
フロー制御なし
3.動作モード
組み込み型ノン・リアルタイム・モニター&デバッガーは、動作状態
として、
3-1. 非起動状態
3-2. 割り込み駆動モード
3-3. デバッグモード
があります。
3-1. 非起動状態
組み込み型ノン・リアルタイム・モニター&デバッガーが実質的に、
動作していない状態です。
割り込み駆動モードから終了コマンド "@" によって抜けたときには、
次のメッセージを表示します。
*** Exit ***
この状態からは、
a)ホスト端末より起動コマンド "@" を送信する。
→割り込み駆動モード
によって、動作状態へ移行します。
3-2. 割り込み駆動モード
非起動状態より起動コマンド "@" で起動すると次のメッセージを
表示し、コマンド入力待ちになります。
*** DEBUGER for SH4 Ver.0.11 Copyright (C) 2001,2002 by AKIYA ***
*
デバッグモードを終了した場合は、次のメッセージを表示して、
コマンド入力待ちになります。
=== debugging mode out ===
*
割り込み駆動モードでは、ユーザープログラムは停止していません。
※ご注意
各処理は送信割り込みの中で実行している為、割り込み禁止状態
が長くなり、デバッグ対象によってはプログラムが正常に動作しな
い恐れがあります。
このモードからは、
a)ホスト端末よりデバッグモードコマンド "DI"[CR] を送信する。
→デバッグモード
b)ホスト端末より終了コマンド "@" を送信する。
→非起動状態
によって、それぞれの状態へ移行します。
3-3. デバッグモード
割り込み駆動モードから、デバッグモードコマンド "DI"[CR] を入力
すると、次のメッセージを表示して、コマンド入力待ちになります。
=== debugging mode in ===
R0-7 :003F78D3 B4000000 00000000 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08014A10
SR:00000002 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:0800326E
SSR:00000002 VBR:08000000 SPC:0800326E SGR:08014A10 DBR:00000000
R'0-7:400000F2 CFFFFFFF 080037A8 00000000 00000000 00000000 00000000 00000000
0800326E 4010 DT R0
>
ユーザープログラムから、トラップ命令による dbg_mode_in の実行で
非起動状態の場合に限り、デバッグモードが起動します。
*** DEBUGER for SH4 Ver.0.11 Copyright (C) 2001,2002 by AKIYA ***
=== debugging mode in ===
R0-7 :00000000 CFFFFFFF 08003F50 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 080151C0
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:08003A18
SSR:00000003 VBR:08000000 SPC:08003A18 SGR:080151C0 DBR:00000000
R'0-7:400000F3 CFFFFFFF 08003F58 00000000 00000000 00000000 00000000 00000000
08003A18 D106 MOV.L @(H'8003A34,PC)=#H'B4000000,R1
>
デバッグモードでは、割り込み禁止でホスト端末からのコマンドを
待っている状態で、ユーザープログラムは停止状態です。但し、NMI
割り込みを除きます。(このモニタでは、NMI には対応していません。)
このモードからは、
a)ホスト端末よりデバッグモード終了コマンド "DO"[CR] を送信する。
→割り込み駆動モード
によって、移行します。
4.各種機能
動作モードによって機能するコマンドが異なります。
・非起動状態
割り込み駆動モードを起動 (@)
・割り込み駆動モード(プロンプトは"*"です。)
非起動状態へ移行 (@)
デバッグモードへ移行 (DI)
コマンドヘルプ (?)
メモリ内容ダンプ (DM,DS)
メモリ初期化 (IM)
Sフォーマットロード (LS)
フラッシュライト (WF,WR)
逆アセンブル表示 (DA)
メモリ内容変更 (CM,CS)
リセット (Reset)
メモリ内容ウォッチ (DW,WS)
・デバッグモード(プロンプトは">"です。)
割り込み駆動モードへ移行 (DO)
コマンドヘルプ (?)
メモリ内容ダンプ (DM,DS)
メモリ初期化 (IM)
Sフォーマットロード (LS)
フラッシュライト (WF,WR)
ダンプレジスタ (DR)
逆アセンブル表示 (DA)
ダンプレジスタ&インストラクション (DI)
ダンプ浮動小数点レジスタ (DF)
ブレーク付き連続実行 (G)
シングルステップ実行 (S)
シングルトレース実行 (T)
ステップ実行 (ST)
トレース実行 (TR)
プログラムカウンタブレークポイント設定 (PB)
プログラムカウンタブレークポイント解除 (_PB)
プログラムカウンタブレークポイント表示 (?PB)
メモリ内容変更 (CM,CS)
レジスタ内容変更 (CR)
リセット (Reset)
4-1. コマンドヘルプ
使用可能なコマンド一覧を表示します。
・コマンドフォーマット
?[CR]
・動作サンプル
*?
*** DEBUGER for SH4 Ver.0.11 Copyright (C) 2001,2002 by AKIYA ***
SS=start, EE=end, LL=length, WW=wide, NN=line, II=initial, RR=reg., BB=addr.
*@ exit monitor *DI[CR] debug mode in
*DM-SS,EE[CR] dump memory *DS-SS,LL,WW[CR] dump memory size
*IM-SS,EE,II[CR] initial memory *DA-SS,NN[CR] dis assemble
*CM-SS[CR] change memory *CS-SS,WW[CR] change memory size
*DW-SS,EE[CR] dump memory watch *WS-SS,LL,WW[CR] watch memory size
*LS-OS[CR] load s format *WF-SR,DS,LL[CR] write flash
*WR-SR,DS,LL[CR] write flash and reset *Reset[CR] system reset
*?[CR] this help message
*
>?
*** DEBUGER for SH4 Ver.0.11 Copyright (C) 2001,2002 by AKIYA ***
SS=start, EE=end, LL=length, WW=wide, NN=line, II=initial, RR=reg., BB=addr.
>DO[CR] debug mode out >DM-SS,EE[CR] dump memory
>DS-SS,LL,WW[CR] dump memory size >IM-SS,EE,II[CR] initial memory
>DR[CR] dump register >DA-SS,NN[CR] dis assemble
>DI[CR] dump reg. and inst. >DF[CR] dump float register
>G[CR] go with break >S[CR] single step
>T[CR] single trace >ST-NN[CR] step
>TR-NN[CR] trace >PB-BB[CR] program break set
>_PB[CR] program break clear >?PB[CR] program break disp
>CM-SS[CR] change memory >CS-SS,WW[CR] change memory size
>CR-RR[CR] change register >VL view list
>VT view trace >VS view step
>LS-OS[CR] load s format >WF-SR,DS,LL[CR] write flash
>WR-SR,DS,LL[CR] write flash and reset >Reset[CR] system reset
>?[CR] this help message
>
4-2. メモリ内容ダンプ
メモリの内容をダンプ表示します。
・コマンドフォーマット1
DM-SSSSSSSS,EEEEEEEE[CR]
(SSSSSSSS:start address, EEEEEEEE:end address)
※ダンプ中にターミナルから入力をセンスした場合に、ダンプを中止します。
※メモリアクセス違反には対応していません。
・動作サンプル(半角カタカナを含む部分は削除してあります。)
*DM-0,FF
00000000 A0 06 00 09 00 00 00 00 00 00 00 00 00 00 00 00
00000010 DF 0D D0 0C 40 0B 00 09 D0 0C D2 0D 20 22 00 09
00000020 00 09 00 09 00 09 00 09 00 09 00 09 00 09 00 09
00000030 00 09 D0 03 40 2B 00 09 00 09 00 09 00 09 00 09
00000040 00 00 08 00 A0 00 0A A0 00 00 00 00 FF 00 00 1C
00000050 00 00 09 09 00 00 00 00 00 00 00 00 00 00 00 00
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
・コマンドフォーマット2
DS-SSSSSSSS,LLLLLLLL,WWWWWWWW[CR]
(SSSSSSSS:start address, LLLLLLLL:length, WWWWWWWW:wide)
※ダンプ中にターミナルから入力をセンスした場合に、ダンプを中止します。
※メモリアクセス違反には対応していません。
・動作サンプル
*DS-0,20,10
00000000 A006000900000000 0000000000000000
00000010 DF0DD00C400B0009 D00CD20D20220009
*
4-3. メモリ初期化
メモリの指定領域を指定データで書き込みます。
・コマンドフォーマット
IM-SSSSSSSS,EEEEEEEE,II[CR]
(SSSSSSSS:start address, EEEEEEEE:end address, II:initial data)
・動作サンプル
*IM-08F00000,08FFFFFF,FF
*
4-4. Sフォーマットロード
Sフォーマットデータをロードします。
・コマンドフォーマット
LS-SSSSSSSS[CR]
(SSSSSSSS:offset address)
※上記コマンドに続いて、Sフォーマットテキストを転送します。
※オフセットアドレスは、Sフォーマットで指定されるアドレスに
加算されます。
※"complete"のメッセージの後に、プロンプトと未定義コマンド"?"が
表示されますが、これはSフォーマットの終了レコードの復帰改行
によるものです。"complete"メッセージが出力されれば転送は正常
終了です。
・動作サンプル
*LS-0
08F03FE0
complete
*
?
*
4-5. フラッシュ書き込み
フラッシュにデータを書き込みます。書き込みデータはあらかじめ、Sフォーマット
ロードコマンドなどでRAM上に転送しておく必要があります。
なお、フラッシュの書き込み領域がクリアされていない("FF"でない)場合は、該当
する領域に対してブロック消去を実行します。(書き込み先頭アドレスがブロック先頭
でない場合に消去が実行されると、ブロック先頭から書き込み先頭までの内容は失われ
ます。また、書き込み最終以降についても同様に失われます。)
キャッシュ使用時の書き込みアドレス指定は、P2領域を指すように指定します。
・コマンドフォーマット1
WF-SSSSSSSS,DDDDDDDD,LLLLLLLL[CR]
(SSSSSSSS:data address, DDDDDDDD:flash write address, LLLLLLLL:write length)
・動作サンプル
*WF-A8000000,A0000000,5000
*
・コマンドフォーマット2
WR-SSSSSSSS,DDDDDDDD,LLLLLLLL[CR]
(SSSSSSSS:data address, DDDDDDDD:flash write address, LLLLLLLL:write length)
※書き込み終了後、ウォッチドッグタイマを使用して、リセットをかけます。
・動作サンプル
*WR-A8000000,A0000000,5000
4-6. ダンプレジスタ
レジスタの内容をダンプ表示します。(浮動小数点関連レジスタを除く。)
・コマンドフォーマット
DR[CR]
・動作サンプル
>DR
R0-7 :00F71143 B4000000 00000000 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08014A10
SR:00000002 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:0800326E
SSR:00000002 VBR:08000000 SPC:0800326E SGR:08014A10 DBR:00000000
R'0-7:400000F2 CFFFFFFF 080037A8 00000000 00000000 00000000 00000000 00000000
>
4-7. 逆アセンブル表示
指定アドレスから指定ステップ数分を逆アセンブル表示します。
浮動小数点関連命令は、コマンド実行時の浮動小数点ステータス/コントロール
レジスタの状態に依存して表示されます。
・コマンドフォーマット
DA-SSSSSSSS,NN[CR]
(SSSSSSSS:start address, NN:step count)
・動作サンプル
>DA-8003260,e
08003260 D006 MOV.L @(H'800327C,PC)=#H'00FE502A,R0
08003262 4010 DT R0
08003264 8BFD BF H'8003262
08003266 D106 MOV.L @(H'8003280,PC)=#H'B4000000,R1
08003268 E00F MOV #H'0F,R0
0800326A C301 TRAPA #H'01
0800326C D003 MOV.L @(H'800327C,PC)=#H'00FE502A,R0
0800326E 4010 DT R0
08003270 8BFD BF H'800326E
08003272 D103 MOV.L @(H'8003280,PC)=#H'B4000000,R1
08003274 E01F MOV #H'1F,R0
08003276 C301 TRAPA #H'01
08003278 AFF2 BRA H'8003260
0800327A 0009 NOP
>
4-8. ダンプレジスタ&インストラクション
レジスタの内容と現在のプログラムカウンタのインストラクションを表示します。
浮動小数点関連命令は、コマンド実行時の浮動小数点ステータス/コントロール
レジスタの状態に依存して表示されます。
現在のプログラムカウンタのインストラクションが、遅延スロット命令の場合は、
遅延スロットの命令を続いて表示します。
・コマンドフォーマット
DI[CR]
・動作サンプル
>DI
R0-7 :00F71143 B4000000 00000000 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08014A10
SR:00000002 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:0800326E
SSR:00000002 VBR:08000000 SPC:0800326E SGR:08014A10 DBR:00000000
R'0-7:400000F2 CFFFFFFF 080037A8 00000000 00000000 00000000 00000000 00000000
0800326E 4010 DT R0
>
4-9. ダンプ浮動小数点レジスタ
浮動小数点レジスタの内容を表示します。(但し、ヘキサ表示です。)
・コマンドフォーマット
DF[CR]
・動作サンプル
>DF
FR0-7:BFBFDFEA FF7FBFFF FBFFFBBD 75F77FFE 7BF7FFE5 FDDA5FD8 9B3EBD3D 8FFDEFEF
8-15:F3DDFEEF EADEFFFD F3BF7FFF 9095E3BD 57FAEFDC 237F5FFC 7BD7FFFF 9BDFB7BF
FPSCR:00040001 FPUL:9BDFB7BF
XF0-7:5DFFFEB9 FEEFAB5B 7FBDDD3F BDFEFFDF F7BB3FC3 FCBB7546 FF37EF7F FCBB7546
8-15:FB7FDBCF 8BB373FB BFBE6F7F EFBA3BDF FF60EEFF EFFDED9D FEEC53EC FCBB7546
>
4-10. ステップ/トレース実行
・コマンドフォーマット
G[CR]
S[CR]
T[CR]
ST-NN[CR]
TR-NN[CR]
(NN:step count)
※ ブレーク付き連続実行中は、ホスト端末より任意の
キャラクター送信で停止します。
また、プログラムカウンタブレークポイントでも停止
します。
・動作サンプル
>ST-3
R0-7 :00000000 B4000000 080044F0 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015758
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:08003FBE
SSR:00000003 VBR:08000000 SPC:08003FBE SGR:08015758 DBR:00000000
R'0-7:400000F3 CFFFFFFF 080044F0 00000000 00000000 00000000 00000000 00000000
08003FBE E01F MOV #H'1F,R0
R0-7 :0000001F B4000000 080044F0 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015758
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:08003FC0
SSR:00000003 VBR:08000000 SPC:08003FC0 SGR:08015758 DBR:00000000
R'0-7:400000F3 CFFFFFFF 080044F0 00000000 00000000 00000000 00000000 00000000
08003FC0 C301 TRAPA #H'01
R0-7 :0000001F B4000000 080044F0 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015758
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:08003FC2
SSR:00000003 VBR:08000000 SPC:08003FC2 SGR:08015758 DBR:00000000
R'0-7:400000F3 CFFFFFFF 080044F0 00000000 00000000 00000000 00000000 00000000
08003FC2 AFF1 BRA H'8003FA8
08003FC4 0009 NOP
>
4-11. プログラムカウンタブレークポイント設定
・コマンドフォーマット
PB-BBBBBBBB[CR]
(BBBBBBBB:break address)
_PB[CR]
?PB[CR]
※ プログラムカウンタブレークポイントに 0 は指定でき
ません。未指定として解釈されます。
・動作サンプル
>PB-8003fae
Set PB=08003FAE
>G
program counter break !
R0-7 :00000000 B4000000 080044F0 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015758
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08000766 PC:08003FAE
SSR:00000003 VBR:08000000 SPC:08003FAE SGR:08015758 DBR:00000000
R'0-7:400000F3 CFFFFFFF 080044F0 00000000 00000000 00000000 00000000 00000000
08003FAE D107 MOV.L @(H'8003FCC,PC)=#H'B4000000,R1
>?PB
PB=08003FAE
>_PB
PB clear
>?PB
PB=00000000
>
4-12. メモリ内容変更
・コマンドフォーマット1
CM-SSSSSSSS[CR]
(SSSSSSSS:start address)
を入力すると、以下の形式でメモリ内容を変更できます。
AAAAAAAA ??-DD[CR]
(DD:change data)
終了は、ハイフンでの入力待ち状態で、[CR]または、"."を入力します。
また、スペースの入力で、次のアドレスにスキップします。
※メモリアクセス違反には対応していません。
・動作サンプル
*CM-08f00000
08F00000 FF-01
08F00001 FF-23
08F00002 FF-45
08F00003 FF-67
08F00004 FF-80
08F00005 FF-.
*
・コマンドフォーマット2
CS-SSSSSSSS,W[CR]
(SSSSSSSS:start address, W:wide[1|2|3|4|5|6|7|8])
を入力すると、以下の形式でメモリ内容を変更できます。(W=2)
AAAAAAAA ????-DDDD[CR]
(DDDD:change data)
終了は、ハイフンでの入力待ち状態で、[CR]または、"."を入力します。
また、スペースの入力で、次のアドレスにスキップします。
桁数に満たない入力時([CR]で確定)は、MSB側(下位アドレス側)
に0拡張されます。
アドレス指定がワードアライメントで W=2 または W=6 の時は、メモリ
アクセスをワード転送、ロングワードアライメントで W=4 または W=8
の時は、ロングワード転送で行います。
※メモリアクセス違反には対応していません。
・動作サンプル
*CS-08f00080,5
08F00080 FFFFFFFFFF-0123456789
08F00085 FFFFFFFFFF-ABCDEF0001
08F0008A FFFFFFFFFF-0203040506
08F0008F FFFFFFFFFF-07FFFFFFFF
08F00094 FFFFFFFFFF-
*
4-13. レジスタ内容変更
・コマンドフォーマット
CR-RRRR[CR]
(RRRR:register name)
を入力すると、以下の形式でレジスタ内容を変更できます。
RRRR=????????-VVVVVVVV[CR]
(VVVVVVVV:change value)
終了は、ハイフンでの入力待ち状態で、[CR]または、"."を入力します。
また、スペースの入力で、次のレジスタにスキップします。
桁数に満たない入力時([CR]で確定)は、MSB側に0拡張されます。
・動作サンプル
>DR
R0-7 :00000000 B4000000 00000000 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015E58
SR:00000103 GBR:00000000 MACH:00000000 MACL:00000000 PR:080046AC PC:080046B4
SSR:00000103 VBR:08000000 SPC:080046B4 SGR:08015E58 DBR:00000000
R'0-7:400001F3 CFFFFFFF 08004BF0 00000000 00000000 00000000 00000000 00000000
>CR-R0
R0 =00000000-01234567
R1 =B4000000-89ABCDEF
R2 =00000000-.
>DR
R0-7 :01234567 89ABCDEF 00000000 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 08015E58
SR:00000103 GBR:00000000 MACH:00000000 MACL:00000000 PR:080046AC PC:080046B4
SSR:00000103 VBR:08000000 SPC:080046B4 SGR:08015E58 DBR:00000000
R'0-7:400001F3 CFFFFFFF 08004BF0 00000000 00000000 00000000 00000000 00000000
>
4-14. リセット
ウォッチドッグタイマを利用して、リセットを発生させます。
・コマンドフォーマット
Reset[CR]
・動作サンプル
*Reset
::: RESET :::
4-15. メモリ内容ウォッチ
メモリ内容ダンプを繰り返し実行します。画面制御には、エスケープシーケンス
を使用していますので、次のコードに対応したターミナルをご使用ください。
カーソルアップ: ESC[nnA (nn=移動行数)
なお、本モニタの出力のうち、H'0d,H'0a で改行、H'0d で復帰のみを想定して動作
しています。
・コマンドフォーマット1
DW-SSSSSSSS,EEEEEEEE[CR]
(SSSSSSSS:start address, EEEEEEEE:end address)
※表示中にターミナルから入力をセンスすると、ダンプを終了します。
※ダンプ範囲が24行を超える場合は、繰り返し表示は行いません。
・動作サンプル
*DW-8005044,8005087
08005040 20 BF 46 20 34 36 20 32 30 20 20 33 . .
08005050 20 20 20 20 20 2E 20 30 20 33 30 20 20 32 30 20 0 20 0 20 0 20
08005060 20 20 30 20 32 30 00 00 00 07 20 20 20 20 20 20 20 20....
08005070 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
08005080 00 00 00 00 00 00 00 00 ........
・コマンドフォーマット2
WS-SSSSSSSS,LLLL,WW[CR]
(SSSSSSSS:start address, LLLL:length, WW:wide)
※表示中にターミナルから入力をセンスすると、ダンプを終了します。
※ダンプ範囲が24行を超える場合は、繰り返し表示は行いません。
・動作サンプル
*WS-8005044,44,22
08005044 20D10D1B5B334130 3830303530343434 3334203333333432 3033333333333333
3434
08005066 0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000
4-16. 逆アセンブルリスト表示ステップ/トレース実行
プログラムカウンタの前後を含めて逆アセンブルリストとレジスタ内容を表示ま
たは表示して、ステップ/トレース実行します。画面制御には、エスケープシーケ
ンスを使用していますので、次のコードに対応したターミナルをご使用ください。
カーソルアップ: ESC[24A (24=移動行数)
カーソル位置から行末までをクリア: ESC[K
なお、本モニタの出力のうち、H'0d,H'0a で改行、H'0d で復帰のみを想定して動作
しています。
ステップ実行は、1命令または1逆アセンブル行を(遅延スロット命令は同時に)
実行します。サブルーチン呼び出しは、停止することなく実行(ステップ非表示連
続実行)されます。また、DT 命令の場合は、続く1命令の次の命令までスキップし
ます。
・コマンドフォーマット
VL
VS
VT
※ ステップ表示実行中は、ホスト端末より任意のキャラクター送信で
停止します。また、プログラムカウンタブレークポイントでも停止します。
尚、逆アセンブルリスト表示の '>' がプログラムカウンタ位置です。
・動作サンプル
08004BF6 D107 MOV.L @(H'8004C14,PC)=#H'B4000000,R1
08004BF8 B00E BSR H'8004C18
08004BFA E00F MOV #H'0F,R0
08004BFC D004 MOV.L @(H'8004C10,PC)=#H'00FE502A,R0
08004BFE 4010 DT R0
08004C00 8BFD BF H'8004BFE
08004C02 C3FF TRAPA #H'FF
>08004C04 D103 MOV.L @(H'8004C14,PC)=#H'B4000000,R1
08004C06 B007 BSR H'8004C18
08004C08 E01F MOV #H'1F,R0
08004C0A AFF1 BRA H'8004BF0
08004C0C 0009 NOP
08004C0E 0000 ????
08004C10 00FE MOV.L @(R0,R15),R0
08004C12 502A MOV.L @(H'28,R2),R0
08004C14 B400 BSR H'8005418
08004C16 0000 ????
R0-7 :00000000 B4000000 08005140 00000000 00000000 00000000 00000000 00000000
R8-15:00000000 00000000 00000000 00000000 00000000 00000000 00000000 080163A8
SR:00000003 GBR:00000000 MACH:00000000 MACL:00000000 PR:08004BFC PC:08004C04
SSR:00000003 VBR:08000000 SPC:08004C04 SGR:080163A8 DBR:00000000
R'0-7:400000F3 CFFFFFFF 08005140 00000000 00000000 00000000 00000000 00000000
>
4-17. ユーザープログラムからターミナルへの出力
非起動状態の場合に、レジスタ r0 下位8ビットのデータをターミナルへ
送信することができます。
entry dbg_usr_putc
data r0(>=0)
return r0:T = r0>=0:1 send data
r0>=0:0 send buffer full
r0< 0:0 monitor running (r0 lower 8bit keep)
break r0(monitor running),other none.
4-18. ユーザープログラムのターミナルからの入力
非起動状態の場合に、ターミナルからのデータをレジスタ r0 にて受信する
ことができます。
(割り込み駆動モードの起動のために "@" を受信することは出来ません。)
entry dbg_usr_getc
data none.
return r0:T = r0>=0:1 r0:get data
r0= 0:0 buffer empty
r0=-1:0 monitor running
break r0
5.組み込み手順
5-1. 組み込み例
初期化部分で、モニタの初期化サブルーチンをコールしたのちに、
割り込み禁止を解除します。(SETUP.SRC)
その他、詳細はソースコードをご参照ください。
5-2. 外部シンボル定義について
モニタ内の外部シンボル名はすべて dbg_ から始まります。
(一部、アンダースコア(_)付きのものが追加されています。)
dbg_ini 初期化
dbg_sci_err SCIエラー割り込みエントリー
dbg_sci_rxd SCI受信割り込みエントリー
dbg_sci_txd SCI送信割り込みエントリー
dbg_sci_end SCI処理切り替えエントリー
dbg_sci_lop SCIポーリングエントリー
その他、ソースコードをご参照ください。
※ご注意
dbg_putc, dbg_getc は、AKI-H8版とは異なりユーザープロ
グラム入出力用ではありません。それぞれ、dbg_usr_putc,
dbg_usr_getc と成っています。
5-3. 生成ファイルについて
添付 makefile のターゲットは、debuger です。
※ver.0.09 までは、デバッグ用とフラッシュ書き込み用と2種類ありましたが、
ver.0.10 より、プログラムをRAMに転送して、RAM上で実行するようにしま
したので、生成ファイルは1種類のみです。JTAG を使用して動作させている状態
にて、WF または WR コマンドによりコードエリアをフラッシュに書き込むと、そ
のまま、フラッシュから起動することができます。(SETUP.SRC内でSDRAM初
期化後、自身をフラッシュからRAMへコピーします。)
6.注意事項
このプログラムのソースコード品質は劣悪ですので、参考にし
ないでください。たまたま動いている状態であり、並列実効コー
ドやコードサイズなどの冗長性の考慮は全く行っておりません。
また、十分なデバックは行っていませんので、ご使用に当たって
は十分ご注意願います。このソフトウエアを使用したことによる
すべての損害について、作者は一切その責任を負わないものとし
ます。
7.その他
このプログラムは、著作権を放棄していない「フリーソフトウ
エア」です。注意事項を十分ご確認の上、自由に使用していただ
いてかまいません。
7-1 連絡先
このプログラムに対する、ご意見、ご要望、ご質問、ご感想、
バグ情報などございましたら下記の宛先までメールをお願い致し
ます。尚、頂いた、ご意見、ご要望、ご質問は、ホームページ上
で、公開することもありますので、予めご了承ください。
AKIYA e-mail:aki_chi@live.jp
7-2 履歴
ver.0.11 2002/7/28
・ユーザープログラムからのターミナル入出力ルーチンを追加
・いくつかのエントリーにアンダースコア(_)付きを追加
ver.0.10 2002/6/1
・プログラムの実行をRAM上で行うように変更
ver.0.09 2001/12/2
・逆アセンブルリスト表示ステップ/トレース実行コマンドを追加
ver.0.08 2001/11/17
・メモリ内容ウォッチコマンドを追加
・リセットコマンド説明追加
ver.0.07 2001/9/24
・レジスタ内容変更コマンドを追加
・メモリ内容変更コマンドを追加
・ファイル名を変更
ver.0.06 2001/8/15
・デバッグモード移行ファンクションを追加
・ステップ/トレース実行コマンドを追加
・プログラムカウンタブレークポイント設定コマンドを追加
ver.0.05 2001/7/9
・ダンプ浮動少数点レジスタコマンドを追加
・逆アセンブル表示に浮動小数点関連命令をサポート
・ダンプレジスタ&インストラクションコマンドの遅延スロット対応
ver.0.04 2001/5/20
・ダンプレジスタコマンドを追加
・逆アセンブル表示コマンドを追加
・ダンプレジスタ&インストラクションコマンドを追加
ver.0.03 2001/3/15
・メモリ内容ダンプのコマンドフォーマット2を追加
・メモリ初期化コマンドを追加
・Sフォーマットロードコマンドを追加
・フラッシュ書き込みコマンドを追加
・シリアル転送レートを 38400bps から 115200bps に変更
・生成ファイル名を変更
ver.0.02 2001/1/17
・メモリ内容ダンプコマンドを追加
・ディレクトリ構造変更(デバッガソースは DBG ディレクトリ内へ移動)
・セクション名に DBG_ を追加
・RTS2端子をポート出力に変更
ver.0.01 2001/1/7 公開