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
Posted at 01:14 in computer