秋月電子製 AKI-H8利用記


(99.11.03更新)


<AKI-H8ソフト開発---モニタ、Cコンパイラ等の利用記>

前述のGIGOさんのホームページhttp://homepage1.nifty.com/gigo/において「GPS & H8(電子工作)」掲示板にいろいろと有用な解説があります。
また、nori-chanのホームぺージ http://www.ne.jp/asahi/gps/nori/において、n2ih8の開発環境を利用したプログラム作成例があります。

n2ih8のドキュメントにも記述されていますが、アセンブラはまだしも、マイコン用Cコンパイラについてはマイコン初心者には使いこなすまでにいろいろ関門があるように感じています(手順の理解という意味で・・・。コーディング自体はCの方が楽かもしれません)。
なお、私はサルにも分かるH8というドキュメントが秋月電子から提供されています(HPからもダウンロード可能)が、まずこれを読んでマイコンのイメージを学ぶといいかもしれません。
巷ではZ80関係のマイコンの参考書があり、マイコンの勉強用として薦めているところをよく見ますが、とりあえずはなくても何とかなています。

<unixとは違う!>---AKI-H8用のCプログラムを書こうとして最初に感じたこと

正確には、unix上でCのソースをコンパイルして実行するのと比べると、手順が複雑というべきでしょうか。
unix上の通常のコンパイラーと違って、main{}を含む***.cなどというファイルを用意しただけでは動きません。

秋月のCコンパイラーのサンプルプログラムで解説されていますので、まずそちらを理解する必要があるようです。
具体的には、秋月電子提供のドキュメントなどをみると、リセットベクタ、割り込みベクタ、スタックベクタをアセンブラで記述しリンクする必要があるようです。
リセットベクタ、割り込みベクタ、スタックベクタや、リセット動作、割り込み動作、スタックについては、キット付属のハードウェアマニュアルをみるとわかるでしょう。

組み込み用CPUというかマイコンの場合、プログラム(機械語レベル)がどのように実行されていくのかハードのしくみをちょっとは理解しておく必要があるようです。
また、n2ih8のGarminU.batやGarminM.batの内容をみてどういう手順が必要か勉強するといいかなと感じています。そのへんを解説してあるHPはあまりみたことがありません。ただ、n2ih8は私には高度であり、アセンブラプログラムとのリンクも利用者が意識することなく行ってくれるので、いまだ十分な理解は得られていません・・・。
秋月電子のHPからリンクが張られている仙台高専のHPをみるといいでしょう。。。

<n2ih8開発環境の構築>

n2ih8開発環境を構築すると、上記のことをあまり意識することなく、unix上でプログラムを作成するのと同様の感覚でマイコンを制御するプログラムを作成することができます
ただし、プログラムをコンパイル(クロスコンパイル)後、マイコンに転送せねばならないことに注意する必要があります。

(1)アーカイブに同梱されているdevelop.txtに従い開発環境を作成します。
この時、makenv.bat内で指定しているディレクトリを自分の環境に合わせてカスタマイズします。
なお、h8asm.exeはg:\aki-h8\h8\asmに配置されている必要があります。

n2iH8開発の手引き V1.06β0 1999/09/20は、ベータ版ということもあり一部v1.04以前のものに関する記述が残っているので、勘違いしないように注意しましょう。
cpu04.srcへのパッチファイルは必要なくなっています(たぶん)。とりあえずは、akih8mak.txtの内容も気にしなくてよいようです。
個別のコンパイル用のバッチファイル名は、n2ih8??.batが正しいようです。

makenv.batを実行すれば、開発環境ができあがります。バッチファイルの先頭でecho onにしておいた方がいいかもしれません。


(2)g:\fztat\h8\n2ih8以下に作成されたn2ih8mm(MB用モニター機能あり)をAKI-H8に焼きこみます。

(3)AKI-H8 MBに電源をいれ、シリアルCH1(Garmin'Me用となっている場合は、パソコン接続側のポートをそのまま接続しておけばよい)をパソコンに9600bpsで接続し、TeraTerm Pro、秀丸、ハイパーターミナル等のソフトでモニターする。私の場合は、ログを保存することも考えて秀丸を利用しています。

なお、トランジスター技術の方法をそのまま追試した場合は、9600bpsではだめ。n2ih8アーカイブ内のmakenv.batを使った場合に9600bpsが可能。

電源投入直後、
H8/3048 Series Advanced Mode Monitor Ver. 2.1C
Copyright (C) Hitachi, Ltd. 1995
Copyright (C) Hitachi Microcomputer System, Ltd. 1995
:
とプロンプトが現れれば、とりあえずは正常に動作していると思われます。
また、プロンプト「:」に対して、 G 100と入力してやると、LED及びLCDが表示されます。


<n2ih8開発環境上でのモニターデバッガーの利用>

上記(3)で表示されたプロンプトは、実は、モニターデバッガーのプロンプトです。
日立から提供されているモニタープログラムのアーカイブに含まれるreadme.txtファイルを参考にしてモニターデバッガーを利用することができます。
例えば、
: ? <---入力したコマンド
Monitor Vector 00000 - 000FF
Monitor ROM 037A2 - 09097
Monitor RAM FEF10 - FEFEB
User Vector FF000 - FF0FF

. : 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 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.
:
と表示されます。

http://www.kumagaya.or.jp/~agkobayを参考にさせていただいて、
: m fffca
FFFCA F1 ? 0
FFFCB 80 ? .
:
とするとLEDが消灯し、
: m fffc8
FFFC8 FF ? 3
FFFC9 FF ?
FFFCA F0 ? 3
FFFCB 80 ? .
:
とするとLEDが2つとも点灯します。


<n2ih8開発環境上でのC言語による開発手順>---あくまでサンプル的な手順紹介

gigo's BBSにあるcstartを導入。

コンパイルしたプログラムについて、モニターのLコマンドにより、Sフォーマットファイル(テキストファイル)をターミナルソフトでAKI-H8に対して転送する。
この場合、ハイパーターミナルの設定で改行コード送信をOFFしておくことが必要。
モニターのGコマンドにより、モニター対応プログラムを動かす。プログラムからモニターに戻りたい場合は、NMIスイッチ(CN2にあり)をGNDに落とす。



(以下は、工事中です)

<モニターデバッガーのメモリーマップ>
モニターデバッガーを利用する際にはアドレスにも気を使う(意識する)必要があるように感じています。モニターも秋月電子で売っているものを導入した場合と日立のHPで提供されているものをトランジスタ技術98年9月号を参考に導入した場合では、メモリーマップがちょっと違うようですので注意する必要があります。

<ハードウェアマニュアルの参照>
pinの役割がデフォルト初期設定のままでは不都合が生じる場合もあり、適切に設定してから動かすということも必要なようです。このあたりの情報は、ハードウェアマニュアルを参照する必要があるようです。

<Mapの活用>
n2ih8をコンパイルしてみれば分かりますが、Garmin*.Mapというファイルが出力されます(Garmin*.subでoutputを指定している)。これで、シンボルを検索し、モニターのGコマンドで該当メモリーアドレスをみるといろいろと役にたつようです。
 
<日立提供Cサンプルプログラムをモニターデバッガー上で動かすまで>
 

<日立提供モニタープログラムのカスタマイズ>
n2ih8開発環境利用者にはあまり関係ないかもしれないが、モニターのカスタマイズ方法が@Nifty FDEVICEフォーラムのLibに登録されているようです。