まず最初に | ||||
| ||||
よって現時点でGDB上でH8シミュレータを使用する 利点はありません。 ルネサスの命令シミュレータの方がはるかに使いやすく、 確実に高性能・安定した環境です。 |
===インストール手順===
|
1.cygwinのインストール http://www.cygwin.com/ からsetup/.exe をダウンロード。 cygwin の GUI インストーラで Mingw Devel をInstallに指定、ダウンロードする。 容量はおよそ2GB、少しHDDに負荷かけます。 ※cygwinのダウンロードの際には大学系のサーバーの方が、 インストール後に安定するみたいです。 |
2.binutils インストール ftp://gcc.gnu.org/pub/ あたりから binutils-2.18 をダウンロード、展開
|
3.gcc インストール 我が家の場合はgcc make でコケたので 高精度ライブラリとやらをダウンロード&インストール ftp://gcc.gnu.org/pub/gcc/infrastructure/ から gmp-4.2.1.tar.bz2 mpfr-2.3.0.tar.bz2 をダウンロード、展開>インストール
gcc インストール:
tconfig.h が無いとかでエラーが出ますが… ここはネモ○長に従って「かまわん、強引にインストールだ!」 という事で…。 次にディレクトリ下にある全部の Makefile の以下行を次のように 変更します。 host_subdir = . → host_subdir = host-i686-pc-cygwin 全部で10個近くあって少し面倒です。 Makefileの変更が終わったら再度makeをかけます。
libc++v3 でエラーが出ますが、これはC++用の STL/ランタイムライブラリなのでここでは C++機能を捨てて強引にインストールします。。。
が、このままではH8用のエミュレーションライブラリが インストールされないので、先ほど Makefile を修正した 各ディレクトリ内で make install を実行します。 これで何とか、C++機能を捨てた上でGCCのインストールが出来ました。 |
4.gdb または insight-gdb インストール 私の場合、まず最初に GDB のインストールを試みました。 gnu.org (http://ftp.gnu.org/gnu/gdb/) から gdb6.8 をダウンロードして 解凍、make します。
ここでCUIのデバッガでは使いずらかったので Insight-gdb をインストールする事にしました。 ここ( ftp://mirrors.kernel.org/sources.redhat.com/insight/releases/ からダウンロードし、make 解凍、コンフィギュア、make をかけます。
(私の場合はここで make install をかけずに make をかけた ディレクトリから、ビルドで出来上がったバイナリ gdb.exe を呼び出しました。) |
boot.s: |
.h8300h <− コレがないと動きません .section .text .global _Start _Start: mov.l #0x0100,er7 mov.b #1,r0l mov.b #1,r0l mov.b #1,r0l mov.b #1,r0l JMP @_Start nop |
makefile: |
TARGET=main.elf PREFIX=/usr/local/h8/bin/h8300-hitachi-elf AS=gcc.exe LD=ld.exe CC=gcc.exe ASFLAGS= -c -Wa,--gstabs -mh #CFLAGS= -c -x c -g -mh -save-temps CFLAGS= -c -x c -g -mh OBJS= boot.o \ main.o .SUFFIXES: .c .o .s .o .c.o: $(PREFIX)-$(CC) $(CFLAGS) $< -o $@ .s.o: $(PREFIX)-$(AS) $(ASFLAGS) $< -o $@ all : $(TARGET) $(TARGET) : $(OBJS) main.lds Makefile $(PREFIX)-$(LD) -mh8300helf -t main.lds $(OBJS) -o $@ <= -mh8300helf がないとシミュレータで 動かない。。 main.o : main.c boot.o : boot.s gdbs : /usr/local/h8/bin/h8300-hitachi-elf-gdb.exe -w -x boot.cmd clean : rm -rf $(OBJS) $(TARGET) |
main.lds: |
OUTPUT_FORMAT("elf32-h8300") OUTPUT_ARCH(h8300h) ENTRY(_Start) SECTIONS { .text 0x0 : { *(.text); } } |
$ /usr/local/XXX/gdb.exe -w (以下、GDBのコンソール上で) (gdb) file main.elf (gdb) target sim (gdb) load (gdb) break *0x0 (gdb) run (gdb) si |
|
私も内蔵I/Oの試作を試みましたが、 H8-300H 自体をそう何度も使う機会が無い事もあり、途中で投げ出しています。 数台程度でしか使用しないというのであればオンチップブレークの ある H8S 、H8Tiny、R8、SHなどの他のCPUを採用した方が良いのではと思います。 「オレはデバッグに時間を全くかけないぜ!!」 という自信のある人にしてみたら、H8-300Hの方が 部品単価的に断然有利なのでしょうが… |