そこで、代替案を探そうとAKI−H8/3069Fキットに付属のH8用gcc (単体での通販コードはS-00033 ¥500−)について試行錯誤した結果、 大体使えそうな見込みが得られましたので、「こうすれば、とりあえずPen4号にも使える」という手順を まとめて公開することとしました。
では、以下にステップバイステップでその手順を説明してゆきましょう。 なお本ページで具定例については「60日でできる!二足歩行ロボット自作入門」および、 「マイコンボードキットの代替」の製作記事 をベースとしていますので、必要に応じて参照してください。
インストールの方法はキットCDに添付の説明書のとおりです。フリーソフトなのでインターネットから ダウンロードできますが、たくさんのバージョンの組み合わせがあり、設定が煩雑なのでキット添付CD の利用をお勧めします。
Cygwinをデフォルト設定でインストールするとC:\cygwinというフォルダが生成され、その中に たくさんのフォルダやファイルが生成されます。このフォルダの中がエミュレータの利用する範囲です。
Vistaサポートはアナウンスされていません。インストール完了時に「インストールに失敗したかも・・・」 といった趣旨の警告のウインドーが出ますが、ここし数ヶ月使った感じでは、とくに問題なく使えています。
プログラムの実行開始の方法を指定するファイルです。
.h8300h .section .text .global _start _start: jsr @_main rts |
「make」というコマンドへの入力ファイルです。例は本の58日目の状態です。「SRCS = 」で始まる行に
スペースで区切ってソースコードのファイル名を列挙します。
たとえば8日目の状態ならば、ソースコードは「pen4.c」1つだけなのでこの行は「SRCS = pen4.c」となります。
PROGS = pen4.mot CFLAGS= -mh -g SRCS = pen4.c init.c sio0.c sio1.c joints.c sensors.c motion.c action1.c auto_mode1.c camera.c remocon.c all : $(PROGS) pen4.mot : pen4 h8300-hms-objcopy -O srec pen4.coff pen4.mot rm pen4.coff pen4 : $(SRCS) h8300-hms-gcc $(CFLAGS) -T ram3069.x -nostartfiles ramcrt0.S $(SRCS) -o pen4.coff -lc clean : rm -f pen4.mot |
出力ファイルの形式や、メモリ配置を指定するファイルです。AKI-H8/3069F用に書いてあります。 外部RAMのアドレスが0x400000からで、容量が0x200000なので、ram(rwx)の行にはその様に 書いてあります。また、次の行はramcrt0.Sで定義している、プログラム本体を置くtextセクション が0x400000から始まり、最大容量は0x10000だとしています。
OUTPUT_FORMAT("coff-h8300") OUTPUT_ARCH(h8300h) ENTRY("_start") MEMORY { ram(rwx) : o = 0x400000, l = 0x200000 text(rwx) : o = 0x400000, l = 0x10000 } SECTIONS { .text : { *(.text) _etext = . ; } > ram } |
4.2 以下のコマンドをキーインし、プログラムをメイクする。
C:\cygwin\pen4\pen4フォルダにpen4.motが生成されたらコンパイル成功です。
こんな感じでコンパイラを、AKI-H8/3069Fを積んだPen4号に使うという点では特に問題 ありませんでした。本のサンプルプログラムそのままではうまく歩けないので、H8用gcc の特性を考慮してモディファイしたプログラムを書いて遊ぶとよいでしょう。
その他、リンカスクリプトのアドレスを直すと、AKI-H8/3067F用のプログラムも作れるので、 58日目のソースコードを試してみました。 コンパイルした結果生成されるmotファイルのサイズがオリジナルの倍近いサイズ(約69kB) になるため、外部RAMの容量が32kBしかないAKI-H8/3067Fでは実行できませんでした。
これについてはいろいろ試してみたところ、浮動小数点計算の機能(float変数を使った計算) をしなければ かなりファイルサイズが小さくなることが分かりました。AKI-H8/3067Fを積んだオリジナルの Pen4号に使う場合は、上記の速度アップの効果もあるので、浮動小数点計算機能を使わない 形のプログラムにモディファイするとよい結果が得られると思います。 (外部メモリを増設するという選択肢もありますが、速度の問題がのこりましすしね)