カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10811007
FAQカテゴリ(大) コンパイラ
最終更新日 2016-06-23

質問内容

FPUの初期設定はどこで行われているのですか?

回答内容

リンカが初期化部分で、デバイスに応じた小さなライブラリ関数(__iar_init_vfp()) をリンクしております。
 
■Cortex-M系のデバイスの場合
デフォルトのビルドでは、
EWARMをインストールしたフォルダ\arm\src\lib\thumb\cstartup_M.c
の以下の部分から呼び出されています。
 
void __iar_program_start( void ) <- リセット後ここに来ます
{
  __iar_init_core();
  __iar_init_vfp();
  __cmain();
}

■その他のデバイスの場合
デフォルトのビルドでは、
EWARMをインストールしたフォルダ\arm\src\lib\arm\cstartup.s
の以下の部分から呼び出されています。

__iar_program_start:
?cstartup:
    :
        ;; Initialize VFP (if needed).
        BL      __iar_init_vfp
        B       __cmain

__iar_init_vfp()の部分の処理を変更したい場合は、新しい__iar_init_vfp()関数を別に作成してプロジェクトに追加することにより、この関数を差し替えることができます。 

参考資料URL