wide_snow’s blog

30代の組込みエンジニア(ファーマー)による技術メモの記録

スポンサードリンク

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

はじめに

 過去の記事でTOPPERS OSについて書きました。

wide-snow.hatenablog.com

 

今回は実践編として、TOPPERS/FMPに慣れるために
公式ホームページを参考にしてテスト環境を作成しました。
提供されているskyeyeというツールを使用して
シミュレーション環境を作成しようとしましたが
ホームページの手順だと思わぬところでつまづいたので備忘録を残します。
なお、環境構築に使用しているパソコンはWindows 7(32bit)です。
 
まとめたものは
TOPPERS/FMPシミュレーション実行環境の作成方法1(失敗編)ーまとめ」
に記載しています。
 

テスト用TOPPERS/FMPを入手

にある「マルチプロセッサアプリケーション プログラミングライブ」というリンクをクリックします。
 

f:id:wide_snow:20160417091114p:plain

 
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のバージョンによって若干インストール出来る項目が違うようですが
今回追加でインストールしたものは
Devel
+- gcc-core: GNU Compiler Collection (C, OpenMP)
+- gcc-g++: GNU Compiler Collection (C++)
の2つです。
あとはデフォルトの設定を使用しています。
※ 後でわかりましたが、Perlやmake、libboost-develなども必要なので
 この時点でのインストールをオススメします。
 (検索画面で「Perl」「make」等を入力すると該当のものが表示されます)
 

f:id:wide_snow:20160417091130p:plain

 

f:id:wide_snow:20160417091138p:plain

 

f:id:wide_snow:20160417091147p:plain

 

f:id:wide_snow:20160417091155p:plain

 

f:id:wide_snow:20160417091203p:plain

 

f:id:wide_snow:20160417091211p:plain

 

f:id:wide_snow:20160417091218p:plain

 

f:id:wide_snow:20160417091228p:plain

 

f:id:wide_snow:20160417091237p:plain

 

f:id:wide_snow:20160417091249p:plain

 
 

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

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

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

Sourcery G++ Liteの代わりに選んだのがLaunchPadです。
LaunchPadはGNU C/C++を使ったツールチェインです(利用無料)。
googleで「launchpad gcc」と検索すると多々情報が得られますが
必要なファイルは下記のサイト(GCC ARM Embedded in Launchpad)から入手可能です。
 

LaunchPadを入手

右側にあるDownloadから「gcc-arm-none-eabi-5_3-2016q1-20160330-win32.exe」をダウンロードします。
 

f:id:wide_snow:20160417091301p:plain

 

LaunchPadをインストール

下記の手順でインストールします。
 

f:id:wide_snow:20160417091314p:plain

 

f:id:wide_snow:20160417091323p:plain

 

f:id:wide_snow:20160417091332p:plain

 

f:id:wide_snow:20160417091340p:plain

※ インストール先フォルダはCygwin上にしておきます。
 また、フォルダ名に空白があると後々エラーになることがあるので、空白は使いません。
 

f:id:wide_snow:20160417091348p:plain

 

Cygwinのパスを通す

gcc-arm-none-eabiを使用するために「.bashrc」を変更します。
$ vi ~/.bashrc
 

f:id:wide_snow:20160417091358p:plain

PATH=/usr/local/2016q1/bin:${PATH}
を追加します。”/usr/local/2016q1”はLaunchpadインストール時に指定したフォルダ名です。
 

起動することを確認する

Cygwinを再起動し、
$ arm-none-eabi-gcc -v
を実行します。
以下のようにバージョンが表示されていればインストールは正常に終了しています。
 

f:id:wide_snow:20160417091407p:plain

 

SkyEyeのインストール

README.txtに従ってインストールを行います。
(SkyEyeって何?という人は、multiprocessor_programming_live.pdfを参照してください)
 

f:id:wide_snow:20160417091416p:plain

「管理者として実行」を選択します。
 

f:id:wide_snow:20160417091426p:plain

事前にC:¥cygwin¥usr¥local¥binにSkyEyeをコピーし、regist.batを実行します。
 

FMPカーネル展開

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

f:id:wide_snow:20160417091436p:plain

 

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

README.txtに従ってサンプルプログラムの実行を行ったところ、
 

f:id:wide_snow:20160417091445p:plain

-bash: ../../configure: /usr/bin/perl: 誤ったインタプリタです : No such file or directory
というエラーが発生しました。
どうもCygwinのインストール時にPerlをインストールしていなかったようです。
再度Cygwinのセットアップを起動してPerlを追加します。
 

Cygwin再セットアップ(Perlの追加)

基本的なインストール方法は前の手順と同じなので省略します。
 

f:id:wide_snow:20160417091454p:plain

 

f:id:wide_snow:20160417091506p:plain

 

f:id:wide_snow:20160417091514p:plain

 
インストール完了後、Cygwin上で
$ perl -v
を実行したときにバージョン情報が表示されれば正常にインストールされています。
 

サンプルプログラムおよびMakefile作成(2回目)

再度Cygwin上で
$ cd /home/win7user/conf2011_multicore_live/fmp_1_2_log/obj/sample
$ ../../configure -T at91skyeye_gcc
を実行します。
なお、コマンドラインのパラメータ”-T"はターゲット名を指定するためのものです。
 
・・・以下のエラーが発生しました。
syntax error at ../../configure line 79, near "do Getopt("
BEGIN not safe after errors--compilation aborted at ../../configure line 104.
 
で同様のメッセージを調査すると
「configureの79行目でエラーが起こっているから104行目の処理を諦めたよ」
ということのようです。
 
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
を実行します。
-bash: make: コマンドが見つかりません
と言うエラーが出ました。
またもCygwinインストール時に不足しているものがあったようです・・・。
 

Cygwin再々セットアップ(makeの追加)

さらに追加で
Devel
+- make: The GNU version of the make utility
をインストールします。
 

ビルド(2回目)

Cygwin上で
$ make depend
を再度実行します。
何箇所かでsyntax errorが発生しますが、Makefile作成のときと同じように
・do ****(); -> ****();
に変更します。
 
修正後に
$ make depend
を再度実行すると
「cfg.exeが動作するときにcygboost_system-mt-1_43.dllがない」
と言ってくるので、またまたCygwinのセットアップで追加インストールを行います。
 

Cygwin再々々セットアップ

検索画面に”boost”を入れてヒットしたものの中から
Libsに該当するものを全てインストールします。
(全部は使っていないと思いますが・・・)
インストール後、c:¥cygwin¥binを見ると
“cygboost_system-1_58.dll”というファイルが追加されています。
どうも、コンフィギュレータのcfg.exeが古すぎて
cygwinのバージョンと合わないようです・・・。
 

最新のコンフィギュレータを入手して入れ替え

から最新のコンフィギュレータファイル(Release 1.9.5)を入手して元のファイルと入れ替えます。
元のファイルは
c:¥cygwin¥home¥win7user¥conf2011_multicore_live¥fmp_1_2_log¥cfg¥cfg
にあります。
 

ビルド(3回目)

Cygwin上で
$ make depend
を再度実行してみましたが、まだエラーが消えません。
今度は
c:¥cygwin¥usr¥local¥2016q1¥arm-none-eabi¥bin¥ld.exeが
cannot open linker script file arm-names.inc : No such file or directory
というエラーを応答しています。
 
fmp_1_2_log¥target¥at91skyeye_gcc¥at91skyeye.ld
と記載されており、ところどころで”__cs3_”の記述があるので
Sourcery G++ Liteを使用しないとダメそうです。