SH2基板のモニタと、SDカードの操作 単純な構成と最低限の機能
組み込みCPUのモニタには、最低限の機能として以下のものを含んでいます。
  1. SH2のRS232Cポートを介して、パソコンのターミナルソフト使って操作します。
  2. ターミナルでの操作は、コマンドライン形式となります。1文字の命令、または文字列命令で行います。
  3. SH2の任意のメモリ番地を、ヘキサでターミナルに表示します。ダンプメモリ
  4. SH2の任意のアドレスに対して、8、16、32ビット単位で読み書きできます。セットメモリ
  5. SH2の任意のアドレスから、任意のアドレスへ、メモリの内容をコピーします。ムーブ
  6. SH2の任意の2個のメモリブロックの内容を比較して、違いを表示します。ベリファイメモリ
  7. SH2の任意のアドレスを先頭にして、パソコンから送られるSレコード形式のヘキサデータをロードします。ロード
  8. SH2の任意のアドレスからメモリの内容をSレコード形式のヘキサデータに変換してパソコンに送ります。ダンプSレコード
  9. SH2の任意のアドレスから実行します。ゴー
以上の機能があれば、パソコンからヘキサデータをRAMにロードして、そこから実行することもできるので、簡単なデバッグができます。SH2にSRAMなどがあると、内部フラッシュメモリを書き換えることなく、プログラムのテストができます。これだけの機能で8kBほどです。

ターミナルを使ってコマンドラインの入力

電源ONで以下のようにターミナルに表示します。ここで、SH2-Bug>の右の" " はターミナルのカーソルです。
SH7144 monitor
SH2-Bug>
ターミナルからコマンドを入力すると、SH7144からエコーバックが表示されます。以下は、メモリの0〜0xFF番地をヘキサで表示するコマンドを入力した場合です。"d0,ff"
SH7144 monitor
SH2-Bug>d0,ff
ここで、Enterを入力すると、以下のように0〜0xFF番地のメモリ内容が表示されます。
SH2-Bug>d0,ff
ADDR      0 1  2 3  4 5  6 7  8 9  A B  C D  E F  ascii
00000000 0000 0400 FFFF FFF0 0000 0400 FFFF FFF0 [ ................]
00000010 0000 044E 0000 0400 0000 0458 0000 0400 [ ...N.......X....]
00000020 0000 0400 0000 0462 0000 046C 0000 0476 [ .......b...l...v]
00000030 0000 0480 0000 0400 0000 0400 0000 0400 [ ................]
00000040 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
00000050 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
00000060 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
00000070 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
00000080 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
00000090 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000A0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000B0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000C0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000D0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000E0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
000000F0 0000 0400 0000 0400 0000 0400 0000 0400 [ ................]
SH2-Bug>

コマンド入力は、BackSpace キーで、1文字戻ります。
SH2-Bug>d0,fff ここで BackSpace を押す
SH2-Bug>d0,ff

コマンド入力は、コントロールS キーで、1カーソルだけ左に移動し、コントロールDなら右に移動する、1行だけの編集機能があります。初期状態で、挿入モードになっています。またコントロールGで、カーソルの文字を消し、右の文字列を1文字左に詰めます。
SH2-Bug>d0,ff ここで コントロールS を押します
SH2-Bug>d0,ff ここで0を押すと、0が挿入されます
SH2-Bug>d0,f0f ここでコントロールDを押します
SH2-Bug>d0,f0f ここで BackSpace を押す
SH2-Bug>d0,f0 ここで Enter を押すと、コマンドは d0,f0 になります
SH2-Bug>d0,f0 ここで コントロールO(オー)を押すと上書きモードになります。
SH2-Bug=d0,f0 プロンプトが"Sh2-Bug=" になり、ここで コントロールS を押します
SH2-Bug=d0,f0ここで f を押します。0 は上書きされ消えます。
SH2-Bug=d0,ff ここで Enter を押すと、コマンドは d0,ff になります
10 SH2-Bug=d0,ff ここで コントロールO(オー)、その後コントロールSを2回押します
11 SH2-Bug>d0,ff ここで コントロールGを押します
12 SH2-Bug>d0,fここで 7 を押します
13 SH2-Bug>d0,7fここで コントロールDを押します。
13 SH2-Bug>d0,7f ここで Enter を押すと、コマンドは、"d0,7f" になります

