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

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

5.8.3. 初期化されたメモリー・コンフィグレーションからの実行

リセットアドレスは、メモリー内のアプリケーションの先頭を指します (ブートローダなし)。プロセッサーがリセットから復帰する前に、リセットメモリーの内容を初期化する必要があります。初期化は、不揮発性リセットメモリー (フラッシュ、ROM、初期化された FPGA RAM など) を使用して実装するか、リセットメモリーに書き込む外部マスター (別のプロセッサーなど) によって実装できます。 HAL C ランタイムのスタートアップ・コード (crt0) は命令キャッシュを初期化し、alt_load()を使用して選択したセクションを VMA にコピーし、_start にジャンプします。関連する各セクション (.rwdata.rodata.exceptions) に対しては、ブール設定はこの動作を制御します。デフォルトの Tcl スクリプトは、表ブートローダーに依存する設定で説明されているように、これらをデフォルト値に設定します。

複数のリセット後に .rwdata を正しくする必要がある場合、alt_load() は .rwdata セクションを (別の RAM または .text RAM と同じ RAM 内の予約領域のいずれかに) コピーする必要があります。

このブート・コンフィグレーションには、次の特徴があります。
  • alt_load() が呼び出される
  • 実行可能ファイルのコードがリセットされる

デフォルトの Tcl スクリプトは、リセットと .text メモリーが同じである場合に、このコンフィグレーションを選択します。

このブート・コンフィグレーションでは、プロセッサー・コアがリセットされると、デフォルトで .rwdata セクションは再初期化されません。通常、再初期化はブートローダーによって行われます。ただし、起動前に事前に初期化されると想定されるメモリーが不足しているため、このコンフィグレーションにはブートローダーがありません。ソフトウェアにプロセッサーのリセット時に再初期化する必要がある .rwdata セクションがある場合は、BSP の hal.linker.enable_alt_load_copy_rwdata 設定をオンにします。