AKI-H8のコツ -SRAM増設編-
目次(すべてこの1ページ内です)
SRAMを接続
4Mbit(=512kbyte)のSRAMを増設する。日立の HM628512BLP-5 で、アキバの若松通商で3000円。
接続はこの回路図を使わせていただきました。バスを繋ぐだけの簡単な回路です。
H8 は 16bit のデータバスを持つが、SRAM との接続は上位データバス D15〜D8 を使う。これは後述のモニタプログラムで設定している。したがって、SRAMのデータバス D0〜D7 には、H8のD8〜D15 が接続されている。なお、HWR信号は H8 が上位データバス D15〜D8 を使って外部アドレスへライトする時にアクティブになる。
モニタを手に入れる
必要なもの(3つ)
- ・ MS-DOS版(C/C++コンパイラVer. 3.0) H8/300H用 モニタプログラム
- 日立のサイトで配布しているモニタ。これをカスタマイズして使う。なお、モニタのバージョンは Ver. 2.2A 。バージョンが違う場合は、カスタマイズの方法が変わるので注意。
- ・ モニタ生成用の必要ファイル
-
- ・ monitor.src
- 上記の「モニタ生成用の必要ファイル」の中に monitor.src が用意されているが、ハードウェア構成が異なるので、このファイルに置き換える。これをしないと、増設SRAMへ読み書きしても、チグハグな値が読み書きされてしまう。
カスタマイズ
カスタマイズはこちらに書かれている方法で行う。
300hmoni.zip を 300hmoniディレクトリに展開。monitor.src を上書きでコピーする。
300hmoniディレクトリの下に bat と obj という名前のディレクトリを作り、bat 内に monitor.sub, as-300hmoni.bat, lnk-300hmoni.bat をコピーする。
秋月アセンブラの A38h.exe、C38h.exe、L38h.exe の3つのあるディレクトリへパスを通し、2つのバッチファイル as-300hmoni.bat, lnk-300hmoni.bat を bat ディレクトリから実行すると、bat内に monitor.mot ができている。
>set path=c:\h8;%PATH% (アセンブラへパスを通す)
>cd 300hmoni\bat
>as-300hmoni
>lnk-300hmoni monitor.sub
最終的にはこうなる。
動作試験
できた monitor.mot を H8 に焼きこむ。
TeraTerm を起動し、シリアルポートの設定を行う。
Port : COM1
Baud rate : 38400
Data : 8bit
Parity : none
Stop : 1bit
Flow control : Xon/Xoff
マザーボードの電源を入れて
H8/3048 Series Advanced Mode Monitor Ver. 2.2A
Copyright (C) Hitachi, Ltd. 1995
Copyright (C) Hitachi Microcomputer System, Ltd. 1995
:
|
と表示されればオッケー。文字化けする場合は、上記のシリアルポートの設定があやしい。
"?"コマンドで、コマンドの説明とアドレス空間が表示される。
: ?
Monitor Vector 00000 - 000FF
Monitor ROM 00130 - 05ACF
Monitor RAM FEF10 - FF08B
User Vector 00000 - 000FF
. : Changes contents of H8/300H registers.
A : Assembles source sentences from the keyboard.
B : Sets or displays or clear breakpoint(s).
D : Displays memory contents.
DA : Disassembles memory contents.
F : Fills specified memory range with data.
G : Executes real-time emulation.
H8 : Displays contents of H8/3042 peripheral registers.
L : Loads user program into memory from host system.
M : Changes memory contents.
R : Displays contents of H8/300H registers.
S : Executes single emulation(s) and displays instruction and registers.
:
|
H8/3048内臓の 4kbyte の RAM は H'FEF10〜H'FF08B に割り当てられていることが分かる。
RAM なので自由に読み書きできるので、H'FEF10〜H'FEF30 を H'FF で埋めてみて、正しく書き込まれているかを確認してみる。
: d fef10
< D A T A > < ASCII CODE >
FEF10 4D 28 C4 C1 4B 82 BF F1 80 04 00 01 06 A8 1E 19 "M(..K..........."
FEF20 1A 24 06 05 CF CA 80 1A 06 7E 42 02 B5 FC 06 0D ".$.......~B....."
FEF30 20 48 09 76 06 02 07 F1 00 01 06 AF 84 48 69 82 " H.v.........Hi."
FEF40 06 BB 00 85 56 17 00 00 77 7B 82 00 64 20 66 65 "....V...w{..d fe"
FEF50 66 31 30 0D 00 05 50 39 02 04 ED 6C 04 2A 21 39 "f10...P9...l.*!9"
FEF60 D0 07 23 4A E2 30 24 84 8D 2D 0E C0 0D 81 60 46 "..#J.0$..-....`F"
FEF70 00 01 A6 41 08 08 5C F5 08 98 CA 11 00 09 7E 68 "...A..\.......~h"
FEF80 8E 46 A5 00 EE AA 51 1E 83 96 07 88 0D 3D 00 A8 ".F....Q......=.."
FEF90 80 00 F1 D1 24 00 27 A2 06 A2 AD A5 D0 D8 84 DE "....$.'........."
FEFA0 E7 1B 00 08 A8 75 C8 08 CF 3D 21 82 0D CE 80 8E ".....u...=!....."
FEFB0 80 00 11 7C 03 10 90 EF 04 00 D4 AC 00 20 9C DB "...|......... .."
FEFC0 E6 63 01 11 A2 7D 01 12 B7 33 20 44 0D 95 00 03 ".c...}...3 D...."
FEFD0 53 00 A4 21 02 11 06 8A 00 01 0F C4 04 00 78 12 "S..!..........x."
FEFE0 F8 8A AC 1F 95 4E E8 00 7E 0B 40 2A 64 20 66 65 ".....N..~.@*d fe"
FEFF0 66 31 30 0D 50 11 41 05 10 40 0B 58 20 52 14 F1 "f10.P.A..@.X R.."
FF000 BA F6 50 40 92 FE 08 20 FF 5B 40 00 44 00 00 00 "..P@... .[@.D..."
: f fef10 fef30 ff
: d fef10
< D A T A > < ASCII CODE >
FEF10 4D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "M..............."
FEF20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
FEF30 FF 48 09 76 06 02 07 F1 00 01 06 AF 84 48 69 82 ".H.v.........Hi."
FEF40 06 BB 00 85 56 17 00 00 77 7B 82 00 64 20 66 65 "....V...w{..d fe"
FEF50 66 31 30 0D 00 05 50 39 02 04 ED 6C 04 2A 21 39 "f10...P9...l.*!9"
FEF60 D0 07 23 4A E2 30 24 84 8D 2D 0E C0 0D 81 60 46 "..#J.0$..-....`F"
FEF70 00 01 A6 41 08 08 5C F5 08 98 CA 11 00 09 7E 68 "...A..\.......~h"
FEF80 8E 46 A5 00 EE AA 51 1E 83 96 07 88 66 20 66 65 ".F....Q.....f fe"
FEF90 66 31 30 20 66 65 66 33 30 20 66 66 0D D8 84 DE "f10 fef30 ff...."
FEFA0 E7 1B 00 08 A8 75 C8 08 CF 3D 21 82 0D CE 80 8E ".....u...=!....."
FEFB0 80 00 11 7C 03 10 90 EF 04 00 D4 AC 00 20 9C DB "...|......... .."
FEFC0 E6 63 01 11 A2 7D 01 12 B7 33 20 44 0D 95 00 03 ".c...}...3 D...."
FEFD0 53 00 A4 21 02 11 06 8A 00 01 0F C4 04 00 78 12 "S..!..........x."
FEFE0 F8 8A AC 1F 95 4E E8 00 7E 0B 40 2A 64 20 66 65 ".....N..~.@*d fe"
FEFF0 66 31 30 0D 66 65 66 33 30 20 66 66 0D 52 14 F1 "f10.fef30 ff.R.."
FF000 BA F6 50 40 92 FE 08 20 FF 5B 40 00 44 00 00 00 "..P@... .[@.D..."
:
|
正しく書き込まれていることがわかる。
電源を切り、マイコンボード AE-3048 上の CN5 の1番と2番をショートさせ、モード6とする。ジャンパピン等を使うと良い。ちなみに、何もしないときはモード7。
電源を入れてモニタで "?" コマンドを実行すると、アドレス空間が変わっている。モード7が 1Mbyte のアドレス空間なのに対し、モード6は 16Mbyte のアドレス空間を持っているからだ。
: ?
Monitor Vector 000000 - 0000FF
Monitor ROM 000130 - 005ACF
Monitor RAM FFEF10 - FFF08B
User Vector 200000 - 2000FF
(省略)
|
増設した SRAM は、モニタプログラムで H'200000〜H'27FFFF に割り当ててある。この範囲に値を書き込んでみて、正しく読み書きできるかを確認する。
: d 200000
< D A T A > < ASCII CODE >
200000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
200090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
2000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
: f 200000 200100 ff
: d 200000
< D A T A > < ASCII CODE >
200000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
200090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2000F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
|
: d 270000
< D A T A > < ASCII CODE >
270000 77 FF FF 7B F7 A9 7F FA DF DD DF BB 1F D0 76 F3 "w..{..........v."
270010 AE EF 59 BF 4A F8 DB FF F7 6B 7E F5 FD 90 7B F7 "..Y.J....k~...{."
270020 BB B4 2A FE F7 F7 36 EF 73 7F DE DF 6D 6F EB 57 "..*...6.s...mo.W"
270030 F4 D5 FD BB ED 4D 93 34 FF FE EF B9 F9 E6 1F 1D ".....M.4........"
270040 61 9D FB 7E 1B DE 0D AA AD BC 5F 6E DE 8E E7 35 "a..~......_n...5"
270050 EE 6F BB 9B D3 BF 79 97 6F 23 7F FB ED F9 7C 36 ".o....y.o#....|6"
270060 DA AB E5 9E F5 EE 76 AD 96 5B BB 6E ED 36 95 EF "......v..[.n.6.."
270070 B4 74 5F 73 AE C6 BB 3A BD 7C D4 DF B3 59 FB EE ".t_s...:.|...Y.."
270080 80 A5 34 AC 12 02 54 00 46 E9 00 50 0D 02 E1 40 "..4...T.F..P...@"
270090 0F 64 AD 04 40 11 84 02 42 00 36 41 18 C0 4D 20 ".d..@...B.6A..M "
2700A0 54 2E 1A 25 26 00 24 4A A6 C2 40 00 30 03 49 90 "T..%&.$J..@.0.I."
2700B0 0A 57 46 48 31 90 01 0B A3 10 81 11 01 54 58 16 ".WFH1........TX."
2700C0 40 44 99 4A 20 00 10 81 56 17 8E A1 59 21 83 24 "@D.J ...V...Y!.$"
2700D0 A4 30 0C 20 08 86 01 52 84 09 C0 9A 84 04 90 FB ".0. ...R........"
2700E0 62 3A AB 81 C1 60 19 92 14 44 01 01 DE 4A 12 82 "b:...`...D...J.."
2700F0 22 F9 AA 14 34 0A 29 01 09 3A 7B 04 A3 16 45 C8 ""...4.)..:{...E."
: f 270000 271000 ff
: d 270000
< D A T A > < ASCII CODE >
270000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
270090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
2700F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "................"
|
書き込んだ値が、正しく読み込めているのが分かる。
ここでは H'FF を書き込んでみたが、H'AA と H'55 を交互に書き込んでみると良い。
H'55 = B'01010101
H'AA = B'10101010
ってことで、ビットのショートなんかを発見するテクニック。
TOP
|