2004/Apr./12


●H8用gcc環境を構築する

あちこち検索してみると、他のホスト環境ながら構築方法がアップされてるトコがいくつかあったので、それを参考に構築してみることにします。ワタシが参考にしたのはココです。

まず、ソースコードを引っ張ってきます。ワタシが引っ張ってきたのは以下の三つです。

さて、参考サイトを見ながら順番に処理していきます。どうもコンパイルを行う順番も大事らしいので、頭から忠実に同じ順番で処理をおこないます。注意点としては、バージョンが異なるためにパラメータ等を一部書き換えながら処理する必要があるということです。また、何ケ所かに書き間違いがありますが、見ればわかる程度の間違いなので特に問題はないでしょう。configureの前が「../」になってなければならないトコはちょっとわかりにくいかもしれませんが。

また、ワーニングも結構出ますが、とりあえず無視して構わないでしょう。エラーが出るなら、なんらかの入力ミスを疑う必要があるかと思います。

んで、あとは既存のソースを参考サイトを見ながらコンパイルさせてみるとイイでしょう。

Makefileに関してですが、以下に私が今使っているモノを掲載します。本当は依存関係の自動更新が行えるように切り替えたいところですが、まだsed等の使い方が今一つ理解できてない事もあり、現状は手動で一度依存関係を確認させてからのコンパイルになります。なにかの参考になれば....。

CMD_DIR = /usr/local/h8/bin
CC      = $(CMD_DIR)/h8300-hms-coff-gcc
OBJCOPY = $(CMD_DIR)/h8300-hms-coff-objcopy
STRIP		= $(CMD_DIR)/h8300-hms-coff-strip
SIZE		= $(CMD_DIR)/h8300-hms-coff-size
DUMP		= $(CMD_DIR)/h8300-hms-coff-objdump
TARGET   	= zmon
TARGET_COFF = $(TARGET).coff
TARGET_MOT  = $(TARGET).mot
MAP_FILE    = $(TARGET).map
DUMP_FILE	= $(TARGET).dump
LDSCRIPT	= ./h8-3069.x
CFLAGS		= -mh -O2
LDFLAGS		= -mh -T $(LDSCRIPT) -nostartfiles -Wl,-Map,$(MAP_FILE)
STARTUP = 30XXCRT0.S
SRCS = monitor.c utilities.c memory.c error.c interrupt.c initialize.c help.c  \
	motor.c sensor.c param.c I2C.c runMouse.c \
	Adachi.c AdachiMain.c AdachiUtilities.c FindUnknownBlock.c MakeFlowMap.c \
	MakeRunProgram.c MakeWalkNumberMap.c MotorWork.c RealMotorWork.c RunMaze.c
OBJS = $(STARTUP:.S=.o) $(SRCS:.c=.o)
$(DUMP_FILE) : $(TARGET_COFF)
	$(DUMP) -D $(TARGET_COFF) > $(DUMP_FILE)
$(TARGET_MOT) : $(TARGET_COFF)
	$(OBJCOPY) -O srec $(TARGET_COFF) $(TARGET_MOT)
	
$(TARGET_COFF) : $(OBJS)
	$(CC) $(LDFLAGS) $(OBJS) -o $(TARGET_COFF)
	$(STRIP) $(TARGET_COFF)
	$(SIZE) -Ax $(TARGET_COFF)
clean:
	rm -f *.o $(TARGET_MOT) $(TARGET_COFF) $(MAP_FILE)
depend:
	$(CC) -M --w $(SRCS) > Makefile.depend


%.o : %.c
	$(CC) -c $(CFLAGS) $<
%.o : %.S
	$(CC) -c $(CFLAGS) $<
%.o : %.s
	$(CC) -c $(CFLAGS) $<

include Makefile.depend


Go Home GoBack

Copyright 2003 - 2004 All Rights Reserved by Kazutaka 'Zak' Sawa .