9

私は、開発ボード用にセットアップしているツールチェーンのgccオプションを理解しようとしています。これは、FreescaleのiMX6qクアッドプロセッサをベースにしたSabre-liteです。

これで、iMX6は基本的にcortex-a9プロセッサであり、コプロセッサvfpv3とneonに加えて、ベクターグラフィックス、2D、さらには3Dエンジンを搭載していることがわかりました。

ただし、リリースノートと使用ガイドのドキュメントでは、gccで有効にできるオプションを有効にする方法についてあまり明確にされていません。

実際、私が「遊ぶ」ことができるオプションは次のとおりです。

-march= armv7-a                - ok this one is pretty obvious.
-mfpu= vfpv3/neon              - i can use only the vfpv3 co-processor, or both (respectively, depends on option)
-mfloat-abi=softfp/soft/hard   - I guess I can choose hard here, as there is hardware for fp operations
-mcpu=cortex-a9                - is it option even necessary? it is not clear if it just an alias for -march or something else.

有効にする必要がある他のオプションはありますか?ツールチェーンに、Linuxカーネル/uboot/パッケージをビルドするためのデフォルトオプションとして次のものがあるのはなぜですか。

-march= armv7-a -mfpu= vfpv3 -mfloat-abi=softfp

ご協力ありがとうございました

4

2 に答える 2

6

を使用し-mthumb -O3 -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mvectorize-with-neon-quad -mfloat-abi=softfpます。NEONは非正規化数をサポートしていないため、デフォルトでは、コンパイラはNEONを使用した浮動小数点演算をベクトル化しないことに注意してください。精度が多少低下しても問題がない場合は、-ffast-mathスイッチを追加することで、gccに浮動小数点にNEONを使用させることができます。

于 2013-02-19T17:30:16.343 に答える
1

すべてに答えることはできませんが、その「--softfp」はFPUを使用することを意味しますが、そうでないコードとの互換性を維持します。

少し古くなったARMFPドキュメント

于 2015-05-06T22:35:34.223 に答える