2

私は STM32F406VG MCU を持っており、ARM GCC を持っています。Google で見つけた FPU にいくつかの奇妙な引数を使用して、自分のプラットフォーム用にコンパイルしましたが、対応する参照ドキュメントが見つかりません。

-mfpu=fpv4-sp-d16 を使用します。Cortex-M4F があることを示すデータシートがありますが、FPU については何もありません。GCC の役に立たないドキュメント: http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.htmlと ARM の役に立たないドキュメント: http://infocenter.arm.com/help/index.jsp? topic=/com.arm.doc.dui0489c/CIAHHAFG.html

しかし、この引数を私の FPU と一致させるための正確な定義を微調整することはできません。すべての部品番号とそれに対応する正確な FPU 定義がインターネット上にある巨大な表はありますか?

4

2 に答える 2

3

この情報は、さまざまな場所から組み合わせることができます。まず、対象の ARM プロセッサを特定してから、そのプロセッサの TRM を見つける必要があります。この場合、Cortex-M4 TRM は次の場所から入手できます。

http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439d/DDI0439D_cortex_m4_processor_r0p1_trm.pdf

これにより、Cortex-M4 の FPU が次のようになっていることがわかります (セクション 7)。

ARMv7-M Floating-Point Extension (FPv4-SP) の単精度バリアントの実装。

ARMv7m アーキテクチャ リファレンス マニュアル ( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.htmlでライセンス取得後に入手可能) を見ると、セクション A1.3 の浮動小数点アーキテクチャ拡張。ここには、次のアドバイスもあります。

ARMv7-A および ARMv7-R アーキテクチャ プロファイル用に定義された VFP 実装オプションに基づいて、ARMv7-M 浮動小数点拡張の完全な特性は FPv4-SP-D16-M です。一部のソフトウェア ツールでは、この特性評価が必要になる場合があります。

GCC はキャラクタライゼーションの末尾に「m」を追加しないため、これによりオプション -mfpu=fpv4-sp-d16 が表示されます。

VFPv4-d16 の意味については、ARMv7a アーキテクチャ リファレンス マニュアルを参照する必要があります (ライセンスの背後にあるhttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0419c/index. html ) ここで、セクション A1.4.1 で次の定義が提供されます。

VFPv4 は、32 個または 16 個のダブルワード レジスタで実装できます。A2-56 ページの Advanced SIMD および浮動小数点拡張レジスタを参照してください。必要に応じて、これらの実装オプションは次の用語を使用して区別されます。

• VFPv4-D32、または VFPv4U-D32、32 レジスタ実装用

• VFPv4-D16 または VFPv4U-D16 (16 レジスタ実装用)。

VFPv4 という用語が使用されている場合、両方のオプションが含まれます。

于 2013-10-20T13:13:17.493 に答える
1

Cortex M4 の ARM のページには、gcc の「fpv4-sp-d16」に対応する「単精度浮動小数点ユニット - IEEE 754 準拠」があることが示されています。d16 は、32 個の sp レジスタがあることを示すためのものです。

http://mobile.arm.com/products/processors/cortex-m/cortex-m4-processor.php?tab=仕様

于 2013-10-19T09:55:10.360 に答える