AR# 55689

|

SDK - Zynq-7000 FPU ABI コンフィギュレーション (mfloat-abi)

説明

ザイリンクス SDK 内に含まれている GCC ツールチェーンにより、ユーザーは mfloat-api オプションを使用して浮動小数点 ABI をコンフィギュレーションできるようになります。

ソリューション

SDK 2015.4 以前のバージョン:

デフォルトのツールチェーンは Sourcery CodeBench で、ソフト浮動小数点 ABI でコンパイルされたライブラリのみが含まれています。 

つまり、mfloat-api=hard を使用することはできず、使用した場合はコンパイル エラーが発生します。

Invoking: ARM gcc linker
arm-xilinx-eabi-gcc -Wl,-T -Wl,../src/lscript.ld -L../../hello_a9_bsp/ps7_cortexa9_0/lib -o "hello_a9.elf"  ./src/helloworld.o ./src/platform.o   -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
/proj/xbuilds/released/2017.1/GA/2017.1_0415_1/installs/lin64/SDK/2017.1/gnu/arm/lin/bin/../lib/gcc/arm-xilinx-eabi/4.9.2/../../../../arm-xilinx-eabi/bin/ld: error: ./src/helloworld.o uses VFP register arguments, hello_a9.elf does not

作成されたアプリケーションのデフォルト プロジェクト設定には特定のコンフィギュレーションが含まれないため、デフォルトにより mfloat-abi=softfp がツールチェーンによって使用されます。 

この動作は、任意の浮動小数点計算のディスアセンブル コードを確認することによってチェックできます。


  b = a/1.2;
  100604:    ed5b7a02     vldr    s15, [fp, #-8]
  100608:    eef70ae7     vcvt.f64.f32    d16, s15
  10060c:    eddf1b0d     vldr    d17, [pc, #52]    ; 100648
  100610:    eec00ba1     vdiv.f64    d16, d16, d17
  100614:    eef77be0     vcvt.f32.f64    s15, d16
  100618:    ed4b7a03     vstr    s15, [fp, #-12]

SDK 2016.1 以降のバージョン:


デフォルトのツールチェーンは Linaro GCC で、ソフト浮動小数点とハード浮動小数点の両 ABI でコンパイルされたライブラリが含まれています。

作成されたアプリケーションのプロジェクト設定には mfloat-abi=hard 設定がデフォルトにより含まれるため、FPU ハードウェア命令がツールチェーンによって使用されます。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
66297 SDK - デザイン アシスタント N/A N/A
AR# 55689
日付 11/21/2018
ステータス アクティブ
種類 ソリューション センター
デバイス
ツール
People Also Viewed