0

FrescaleのiMX6quadArmCortexA9CPUに取り組んでいます。OSはLinuxです。そのランタイムライブラリは、-mfloat-abi = softfpを使用してarmv5アーキテクチャ用にコンパイルされています。armv7-aarch用にコンパイルできるアプリケーションを実行し、コンパイル時にハードフロートオプションを有効にします(-mfloat-abi = hard)。

アプリケーションがARMで正常に実行されることを期待する必要がありますか?明らかに、ランタイムライブラリへのアクセスが「ハードウェア」で実行されることは期待していませんが、コードの一部は「ハード」フローティングで正常に動作しますか?

また、逆も可能ですか?つまり、ライブラリがすべてのハードウェアアクセラレーションが可能な特定のプロセッサ用にコンパイルされている場合、softfp ABIを使用して単純なアプリケーションをコンパイルし、ARM開発ボードで正常に実行されることを期待できますか?

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

4

1 に答える 1

1

ARM float ABIは、その頭字語が示すように、バイナリインターフェイスです。実行可能ファイルと共有オブジェクト(ダイナミックライブラリ)などの2つのバイナリがある場合、それらは同じABIを持っている必要があります。そうでない場合、正しく通信できません。

詳細では、バイナリインターフェイスは、関数がパラメータの受け渡しをどのように期待するかを定義します。どのレジスタを保持する必要があります。

たとえば、hardsoftfpABIの違いは、softfp関数では通常のレジスタで浮動小数点パラメータを期待するのに対し、ハードコンベンション関数では浮動小数点レジスタで浮動小数点パラメータを期待することです。

于 2013-02-28T20:11:17.443 に答える