May 03, 2007
H8の開発環境 [computer]
久しぶりに書いてみるか。 (5/3 setenvの書式が間違っていたので修正. 脳がとろけていたらしい)秋月のH8ボードのiTRON開発環境を久々に作りなおしたくなったのでごそごそ。
ターゲットOSは何にしようかまだ考えていない。TOPPERS JSPにするかHOSにするか。 HOSでも今はネットワークスタックがあるようで。ある程度動いてくれればどちら でもよいが。
binutilsの2.17以降ではgasのターゲットからh8300-coffが削除されている。 2.17から削除されたものは他にも色々あってh8500,AMD29k,i960,m88k等。 gasのChangeLog-2005に削除した旨の記述がある。 つまり2.17以降はH8300系のcoffフォーマットのクロス環境をつくることはできない。
h8300-coffに関してはbfdの方は残っていてアップデートは続けられていたりするのでわかりづらい。 このことからbinutilsの開発体制が伺える。 結局のところいくつかのツールの寄せ集めということなのだろう。
h8の場合SフォーマットのROM/RAM上のイメージを作る中間フォーマットの意味ぐらいしかない。 ELFであってもcoffであっても大差ない。 精々がリンカスクリプトをELF用に作り直す程度の違いだろう(と思う)。
以下クロス環境の作成手順を書いておく。ただのメモである。 ホスト環境はFreeBSD-6.2 STABLEだがtarがbsdtarでgnutarとはオプションが違う、という程度の意味。LinuxだろうとSolarisだろうとそう大きな違いは無いだろぅ。
% tar xvyf binutils-2.17.tar.bz2 % cd binutils-2.17 % mkdir objdir % cd objdir % ../configure --prefix=/usr/local/h8300elf --target=h8300-elf % gmake CFLAGS="-O2 -fno-strength-reduce -fomit-frame-pointer" all
configureの --prefixでインストール先のディレクトリを指定する。 この場合は/usr/local/h8300elfと専用のディレクトリを指定している。
作成したアセンブラ、リンカはクロスコンパイラの作成に必要なので インストールしておく
% su # gmake install % ls /usr/local/h8300elf/bin h8300-elf-addr2line h8300-elf-nm h8300-elf-size h8300-elf-ar h8300-elf-objcopy h8300-elf-strings h8300-elf-as h8300-elf-objdump h8300-elf-strip h8300-elf-c++filt h8300-elf-ranlib h8300-elf-ld h8300-elf-readelf
クロスコンパイラを作成する。今回使用したのはgcc-4.1.2 フルセットのソースを用いたがcoreだけでも十分(javaとかつくらんし)。 組込み用の標準ライブラリセットのnewlibも入手してソースを展開して おく。newlib-1.15.0.tar.gzが現時点の最新。 (ftp://sources.redhat.com/pub/newlib/)
% tar xvyf gcc-4.1.2.tar.bz2 % tar xvzf newlib-1.15.tar.gz % export PATH=$PATH:/usr/local/h8300elf/bin
実行パスにさっきの置かれたディレクトリを指定しておく
% cd gcc-4.1.2 % ln -s ../newlib-1.15.0/newlib . % mkdir objdir % cd objdir % ../configure --prefix=/usr/local/h8300elf --target=h8300-elf --enable-languages="c,c++" --with-newlib % gmake CFLAGS="-O2 -fno-strength-reduce -fomit-frame-pointer" all % su (FreeBSDのrootのデフォルトはcshなので) # setenv PATH $PATH\:/usr/local/h8300elf/bin # gmake install
gdbでエミュレーション環境を作っておく
% tar xvyf gdb-6.6.tar.bz2 % cd gdb-6.6 % mkdir objdir % cd objdir % ../configure --prefix=/usr/local/h8300elf --target=h8300-elf % gmake CFLAGS="-O2 -fno-strength-reduce -fomit-frame-pointer" all % su # setenv PATH $PATH\:/usr/local/h8300elf/bin # gmake install