2008/09/27(土)TOPPERS/ASP kernel環境
前置き
先日,sh-elf-gcc環境をbuild/installした.
今回は,TOPPERS/ASP kernelを導入したいと思う.OSEK,JSP kernelもあるが,新しい物好きということでASP kernelを持ってくる.
以後,SH系の開発環境は,基本的にcygwin環境上で行うこととする.
[TOPPERS]ASP kernelを使ってみる
ファイルの展開
まず,/home/xxxx/ 以下(どこでもいい)にkernelのアーカイブを展開する.
$ cd ~ $ zcat /cygdrive/c/Workspace/asp-1.3.2.tar.gz | tar x $ zcat /cygdrive/c/Workspace/asp_arch_sh12a_gcc-1.3.1.tar.gz | tar x
順序が前後するが,sh12a環境においては,hwe環境に入っている,asp/pdic/sh以下のファイルを同名のディレクトリに展開しておく必要がある.
architecture依存部として,SH向けは以下の2種類がある.今回はgccをtargetとしたので,gccだけを解凍していた.ところが,asp/pdic/sh 以下が, HEWにしか存在していない.
- SH1/2Aアーキテクチャ・GCC依存部パッケージ
asp_arch_sh12a_gcc-1.3.1.tar.gz - SH1/2Aアーキテクチャ・HEW依存部パッケージ
asp_arch_sh12a_hew-1.3.1.lzh
ということで,lzhを解凍して,c/hの改行コードをLFのみに変えて保存し,pdic/sh/へ移動させた.
kernel configuratorを作る.
$ cd asp/cfg $ make depend # make
ただし,C++のlibraryであるところのboostが必要となる.ver.1.33での構築が実績のある環境だ.
ただし,cygwin環境では決めウチされる模様.Makefileの冒頭でこうなっている.
ifndef BOOST_DIR ifndef BOOST_VERSION BOOST_VERSION = 1_33_1 endif ifeq ($(OSTYPE), msys) BOOST_DIR = /mingw/include/boost-$(BOOST_VERSION) else ifeq ($(shell echo $$OSTYPE), cygwin) BOOST_DIR = /usr/include/boost-$(BOOST_VERSION) else BOOST_DIR = /usr/local/include/boost-$(BOOST_VERSION) endif endif endif
自力でboostをmake/installしてみた(ver.1.36)が,引数をなにも指定せずに行ったため,install prefixは/usr/local/以下になってしまった.作られたライブラリ等,微妙にまずかったようで,リンクエラーとなった...orz
参考まで,boostディレクトリの指定方法を記録しておきます.
% make depend "BOOST_DIR=/usr/local/include/boost-1_36" % make "BOOST_DIR=/usr/local/include/boost-1_36"
で,結局cygwinのsetupプログラムで更新をして終了.既存のcygwinに対しても,setupで更新ができる模様です.便利ですな...
sampleプログラムを作る
kernel環境には,サンプルコードもmakeで作れるようなものが用意されている.JSP kernelのときは,ターゲットとアーキテクチャとを指定する必要があるのに対して,ASP kernelではターゲットのみでよくなっている.
そりゃまぁ,ターゲット同じでアーキテクチャが異なることは考えづらいですしね...
今回のsh12a-gcc環境に含まれているアルファプロジェクトのターゲットソフトを作ってみましょう.
$ cd ~/asp $ mkdir app01 $ cd app01 $ ../configure -T apsh2a_gcc -D .. $ make depend $ make
これで,asp.(exe|srec|syms)のあたりが生成されます.コードができたか確認したいので,ちょっと見てみましょう
$ sh-elf-objdump -D asp.exe
ダーッと逆アセンブルコードが出てきますナ.
次回予告
次は,CQ7144としてターゲット環境の構築を進めていきます.
ささっとググったところ出てこなかったので,作らざるを得ないというところですね.無念...