メモリの変更コマンド、"s"、"sw"、"sl"

任意のアドレスのメモリを、バイト s、ワード sw、ロングワード sl で、表示、変更します。アドレスは、コマンドに続けてアドレス値を追加します。
SH2-Bug>s400000 ここで Enter を押します。0x400000 番地からバイトで表示、変更
00400000=00  ここで、80 を入力
00400000=00 80 Enter を入力で 80 に変更され、次のアドレスに進みます。
00400001=00  新しいデータを順次入力して変更できます。
00400001=00  ここで、"r" キーを押すと、アドレスが1番地戻って変更後を表示します。
00400000=80  80 なら正しく変更されたことになります。80 以外ならメモリがどこか異状です
00400000=80  この状態で、"n" キーを押すと、このアドレスのメモリは変更せず以下のようになります。
00400001=00  次のアドレスの内容を表示します。"n" は、アドレスのみ進めます。"r" はアドレスのみ戻します。
	

sl コマンドの例です。
SH2-Bug>sl412000 ここで Enter を押します。0x412000 番地からロングワードで表示、変更
00412000=C408EEA1  ここで、12345678 を入力
00412000=C408EEA1 12345678 Enter を入力で 12345678 に変更され、次のアドレスに進みます。
00412004=A8436BCF  新しいデータを順次入力して変更できます。
00412004=A8436BCF  ここで、"r" キーを押すと、アドレスが4番地戻って変更後を表示します。
00412000=12345678  12345678 なら正しく変更されたことになります。12345678 以外ならメモリがどこか異状です
	

メモリのコピーコマンド、"m"、 "mw"、 "ml"

