[Armadillo:07594] Re: ARM11 のVFPを使う

Takenoshita Koyo email@hidden
2011年 9月 22日 (木) 19:59:19 JST


竹之下です。

> VFPを使わない状態でビルドされたARM11のLinux環境に、VFPを使う自分のプログラム
> を持って行って使いたいと考えています。
> 
> 以前、いろいろ試した結果、VFP有効でビルドされたlibc.aとlibm.aをスタティッ
> クリンクして、自分のプログラムをVFP有効でビルドしてしまえばOK。
> ということが分かったのですが、やっぱり動的リンクでやりたいなあ。と思うと
> ころです。
> 
> MLの過去の話題にも同じようなことを検討されていた方がいたと思いますが、
> だいぶ日も経ってますので、何らかの解決策にたどり着いた方がおられましたら、
> お知恵を拝借したいのですが、いかがでしょうか?

>> Armadillo-500(FX含む)でVFPを使う手順は、本MLの過去ログの以下のスレッド
>> が参考になると思います。
>> http://lists.atmark-techno.com/pipermail/armadillo/2009-March/004155.html
> 
> と回答いただき。

2009年の頃とは少し状況が変わっていまして、現在は新しい開発環境(ATDE3)がリリース
されています。ATDE3を使うともう少し簡単にVFPを活用できます。

まず、開発環境としてATDE v3を使い、Atmark Distのmake menuconfigで
以下の項目を選択すると、ユーザーランドのABIとしてEABIを使うように
なります。(ATDE v2で作成していたユーザーランドはOABIのため、
バイナリ互換性がなくなります。)

Kernel/Library/Defaults Selection
   (armel) Cross-dev

EABIにすると、OABIの場合と比べ10倍ほど浮動小数点演算が早くなります。

上記でも遅い場合、プログラムをビルドする際に、gccのオプションとして
"-mfloat-abi=softfp -mfpu=vfp"をつけてください。そうすることで、
浮動小数点演算時にVFPを使うようになります。
これにより、さらに数倍速くなることが期待されます。

自作のアプリケーションプログラムがボトルネックになっている場合は、
makefileに"-mfloat-abi=softfp -mfpu=vfp"を追加するだけです。
(この場合でも、ライブラリは同じものが使えます。)

もし、ライブラリがボトルネックになっている場合は、ライブラリをビルド
しなおす必要があります。この方法はライブラリごとに異なりますので、
ボトルネックになっているライブラリが特定できましたら、再度個別に
本MLに投稿いただければと思います。 

(2011年09月22日 14:45), MasakiAoyama wrote:
> 青山です。
> 
> VFPを使わない状態でビルドされたARM11のLinux環境に、VFPを使う自分のプログラム
> を持って行って使いたいと考えています。
> 
> 以前、いろいろ試した結果、VFP有効でビルドされたlibc.aとlibm.aをスタティッ
> クリンクして、自分のプログラムをVFP有効でビルドしてしまえばOK。
> ということが分かったのですが、やっぱり動的リンクでやりたいなあ。と思うと
> ころです。
> 
> MLの過去の話題にも同じようなことを検討されていた方がいたと思いますが、
> だいぶ日も経ってますので、何らかの解決策にたどり着いた方がおられましたら、
> お知恵を拝借したいのですが、いかがでしょうか?
> 
> 
> ここまでの経緯
> 
> 以前、500FXでVFPを使うプログラムのことについて質問して、
> 
>> Armadillo-500(FX含む)でVFPを使う手順は、本MLの過去ログの以下のスレッド
>> が参考になると思います。
>> http://lists.atmark-techno.com/pipermail/armadillo/2009-March/004155.html
> 
> と回答いただき。
> 
> 1.上記のVFP環境構築で作成できる環境にはVFPに対応したXもGTK+も含まれていない
>  ため、自力では準備ができず断念した。
> 
> 2.通常リリースされているatmark-distのARM-LinuxはVFPを使わない状態
>  ここに、上記VFP環境のlibc,libmの.soファイルを差し替えてみると、
>  自分のプログラムは無事動作したが、XかGTK+か分かりませんが、うまく動作せず
>  a500fx-demoの画面アプリの表示がおかしくなった。
>  (すみません、だいぶ前に試したので詳細わすれました)
> 
> 3.自分のプログラムにはVFP環境のlibc,libmをスタティックリンクすることで、
>  全部うまく動作することを確認。
> 
> 4.VFP環境のlibc.soをlibcvfp.so、libm.soをlibmvfp.soにリネーム、
>  -lcvfp -lmvfpで動的リンクでビルド。
>  通常のatmark-distのLinux環境に、上記libcvfp.so, libmvfp.soを置いて、
>  XやGTK+はlibc.soで動くが、自分のプログラムはlibcvfp.soで動く、
>  というのを素人考えでもくろむも失敗(たぶんlibcvfp.so libmcvfp.soのほうを
>    参照してなそう)← いまここ
> 
> という状況です。
> 
> 良い方法がありましたら、教えて頂ければ幸いです。
> 
> 以上、よろしくお願い致します。
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 


-- 
Koyo Takenoshita




armadillo メーリングリストの案内