2009/12/12

H8 on Mac


実験でH8マイコンを使って遊ぶ、という週があったのでせっかくなのでMacでクロスコンパイル出来るようにしてやろうかと。

実験テキストの説明とかを基にやっているので、ところどころ曖昧です。

h8300-hms-gccのコンパイル


H8クロスコンパイラ環境作り

を参考にやってみたものの、生涯make成功率3%の私には出来るはずもなく...

仕方ないので、偉大な人のお力を借ります。

Mac OS X で H8 - novi’s page

LeopardでコンパイルすればSnowLeopardでも使えるみたいだけど、わざわざTimeMachineで戻すのも面倒なのでコンパイル済みGCC*1を使わせていただきます。

ダウンロードしたzipを解凍して、出てきたフォルダを/usr/local/以下に放り込みます。ちなみに、余談ですがMacでusrなんかにアクセスするときはFinderのフォルダへ移動*2でアクセスできます。Terminalでやってもよし。

各種ファイルを揃える


http://maisy.ei.fukui-nct.ac.jp/~t-saitoh/exp/h8/sample/h8car/

テキストのプログラム一式が置いてあるので、拝借します。Xcodeでコンパイルしてもいいのですが、面倒なのでTerminalで叩きます。

Makefileを書き換える


#
# H8/3664F sample makefile
# Copyright (c) 2001 Masahiro Ochiai
#

TARGET  = h8car.mot

CFLAGS  = -O -mh -g -mrelax -mint32 -DH8_3664

CC  = h8300-hms-gcc
AS  = h8300-hms-as
LD  = h8300-hms-ld

LDSCRIPT = h8-3664.x
CRT0  = 3664crt0.S
ASRCS  =
SRCS  = h8car.c

# make all source trees
all : $(TARGET)

h8car.mot: h8car.coff
h8300-hms-objcopy -O srec h8car.coff $@

h8car.coff:  Makefile $(LDSCRIPT) $(SRCS:.c=.o) $(CRT0) $(ASRCS) $(LIBS)
$(CC) $(CFLAGS) \
-T $(LDSCRIPT) -nostartfiles $(CRT0) \
$(ASRCS) $(SRCS:.c=.o) -o $@ $(LIBS)

clean :
rm -f $(TARGET)
rm -f h8car.coff
rm -f $(SRCS:.c=.o)


を以下のように

#
# H8/3664F sample makefile
# Copyright (c) 2001 Masahiro Ochiai
#

TARGET  = h8car.mot

CFLAGS  = -O -mh -g -mrelax -mint32 -DH8_3664

CC  = /usr/local/h8300-hms/bin/h8300-hms-gcc
AS  = /usr/local/h8300-hms/bin/h8300-hms-as
LD  = /usr/local/h8300-hms/bin/h8300-hms-ld

LDSCRIPT = h8-3664.x
CRT0  = 3664crt0.S
ASRCS  =
SRCS  = h8car.c

# make all source trees
all : $(TARGET)

h8car.mot: h8car.coff
/usr/local/h8300-hms/bin/h8300-hms-objcopy -O srec h8car.coff $@

h8car.coff:  Makefile $(LDSCRIPT) $(SRCS:.c=.o) $(CRT0) $(ASRCS) $(LIBS)
$(CC) $(CFLAGS) \
-T $(LDSCRIPT) -nostartfiles $(CRT0) \
$(ASRCS) $(SRCS:.c=.o) -o $@ $(LIBS)

clean :
rm -f $(TARGET)
rm -f h8car.coff
rm -f $(SRCS:.c=.o)


  1. 適当な場所にフォルダを置く
  2. cd hoge/h8car
  3. make

これでいけました。あとは、h8car.cをいぢるだけです。







転送はまだ出来ていません。jrem使えばできるのかな?/dev/以下になんて書けばいいのか分からないっていう。