Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

4.4.2.2. crt0 の初期化

crt0 コードブロックには、C ランタイム初期化コード (C または C++ アプリケーションの実行を可能にするために必要な初期化命令) が含まれています。インテルが提供する crt0 ブロックは、次の初期化手順を実行します。

  1. 命令キャッシュの初期化 — プロセッサーに命令キャッシュがある場合、このキャッシュは初期化されます。
    注: プラットフォーム・デザイナーは、命令キャッシュを持つプロセッサーを判別し、システム生成時にこれらのキャッシュをコンフィグレーションします。 Nios® Vプロセッサー・ツールは、必要に応じて、命令キャッシュの初期化コード ブロックを挿入します。
  2. データキャッシュの初期化 — プロセッサーにデータキャッシュがある場合、このキャッシュは初期化されます。命令キャッシュと同様に、このコードは、プロセッサーにデータキャッシュがある場合に有効になります。
  3. 例外ベクトル (mtvec) および割り込みコントローラー設定の初期化 — 例外ベクトルと割り込みコントローラーの設定は、ハードウェア・デザインでコンフィグレーションされているように初期化されます。
  4. グローバルポインターの設定 — グローバル・ポインター・レジスターは初期化されます。
  5. スタックポインターの設定 — スタックポインターは初期化されます。スタックポインターのアドレスを設定できます。
  6. .bss セクションのクリア — .bss セクションはすべて 0 に初期化されます。.bss セクションのアドレスを設定できます。
  7. alt_load マクロの呼び出し — アプリケーションがフラッシュメモリー (.textセクションはフラッシュメモリーから実行します) から実行するようにデザインされている場合、残りのセクションは揮発性メモリーにコピーされます。
  8. 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 プロセッサー・ボード・サポートのパッケージ・エディターによって管理される設定を参照してください。