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としてターゲット環境の構築を進めていきます.
ささっとググったところ出てこなかったので,作らざるを得ないというところですね.無念...