ツールチェインのgccオプションを把握しようとしています。開発ボード用に設定しています。 FreescaleのiMX6qクワッドプロセッサをベースにしたSaber-Liteです。フリースケールのiMX6q ARMプロセッサのgccオプション
iMX6は基本的にコプロセッサーvfpv3とネオン、そしてベクトルグラフィックス、2D、さらには3Dエンジンを搭載したcortex-a9プロセッサーです。
しかし、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
あなたの助け
あなた-mfloat-ABI ABIがシステム上で使用されている方と一致する必要があります。 softfpも浮動小数点ハードウェアを使用しますが、呼び出し規約が異なります。 "readelf -A/bin/ls"(例えば)で確認できます。 "Tag_ABI_VFP_args:VFPレジスタ"はハードを意味します。 – unixsmurf
非常に便利です、ありがとうございます! – nass
(もちろん、システムのネイティブgccを使用してターゲットシステムでネイティブにコンパイルしている場合は、正しいABIがコンパイラのデフォルトになり、省略することができます) – unixsmurf