2008/09/17(水)[cygwin][SH2][組込] cygwin 上に,クロス開発環境を構築する~SH編~

結論:linuxマシンを持ってきたほうが早い... VMwareがあるならそっちのがいいんじゃね?

前置き

まだ実績は無いです.cygwin上でSH2のクロス開発環境を用意する.. 途中.
buildが終わらないから中断した. 前線基地でもとりあえずbuildまわしっぱなしで寝てみる...
KPITやHEWやら使って TOPPERS kernelをbuildして~,と考えていたのだけれど,なんかしっくりと来ない.perl/awk/make等全部同じ環境(dll含めて..)で動くものを用意したほうが安定しそうなのでこうなった.本当は無償版HEWで環境作れたらよかったのだけれど,アーキテクチャ依存部を持ってきてTool chain違いで跳ねられたのであきらめた.コンフィギュレータはcygwin/VC++の両方で作るところまでやった.Boost lib.が要るなど,案外面倒だ.手軽に使いづらいのと,開発環境のメンテを考えると,市販のRTOSを選択するのが賢いと思われる.TOPPERSをhackして自分でカスタムできるレベルであればその限りではないが....


必要ファイルをそろえる

下記のファイルを拾ってくる.


TOPPERS/ASPカーネルのbuild環境は,以下のとおりらしい.とりあえず新しい物好きなので上記で試してみる.

  • binutils-2.16.1.tar.bz2
  • gcc-3.4.4.tar.bz2
  • newlib-1.13.0.tar.gz

*1 : jaistなどのGNUソフトミラーサイトから探してください..

手順

ここではcygwin環境での操作をメモしておく.パス名等は適宜読み替えて対応されたい.

下準備とbinutilを作る.とりあえずhomeディレクトリ配下において様子を見る.

$> mkdir -p usr/bin
$> mkdir -p usr/src
$> mkdir -p usr/tmp/binutils-build
$> cd usr/src
$> bzcat /cygdrive/c/temp/cross/binutils-2.18.tar.bz2 | tar x
$> bzcat /cygdrive/c/temp/cross/gcc-4.3.2.tar.bz2 | tar x
$> zcat /cygdrive/c/temp/cross/newlib-1.16.0.tar.gz | tar x
$> cd usr/tmp/binutils-build

$> ../../src/binutils-2.18/configure --prefix=/home/XXXXX/usr --target=sh-elf
$> make && make install

$> export PATH=/home/XXXXX/usr/bin/:$PATH

GMPをひろってきて,解凍して...面倒くさいなぁ..

> ./configure
> make
> make check
> make install

MPFRも configure, make しないとだめぽいな... GMP先に入れないとダメです.

> ./configure
> make
> make check
> make install

で,ようやくgccのクロスコンパイラとnewlibが作れる.

$> mkdir -p usr/tmp/gcc-build
$> cd usr/src/gcc-4.3.2/
$> ln -s ../newlib-1.16.0/newlib .
$> cd ../../tmp/gcc-build/
$> ../../src/gcc-4.3.2/configure --prefix=/home/XXXXXX/usr --target=sh-elf --enable-languages="c" --with-newlib
$> make
 ... (E6600/MEM2Gで18時間程度かかりました)
$> make install

cygwinだと数時間オーダ18時間.. newlibのbuildがアーキテクチャごとに全部回るみたい('A`


おまけ

MPRF/GMPを入れなかった場合.昔と同じようにGCC,binutil,newlibだけでbuildを試みた例.makeに失敗するので気づくでしょう...

$> mkdir -p usr/tmp/gcc-build
$> cd usr/src/gcc-4.3.2/
$> ln -s ../newlib-1.16.0/newlib .
$> cd ../../tmp/gcc-build/
$> ../../src/gcc-4.3.2/configure --prefix=/home/XXXXX/usr --target=sh-elf --enable-languages="c" --with-newlib

> configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
> Try the --with-gmp and/or --with-mpfr options to specify their locations.
> Copies of these libraries' source code can be found at their respective
> hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
> See also http://gcc.gnu.org/install/prerequisites.html for additional info.
> If you obtained GMP and/or MPFR from a vendor distribution package, make
> sure that you have installed both the libraries and the header files.
> They may be located in separate packages.

エラーがでる.いつの間にかいろいろライブラリを要求するようになってしまったようだ.

2008/08/14(木)思うことつれづれと(自戒)

仕様策定

非常に重要ですね.テキトウに作り始めると、
「アレ?これどうするのがいいかナァ、こうしよっかなぁ?こっちでもいいなぁ。」
なんてことを、その場のテキトウなイメージで実装してしまいます.進めていくうちにアチャーって感じで、やりなおしになる、と.

はい。今回のVerilogネタもそう。パートごとに切ったのも含めると3回目相当だったりします.仕様想定を考えながら、制御レジスタ案を考え、動作も順に考えていきます.
ソフトもハードも全体でこういう使い方をするというイメージが大切ですね.

シミュレーションが終わって、簡単な動作が確認できれば、追々となりますが、簡単なメモを開示できるかと思います.このadiary、メモ代わりにも便利なので重宝します.非公開にしておけば、一般開示されないのでちょうどいいんですよねぇ.


ということで、そもそもrobotに必要な機能と拡張インタフェースの洗い出しができていない現実を直視したいと思います.
N:TMは記録係として参加するほうこうで準備をしたほうが懸命と判断.無念.
ACがあるとはいえ、発表で私用するのがメインなのだから、基本は鉛蓄電池から取るようにしておくべきと思うのよね。DCDCで規定値に落とすようなのを外部電源として用意しておくかな。手持ちのは1時間もたないし。というか使い方が(ry

ん~、あったらいいな、は、やるべきなんだろうな.カタチはどうあれ、こういうフリー参加できる技術系発表会・交流会というのは、日本では殆ど無いものな.とはいえ、まとめるの苦手な上に、ネタもないし、人が集まらないようならバカ丸出しだからなw
定期開催を目指してやりたいですねぇ.創作期間をあけると3~6ヶ月間隔なのかしらん.持ち回りを考えると間隔短くても良さそうか・・・.

ただの妄想です。でも賛同者が居るようなら展開していきたいです.が、個人的に異動の可能性が濃いので4月以降どこにいるのか不明ですナ.