インテルのみ表示可能 — GUID: ico1641452755570
Ixiasoft
インテルのみ表示可能 — GUID: ico1641452755570
Ixiasoft
4.4.2.2. crt0 の初期化
crt0 コードブロックには、C ランタイム初期化コード (C または C++ アプリケーションの実行を可能にするために必要な初期化命令) が含まれています。インテルが提供する crt0 ブロックは、次の初期化手順を実行します。
- 命令キャッシュの初期化 — プロセッサーに命令キャッシュがある場合、このキャッシュは初期化されます。
注: プラットフォーム・デザイナーは、命令キャッシュを持つプロセッサーを判別し、システム生成時にこれらのキャッシュをコンフィグレーションします。 Nios® Vプロセッサー・ツールは、必要に応じて、命令キャッシュの初期化コード ブロックを挿入します。
- データキャッシュの初期化 — プロセッサーにデータキャッシュがある場合、このキャッシュは初期化されます。命令キャッシュと同様に、このコードは、プロセッサーにデータキャッシュがある場合に有効になります。
- 例外ベクトル (mtvec) および割り込みコントローラー設定の初期化 — 例外ベクトルと割り込みコントローラーの設定は、ハードウェア・デザインでコンフィグレーションされているように初期化されます。
- グローバルポインターの設定 — グローバル・ポインター・レジスターは初期化されます。
- スタックポインターの設定 — スタックポインターは初期化されます。スタックポインターのアドレスを設定できます。
- .bss セクションのクリア — .bss セクションはすべて 0 に初期化されます。.bss セクションのアドレスを設定できます。
- alt_load マクロの呼び出し — アプリケーションがフラッシュメモリー (.textセクションはフラッシュメモリーから実行します) から実行するようにデザインされている場合、残りのセクションは揮発性メモリーにコピーされます。
- alt_main() へのジャンプ — プロセッサーは、HAL BSP ランタイム・ライブラリーの初期化を開始する alt_main() 関数にジャンプします。
注意: BSP ライブラリーファイルにサードパーティの RTOS または環境を使用する場合、alt_main() 関数は、インテルによって提供されるものとは異なる場合があります。
サードパーティーのコンパイラーまたはライブラリーを使用する場合、C ランタイム初期化の動作は、この説明と異なる可能性があります。
crt0.S ソースファイルは、 Nios® V プロセッサー BSP を <bsp_dir>/HAL/src ディレクトリーに生成する際に生成されます。crt0 コードには、デザインのハードウェア・シミュレーションを実行する場合にのみ初期化ショートカットが含まれています。これらの最適化は、hal.enable_sim_optimize 設定によって制御できます。
hal.enable_sim_optimize BSP 設定の詳細については、Nios V プロセッサー・ボード・サポートのパッケージ・エディターによって管理される設定を参照してください。