任意のアドレスから(ワードなどでは、そのサイズの境界を指定する必要があります)、任意のアドレスへ、任意個数コピーします。 操作の前に、各メモリは以下の通りだとします。
SH2-Bug>d410000
ADDR      0 1  2 3  4 5  6 7  8 9  A B  C D  E F  ascii
00410000 FC78 FDA4 A843 6BCF 1F62 2908 A440 9082 [ .x.、ィCkマ.b).、@垂]
00410010 F997 E00D B288 36EB 8D9D 7419 A0C8 9C9D [.伶.イ.6狛t.ネ悃]
00410020 1B3A 3C8F 3464 9EA3 7233 BA90 FB1D F34E [.:<.4d椒r3コ箭..N]
00410030 B19F 3697 02C7 1BA8 E077 F737 9A09 62C4 [ ア.6..ヌ.ィ烱.7..bト]
00410040 5648 5063 D1EB 71AE 2BFF EADF 8C6F AA23 [ VHPcムqョ+.゚経ェ#]
00410050 7E1C 22D7 E819 7453 FC9B 38CB 5ECF 3B50 [ ~."ラ..tS..8ヒ^マ;P]
00410060 9DCE 15FE 11BB 57C5 882D A8D9 F9D5 F16A [ 斟...サWナ.-ィル.ユ.j]
00410070 E609 770E 89B5 8105 B32A 81BE 5891 F595 [ ..w.卸..ウ*∪X託.]
SH2-Bug>d412000
ADDR      0 1  2 3  4 5  6 7  8 9  A B  C D  E F  ascii
00412000 CC84 2CCE FFAB D553 6662 2F01 0EAC 9062 [ フ.,ホ.ォユSfb/..ャ臣]
00412010 09DA BE73 12A9 D13E 6F5C 922F CA43 5F53 [.レセs.ゥム>o\./ハC_S]
00412020 C2F5 BA09 653F F9F3 550A 2B17 C84B 128D [ ツ.コ.e?..U.+.ネK..]
00412030 7F41 0C1D 5CAA 4F5F ED38 59FD 3BA3 160E [ .A..\ェO_.8Y.;」..]
00412040 52C7 0454 B914 B06A 2073 9D9C DC36 E1BC [ Rヌ.Tケ.ーj s撩ワ6眈]
00412050 4239 7C87 D00C 569B 242C 2C88 133E A54F [B9|ミ.V.$,,..>・O]
00412060 776E 0046 A58F A4EB CF79 30A2 FF3F 6976 [ wn.F・商マy0「.?iv]
00412070 0BE2 2FA8 A0F5 0EA5 B7FD 85DC 2086 98BC [ ../ィ..・キ.ワ 仂]
SH2-Bug>
このメモリダンプでは、シフトJIS漢字コード第1、第2水準を検出して表示できます。(ターミナルソフトが、シフトJISに対応している必要があります)

ここで、m コマンドを実行します。コピー元は 0x410000、コピー先は 0x412000 、個数は、0x80 です。
SH2-Bug>m410000,412000 ここで Enter を押します。

結果を表示すると、以下のようになります。
SH2-Bug>d410000
ADDR      0 1  2 3  4 5  6 7  8 9  A B  C D  E F  ascii
00410000 FC78 FDA4 A843 6BCF 1F62 2908 A440 9082 [ .x.、ィCkマ.b).、@垂]
00410010 F997 E00D B288 36EB 8D9D 7419 A0C8 9C9D [.伶.イ.6狛t.ネ悃]
00410020 1B3A 3C8F 3464 9EA3 7233 BA90 FB1D F34E [.:<.4d椒r3コ箭..N]
00410030 B19F 3697 02C7 1BA8 E077 F737 9A09 62C4 [ ア.6..ヌ.ィ烱.7..bト]
00410040 5648 5063 D1EB 71AE 2BFF EADF 8C6F AA23 [ VHPcムqョ+.゚経ェ#]
00410050 7E1C 22D7 E819 7453 FC9B 38CB 5ECF 3B50 [ ~."ラ..tS..8ヒ^マ;P]
00410060 9DCE 15FE 11BB 57C5 882D A8D9 F9D5 F16A [ 斟...サWナ.-ィル.ユ.j]
00410070 E609 770E 89B5 8105 B32A 81BE 5891 F595 [ ..w.卸..ウ*∪X託.]
SH2-Bug>d412000
ADDR      0 1  2 3  4 5  6 7  8 9  A B  C D  E F  ascii
00412000 FC78 FDA4 A843 6BCF 1F62 2908 A440 9082 [ .x.、ィCkマ.b).、@垂]
00412010 F997 E00D B288 36EB 8D9D 7419 A0C8 9C9D [.伶.イ.6狛t.ネ悃]
00412020 1B3A 3C8F 3464 9EA3 7233 BA90 FB1D F34E [.:<.4d椒r3コ箭..N]
00412030 B19F 3697 02C7 1BA8 E077 F737 9A09 62C4 [ ア.6..ヌ.ィ烱.7..bト]
00412040 5648 5063 D1EB 71AE 2BFF EADF 8C6F AA23 [ VHPcムqョ+.゚経ェ#]
00412050 7E1C 22D7 E819 7453 FC9B 38CB 5ECF 3B50 [ ~."ラ..tS..8ヒ^マ;P]
00412060 9DCE 15FE 11BB 57C5 882D A8D9 F9D5 F16A [ 斟...サWナ.-ィル.ユ.j]
00412070 E609 770E 89B5 8105 B32A 81BE 5891 F595 [ ..w.卸..ウ*∪X託.]
SH2-Bug>

ここで、2個のメモリブロックで、内容が同じかチェックします。v コマンド
SH2-Bug>v410000,412000,80 ここで Enter を押します。
SH2-Bug> とのみ表示されます。

ここで、s412010 Enter で、412010 番地を、0xFF に変更します。
SH2-Bug>s412010
00412010=F9 ff
00412011=97 
SH2-Bug>
ここで、2個のメモリブロックで、内容が同じかチェックします。v コマンド
SH2-Bug>v410000,412000,80 ここで Enter を押します。
	
00410010=F9 00412010=FF
SH2-Bug> と表示され、0x410010 番地と、0x412010 番地の内容が異なってることを示します

パソコンのターミナルソフトからSレコード形式のデータを送信し、メモリにロード

コマンドは、小文字のL "l"、"l400000"、など。"l400000" は、Sレコードのアドレス情報に、0x400000 を加算したアドレスになります。"l" のみ場合は、アドレスの加算が0になります。Sレコードのファイルの最後には、"S7" か "S8" か "S9" で始まる終了を示す行がないと、パソコンからの送信が終わっても、SH2 は受信を待ち続けます。もし、終了の行が無いファイルの場合は、コントロールCで強制終了できます。
SH2-Bug>l10000 ここで Enter を押すと、以下のように加算値が 00010000 と表示されます。
load bias = 00010000
 この状態にしてから、ターミナルソフトで、Sレコードファイルを送信します。全部送信すると以下のように表示します。
load start address = 00410000 ---> 最初に受信したSレコードデータをどこに書いたかを示します。
load bytes = 000021F7         ---> 受信してメモリに書いた総バイト数を表示します。
SH2-Bug> 

メモリの内容をSレコード形式のデータに変換して、ターミナルソフトに送信

これは、メモリをヘキサで表示するコマンドのオプションで実行します。コマンドは、"ds" のように、"d" コマンドに "s" を追加した形式になります。ターミナルソフト側では、受信したデータをファイルに保存できるようにしておきます。先頭アドレスのみの場合は、そこから128バイトだけ送信します。
SH2-Bug>ds440000
S31500440000B919D5B28888EBF5B8319B0D6C24D22743
S31500440010BB0E95B1B6EF9A2B6D45A166883AA305FA
S31500440020EB994F452FA3A4E68C49B17B915695F3A2
S31500440030398AC77CA9D316165BB0F241AA8801CD8A
S3150044004090AF8F8DB420E45F9D4BCEB55EF2E39EB8
S31500440050464403821879BDDCFB66BC995683DC1B97
S315004400603AD37F7D106F7CBDB92BE69F6D7BA1E8AB
S31500440070888460D8F934DEBD573772736380E511DE
S70500000000FA

SH2-Bug>


任意の番地から実行

コマンドは、"g410000" と、"g" に続いて実行したいアドレスを指示します。内部の処理としては、0x410000 番地をサブルーチンとして呼び出してしています。jsr となり、実行するプログラムがサブルーチン形式なら、return することも可能です。
SH2-Bug>g410000 ここで Enter を押すと、0x410000 番地からサブルーチンとして実行します

実行したプログラムが return で戻れると、以下のように、戻り値を表示します。例として、"sw410000" コマンドで、マシン語で次のようにメモリに書いて、実行してみます。
SH2-Bug>sw410000
00410000=0000 e041    mov #0x41,r0 の命令、レジスタ r0 に 0x41 をロードします
00410002=0000 b       rts          return 命令
00410004=0000 9       nop          NOP 命令、これは、SHの遅延スロットで、実行されます。
00410006=0000 ここで、コントロールCを押して、メモリの変更を中止します。
SH2-Bug>g410000       0x410000 番地を実行します。
return = 00000041     r0 を表示します。 0x41 
SH2-Bug>

SDカードの操作コマンドを追加
SDカードの操作コマンドを追加したもの





戻る

ホームページへ戻る


連絡先: メール



inserted by FC2 system