2016年11月14日

DSP処理前設定2

今回はSTM32でのDSP処理の前設定2について紹介します。

環境はこれまで同様、
・STM32F303K8
 +SW4STM32(System Workbench for STM32)
 +STM32CubeMX(F3_1.6.0)
です。

前回紹介したDSP処理の前設定だけではsqrtなどの指数関数がコード上にあると
下記のようなエラー発生し、コンパイルできないという不具合に遭遇しました。


undefined reference to `__errno'
collect2.exe: error: ld returned 1 exit status
make: *** [*XXXX.elf] Error 1


ハードFPUで指数関数等を処理するためにgccの引数を追記します。

Eclipseのプロジェクトから
「C/C++ Build」→「Settings」→「ToolSettings」→「MCU GCC Compiler」
「Command」欄を「gcc -fno-math-errno」へ変更します。


FFT_Setting2222.png



「OK」で設定を保存してください。



これで、指数関数がハードウェアFPUで使用可能になります。

    arm_sqrt_f32(a,&b);
    b=sqrtf(a);

  ※sqrt()はソフトFPUとなるため、使いません。



また、以前紹介したようにfloatでprintfするためには下記も追記してください。
Eclipseのプロジェクトから
「C/C++ Build」→「Settings」→「ToolSettings」
→「MCU GCC Linker」→「Miscellaneous」
「Linker flags」の欄を
「-specs=nosys.specs -specs=nano.specs -u _printf_float」へ変更します。


posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック