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

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

4.4.2.3. HAL の初期化

他の C プログラムと同様、HAL の初期化の最初の部分は、 Nios® Vプロセッサーcrt0.S ルーチンによって実装されます。 crt0.S は C ランタイムの初期化を完了した後、HAL alt_main() 関数を呼び出します。これにより、HAL BSP ランタイム・ライブラリーとサブシステムが初期化されます。

HAL alt_main() 関数は、次のステップを実行します。

  1. 割り込みの初期化 — alt_irq_init() 関数を使用して、 Nios® Vプロセッサー に向けて割り込みサポートを設定します。
  2. RTOS の開始 — この OS が (ALT_OS_INIT および ALT_SEM_CREATE 関数を使用して) 実行するようコンフィグレーションされている場合、RTOS を開始します。RTOS の初期化についての詳細は、オペレーティング・システムの選択を参照してください。
  3. デバイスドライバーの初期化 — デバイスドライバーを (alt_sys_init() 関数を使用して) 初期化します。 Nios® Vプロセッサー・ツールは、HAL でサポートされているすべてのペリフェラルを自動検出し、alt_sys_init() コードの各ペリフェラルに向けてデバイス・コンフィグレーション関数への呼び出しを自動で挿入します。この動作をオーバーライドするには、BSP Editor の [Drivers] タブでデバイスドライバーを無効にします。デバイスドライバーの有効化と無効化については、デバイスドライバーの管理を参照してください。
  4. stdio 関数の設定 — stdin、stderr、および stdout の stdio サービスを初期化します。これらのサービスにより、アプリケーションは GNU newlib stdio 関数を使用し、ファイルポインターをサポートされているキャラクター・デバイスにマップできます。サービスの設定の詳細については、キャラクター・モード・デバイスを参照してください。
  5. C++ グローバル・コンストラクターおよびデストラクターの初期化 — グローバル C++ コンストラクターおよびデストラクター関数の初期化を処理します。これらの関数呼び出しは、アプリケーションが C++ プログラミング言語で記述されている場合に必要です。
  6. main()の呼び出し — 関数 main() またはアプリケーションを呼び出します。ほどんどのアプリケーションは、main() 関数宣言を使用して構築されており、この関数で実行を開始します。

デフォルトでは、HAL コンフィグレーション・メカニズムは、C++ プログラミング言語のサポートを有効にします。エンベデッド・システムのコード・フットプリントの削減で説明されているように、この機能を無効にするとアプリケーションのコード・フットプリントの削減されます。 Nios® Vプロセッサー の C++ 言語のサポートは、GCC ツールチェーンに依存します。