TOPPERS/FMPシミュレーション実行環境の作成方法3(成功編)

「Sourcery G++ Liteを使う必要がある」
ことが分かりました。
今回はクリーンインストールしたWindows 7 32bit環境に対して
Sourcery G++ Liteをインストールし、シミュレーション環境を作成します。

テスト用TOPPERS/FMPを入手

にある「マルチプロセッサアプリケーション プログラミングライブ」というリンクをクリックします。
conf2011_multicore_live.zip
がダウンロードされます。この中に以下のドキュメントやソースコードが入っています。
conf2011_multicore_live.zip
+- fmp_1_2_log.zip
+- multiprocessor_programming_live.pdf
+- README.txt
+- skyeye_devm_package-1.0.5.zip
+- TLV_1.3.zip

Cygwinを入手してインストール

本ツールは様々なサイトで解説されているので、それらを参考にインストールします。
Cygwinのバージョンによって若干インストール出来る項目が違うようですが
デフォルト設定に加え「Select Packages」で下記を追加インストールしています。
Devel
+- gcc-core: GNU Compiler Collection (C, OpenMP)
+- gcc-g++: GNU Compiler Collection (C++)
+- gdb: The GNU Debugger
+- make: The GNU version of the ‘make’ utility
Perl
 全て
Libs
 検索画面に”boost”を入れてヒットしたもの全て

Sourcery G++ Liteを入手してインストール

conf2011_multicore_live.zipの中に入っているREADME.txtには
クロスコンパイラ(Sourcery G++ Lite)インストーラである
「arm-2009q3-68-arm-none-eabi.exe 」を
から入手するように指示されています。
ところが、2016/04/13時点では無料版が入手出来なくなっており
無料評価版(有効期間:30日間)を使うか製品版を購入するしかありません。
前回の失敗編では別の開発ツールを探したのですが、今回は
arm-2009q3-68-arm-none-eabi.exe
をインターネット上から捜索することにしました。

arm-2009q3-68-arm-none-eabi.exeの入手

googleで「arm-2009q3-68-arm-none-eabi sourceforge」
と検索したところ該当ファイルがダウンロード出来ましたので
これを使用します。

arm-2009q3-68-arm-none-eabi.exeのインストール

インストール先以外はデフォルト設定のままインストールを進めます。
インストール先を空白がないフォルダパス
C:¥cygwin¥usr¥local¥SourceryG++Lite
にしてインストールを行います。

起動することを確認する

Cygwinを再起動し、
$ arm-none-eabi-gcc -v
を実行します。
バージョンが表示されていればインストールは正常に終了しています。
表示されない場合はパスが通っていないと思われるので
$ vi ~/.bashrc
を起動して
PATH=/usr/local/SourceryG++Lite/bin:${PATH}
を追加してください。

SkyEyeのインストール

README.txtに従ってインストールを行います。
(SkyEyeって何?という人は、multiprocessor_programming_live.pdfを参照してください)
「管理者として実行」を選択します。
事前にC:¥cygwin¥usr¥local¥binにSkyEyeをコピーし、regist.batを実行します。

FMPカーネル展開

README.txtに従ってファイルの展開を行います。
今回は
c:¥cygwin¥home¥win7user¥
にfmp_1_2_logフォルダを展開しています。

サンプルプログラムおよびMakefile作成

Cygwin上で
$ cd /home/win7user/conf2011_multicore_live/fmp_1_2_log/obj/sample
$ ../../configure -T at91skyeye_gcc
を実行すると
syntax error at ../../configure line 79, near “do Getopt(“
BEGIN not safe after errors–compilation aborted at ../../configure line 104.
というエラーが出るので、対象となるファイルを修正します。
なお、コマンドラインのパラメータ”-T”はターゲット名を指定するためのものです。
本エラーの原因は、perlのバージョンが新しくなったことによる影響のようです。
configureの中身を修正します。
・require “getopt.pl”; -> use Getopt::Std;
・do Getopt(“TAaULDltmdpgP”); -> getopt (“TAaULDltmdpgP”);
・do ****(); -> ****();
※ do ****()は何種類かあるので全て修正します。
該当関数:do uname();、do convert();、do get_path();、do get_objext();、do generate();
これで再々実行すると、以下のようなメッセージが出て正常終了しました。
$ ../../configure -T at91skyeye_gcc
configure: Generating Makefile from ../../sample/Makefile.
configure: Generating sample1.c from ../../sample/sample1.c.
configure: Generating sample1.h from ../../sample/sample1.h.
configure: Generating sample1.cfg from ../../sample/sample1.cfg.

ビルド

Cygwin上で
$ make depend
を再度実行します。
何箇所かでsyntax errorが発生しますが、Makefile作成のときと同じように
・require “getopt.pl”; -> use Getopt::Std;
・do Getopt(“****”); -> getopt (“****”);
・do ****(); -> ****();
※ do ****()は何種類かあるので全て修正します。
に変更します。
該当ファイル:
utils¥genoffset
utils¥makedep
修正後に
$ make depend
を再度実行すると
「cfg.exeが動作するときにcygboost_system-mt-1_43.dllがない」
とエラーが表示されます。c:¥cygwin¥binを見ると“cygboost_system-1_58.dll”
というファイルはあるのですが、コンフィギュレータのcfg.exeが古すぎて
cygwinのバージョンと合わないようです・・・。

コンフィギュレータを入れ替えて再度ビルド

からコンフィギュレータファイル(Release 1.9.4)を入手して元のファイルと入れ替えます。
元のファイルは
c:¥cygwin¥home¥win7user¥conf2011_multicore_live¥fmp_1_2_log¥cfg¥cfg
にあります。
入れ替え後に
$ make depend
を実行すると
rm -f Makefile.depend
Generating Makefile.depend.
とメッセージが表示されて正常に終了しますので
$ make
を実行してビルドを完了させます。
check complete
とメッセージが表示されれば正常に終了しています。

サンプルプログラムの実行

README.txtに従ってサンプルプログラムを実行します。
Cygwinを2つ起動して
[Cygwin 1]
$ cd /home/win7user/fmp_1_2_log/obj/sample
$ skyeye -e fmp.exe -c ../../target/at91skyeye_gcc/skyeye_pe2.conf
[Cygwin 2]
$ cd /home/win7user/fmp_1_2_log/obj/sample
$ skyeye -e fmp.exe -c ../../target/at91skyeye_gcc/skyeye_pe1.conf
を実行することでサンプルプログラムが実行されます。

コメント

タイトルとURLをコピーしました