« ARM用のgccクロスコンパイラ他の作成について | トップページ | T2SPのT-Kernelソースコードのビルド(修正の詳細) »

2015/05/27

T2SPのT-Kernelソースコードのビルド

 先日用意したgccクロスコンパイラを利用して、トロンフォーラムが用意しているARM用のT-Kernelソースコードをビルドした際の覚書です。

 トロンフォーラムのソースコードダウンロードのサイトでは、T-Kernelの学習用に「T-Kernel 2.0 Software Package(以下、T2SP)」が用意されています。
 これには、QEMUというPCエミュレータが付属しているので、開発ボードがなくても作成したソフトウェアの動作確認ができます。
 T2SPには、Cygwin用クロスコンパイラ+eclipseの開発環境も含まれていますが、目的が異なるので今回は使用しません。
 ちなみに、T2SPの開発環境とQEMUの使用方法については、CQ出版社の雑誌インターフェース2012年5月号の特集記事が参考になります(T2SPに含まれるドキュメントを簡潔に記載している感じです)。

 開発環境は、先日用意したgccクロスコンパイラeclipseを予定したので、まずは最新のeclipse(バージョンはLuna SR2 (4.4.2) 、パッケージはEclipse IDE for C/C++ Developers)をダウンロードしてcドライブに展開しました。

 ダウンロードしたT2SPは、"C:\work"に展開しました。ソースコードは、"/c/work/T-Kernel2.0/srcpkg"にある"tkernel_source.tar.gz"なので、MSYSで"tar xvf tkernel_source.tar.gz"により、このフォルダにそのまま展開しました。

 eclipseのWorkspaceを"C:\work\T-Kernel2.0\srcpkg"に切り替え、File->New->Makefile Project with Existing Codeを選択して、「Existing Code Location」に"C:\work\T-Kernel2.0\srcpkg\tkernel_source"を指定し、プロジェクトとしました。

 開発環境としてはeclipseを使用することにしたのですが、ビルドはmakefileを利用するので、まずはMSYSでビルドしてみることにしました。
 参考としたのは、T2SPのドキュメント、
"T-Kernel2.0/srcpkg/doc/ja/tkernel.txt"
"T-Kernel2.0/srcpkg/doc/ja/tmonitor.txt"
です。
 その結果、以下の設定やファイルの修正が必要なことが分かりました。

----
1.ビルド前の環境変数の設定
export BD=/c/work/T-Kernel2.0/srcpkg/tkernel_source/
export GNU_BD=/c/gnutools → gccクロスコンパイラをインストールしたフォルダ
export _GNU_CONFIG=arm-*-eabi → gccクロスコンパイラのプレフィクス(環境に合わせて"*"は変更してください)
export GNUARM_2=${GNU_BD}/${_GNU_CONFIG}

2."etc/sysdepend/tef_em1d/makerules.sysdepend"の修正
・45行目に":/usr/bin:/c/MinGW/bin"を追加する(GNUARM_2の場合に、MSYSの/binとMinGWの/binにパスを通す)
・245行目の、
OBJCOPY = $(GNU_BD)/bin/arm_2-unknown-tkernel-objcopy

OBJCOPY = $(GNU_BD)/bin/arm-*-eabi-objcopy
に変更する(その上のCPPも同様の修正が必要)

3."gcc4arm"のコピー
・"te.Cygwin-i686.common.13.tar.gz"に格納されている"tool/etc/gcc4arm"を"/c/gnutools/arm-*-eabi/bin"にコピーする

4.".lnk"のOUTPUT_FORMATの引数変更
・ファイル、
"/kernel/sysmain/build/tef_em1d/kernel-ram.lnk"
"/kernel/sysmain/build/tef_em1d/kernel-rom.lnk"
"/config/build/tef_em1d/rominfo.lnk"
"/config/launch-ramkernel/build/tef_em1d/rominfo.lnk"
"/monitor/tmmain/build/tef_em1d/monitor.lnk"
について、
"elf32-larm-tkernel"→"elf32-littlearm"
"elf32-barm-tkernel"→"elf32-bigarm"
を変更する

5."/kernel/sysmain/build/tef_em1d/kernel-rom.lnk"に".ARM.exidx"の追加
・セクション".text"の直後(38行目)に、
__ARM_exidx = .;
.ARM.exidx : { *(.ARM.exidx*) }
を追加する。

6.perlのフォルダ指定を変更
・"/etc/mergesrec"の1行目を、
/usr/local/bin/perl → /usr/bin/perl
に変更する(他の同様のファイルも修正しておいたほうが良い)
----

 以上でELFファイルは作成されました。
 修正がなぜ必要だったかは、次の記事で記載する予定です。
 eclipseで必要な設定は、さらにその次の記事の予定です。
 また、ここまでで作成したELFではバグがあるので、その修正については…そのうち記載します。

 なお、T2SPに付属されている開発環境を使用すれば、このような苦労はないものと思われます。

|

« ARM用のgccクロスコンパイラ他の作成について | トップページ | T2SPのT-Kernelソースコードのビルド(修正の詳細) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/55806/61636776

この記事へのトラックバック一覧です: T2SPのT-Kernelソースコードのビルド:

« ARM用のgccクロスコンパイラ他の作成について | トップページ | T2SPのT-Kernelソースコードのビルド(修正の詳細) »