Skip to main content

IAR Embedded Workbench for Arm 9.70.x

システム初期化

このセクションの内容:

多くの場合、システム初期化の適応が必要になります。たとえば、メモリマップされた特殊機能レジスタ(SFR)をアプリケーションで初期化することが必要な場合や、システム起動コードによってデフォルトで実行されるデータセクションの初期化を省略することが必要となる場合などがあります。

これは、独自のバージョンの__low_level_initルーチンを実装することで実現できます。このルーチンは、データセクションの初期化前にcmain.sファイルから呼び出されます。cmain.sファイルは直接修正しないでください。

システム起動を処理するコードは、ソースファイルcstartup.slow_level_init.cに配置されます。cstartup.sは、arm\src\lib\armarm\src\lib\thumb (Cortex-M)、またはarm\src\lib\a64ディレクトリに配置され、low_level_init.carm\src\lib\runtimeディレクトリに配置されます。

通常は、cmain.sまたはcexit.sのいずれかのファイルをカスタマイズする必要はありません。

注記

独自のバージョンの__low_level_initまたはcstartup.sファイルを実装する場合も、ライブラリをリビルドする必要はありません。

Customizing __low_level_init

本製品には— low_level_init.cという低レベル初期化ファイルのスケルトンが付属しています。

注記

この時点では変数は初期化されていないため、初期化が必要な静的変数はこのファイル内では使用できません。

__low_level_initから返される値によって、データセクションをシステム起動コードで初期化するかどうかが決定されます。関数が0を返す場合、データセクションは初期化されません。

cstartupファイルの修正

前述のように、独自のバージョンの__low_level_initの実装によって目的の動作を達成できる場合は、cstartup.sファイルを修正する必要はありません。ただし、cstartup.sファイルの修正が必要な場合は、一般的な手順に従いファイルをコピーして修正し、プロジェクトに追加することをお勧めします(ライブラリモジュールのオーバライドを参照)。

注記

使用しているcstartup.sのバージョンで使用される開始ラベルが、確実にリンカで使用されるようにする必要があります。リンカで使用される開始ラベルの変更方法については、‑‑entryを参照してください。

Cortex-Mの場合、割り込みまたは他の例外ハンドラを使用するには、cstartup_M.sまたはcstartup_M.cの修正済みコピーを作成する必要があります。