AKI-H8 プログラミング環境(ソフトウェア)
gnuのツールをコンパイルするときはgnuのmakeが必要です。FreeBSDではあらかじめインストールしておく必要があります。また、説明の中でmakeと表記してある所をgmakeとして実行してください。
日立製モニタプログラムの移植
H8用のモニタプログラムをCPUのメーカの日立が無料で公開しています。
このモニタプログラムを移植します。
ここではモニタプログラムのバージョン2.1Aを想定しています。
モニタプログラムのファイルフォーマットはMS-DOS(Windows)フォーマットなので
アセンブルはAKI-H8に付属のアセンブラを使って行うことにします。
また、CPUへのプログラムの書き込みもAKI-H8付属のライターを使います。
(この作業のみWindows95 or Windows98が必要です)
- AKI-H8付属のアセンブラ等のツールをセットアップします。
- 日立のホームページよりモニタプログラムをダウンロードします。
- モニタプログラムを解凍します。
- モニタのユーザー設定初期化ルーチン(monitor.src)を増設RAMを使用できるようこのように書き換えます。
- 標準では日立製のツールを使うことになっているのでAKI-H8付属のアセンブラでアセンブルできるようにこの定義ファイル?とバッチファイルを使いアセンブルを行います。
- モニタのカレントディレクトリーにmonitor.motという名前のモトローラSフォーマットのバイナリーデータができるのでこれをCPUに焼き込みます。
モニタプログラムをCPUに書き込むときはCPUの動作モードをモード7
(外部 バスなし, 内蔵ROMモード)にしてください。
また、モニタを書き込んだCPUを動作させるときはモード6
(外部アドレスバス24bit,外部データバス幅8bit,内蔵ROM,RAM有効)
に設定してください。
モニターの使い方は付属のドキュメントを参照してください。
通信プログラム
続いて先ほど焼き込んだモニタープログラムと通信するためのプログラムを作ります。
- 通信プログラムはこれです。
- 上記プログラム中の通信ポートを書き換えてコンパイルします。
% cc -o h8term h8term.c
- 以上で通信プログラムができました。このプログラムはファイルのアップロードの機能のみしか持っていません。使い方は
% h8term
で起動します。[ESC]キーを押すとメニューが表示されます。
クロスアセンブラおよびバイナリーツールの構築
H8用のクロスアセンブラとバイナリー加工ツールを構築します。今回はbinutils-2.8.1を使いました。
- 適当なディレクトリーでbinutils-2.8.1.tar.gzを解凍します。
% tar zxvf binutils-2.8.1.tar.gz
- 後は他のgnuのツールと同じようにconfigure & makeします。
% cd binutils-2.8.1
% ./configure --target=h8300-hms --prefix=/usr/local
% make
- でき上がったプログラムをインストールします。なにもオプションを指定しないと/usr/local/h8300-hms/の下にインストールされます。
% su <--- rootになる
# make install
クロスCコンパイラーの構築
FreeBSD上で動作するクロスgccを構築します。
今回はgcc-2.7.2.3を使いました。
- ftp://ftp.cygnus.com/pub/embedded/crossgcc/よりクロスコンパイラー用のパッチcrossgcc-gcc-2.7.2.3.patchを入手します。
- 適当なディレクトリーでgcc-2.7.2.3.tar.gzを解凍します。
% tar zxvf gcc-2.7.2.3.tar.gz
- クロスコンパイラ用のパッチを当てます。
% cd gcc-2.7.2.3
% patch -p1 < ../crossgcc-gcc-2.7.2.3.patch
- FreeBSDの場合はconfig/i386/x-freebsd の 次の行を削除します。
CLIB=-lgnumalloc
- 後は他のgnuのツールと同じようにconfigure & makeします。
% ./configure --target=h8300-hms --prefix=/usr/local
% make
- でき上がったプログラムをインストールします。なにもオプションを指定しないと/usr/local/h8300-hms/の下にインストールされます。
% su <--- rootになる
# make install
ライブラリーの構築
C言語用の標準ライブラリーを作成します。ファイルシステムなどは存在しないためすべての関数が使用できるわけではありません。今回はnewlib-1.8.1を使用しました。
- ftp://ftp.cygnus.com/pub/newlib/よりnewlib-1.8.1.tar.gzを入手します。
- 適当なディレクトリーでnewlib-1.8.1.tar.gzを解凍します。
% tar zxvf newlib-1.8.1.tar.gz
- 今回改造したハードウェアに合わせるように以下のソースを書き換えます。
プログラムの実行終了後モニタに復帰させる
./newlib-1.8.1/newlib/libc/sys/h8300hms/_exit.c → _exit.c
printfを動作させる(画面への文字出力)
./newlib-1.8.1/newlib/libc/sys/h8300hms/write.c → write.c
キーボードより入力を受け付ける
./newlib-1.8.1/newlib/libc/sys/h8300hms/syscalls.c → syscalls.c
メモリのヒープ領域を変更(mallocで増設メモリーを使う)
./newlib-1.8.1/newlib/libc/sys/h8300hms/sbrk.c → sbrk.c
- 後は他のgnuのツールと同じようにconfigure & makeします。
% cd newlib-1.8.1
% ./configure --target=h8300-hms --prefix=/usr/local
% make
- でき上がったプログラムをインストールします。なにもオプションを指定しないと/usr/local/h8300-hms/の下にインストールされます。
% su <--- rootになる
# make install
ノーマルの4kbyteのRAMで動作させたい場合はsbrk.cに変更を加えずに
./newlib-1.8.1/newlib/libc/include/stdio.hにdefineされている
#define BUFSIZ 1024を
#define BUFSIZ 64
と変更してください。scanfは動きませんがprintf,getc等は動作します。
スタートアップルーチンおよび書き込みツールの構築
AKI-H8のLinux用書き込みソフトとC言語用スタートアップルーチンを岩田 宗之さんが作成されています。情報はこのページにあります。
上記webページで書き込みソフトh8comm.tar.gzと使い方があるのでそれを参照してください。ここでは変更点のみを記述します。
- そのままだとうまくコンパイルできないのでこのパッチを当てます。また、config.h 内の定数を自分のマシンに合わせて書き換えます。
% tar zxvf h8comm.tar.gz
% cd h8comm
% patch -p1 < ../h8comm.diff
% ./configure --target=h8300-hms
% make -f Makefile
- RAMを増設してあるのでそれに合わせてh8ram.xをこのように書き換えます。
スタートアップルーチン(crt0.o)とメモリ空間の定義ファイル(h8300h.x)はnewlib-1.8.1にもついてきますがh8comm.tar.gz付属のものを使ってください。
% su
# cp h8crt0.o /usr/local/h8300-hms/lib/h8300h/crt0.o
Sフォーマット変換ツール
ここまで構築してきた環境で作成されたH8用のバイナリーデータをモトローラの
Sフォーマットに変換するとS3フォーマットになります。(オプションで変えられるかもしれませんがよく調べていません)
日立製のモニタはモトローラのS1,S2フォーマットしか扱うことができません。
そのためS3フォーマットをS2フォーマットに変換するプログラムが必要になります。
- このプログラムをコンパイルします。
% cc -o s3to2 s3tos2.c
- 使い方は
% s3to2 S3フォーマットファイル名
です。
戻る
mailto:namikata@niigata-pc.ac.jp