Arria 10 SoCブート・ユーザーガイド

ID 683735
日付 10/30/2015
Public
ドキュメント目次

1.3.1. ブート選択

ブート選択(BSEL)ピンは、第2ステージ・ブート・イメージを取得するにあたって複数の方法を提供します。コールド・リセットでは、ブート・ソースはセキュア・ブートヒューズとBSELピントの組み合わせによって決定されます。このようなヒューズの値とBSELピンの値は、コールド・リセットが開始されるとHPSのセキュリティ・マネージャ・モジュールへ送信されます。HPSがリセットからリリースされる際、ブートROMはシステム・マネージャのbootinfoレジスタをリードし、ブートのソースを決定します。

注:
注: FPGAからのブート(BSEL[2:0]=0x1)が必要な場合は、FPGAのプログラムが完全に終了するまでHPSがリセットからリリースされないことを確認する必要があります。これを怠ると、ブート・ソースを決定するためのbootinfoレジスタが、ブートROMによって不正確にリードされる恐れがあります。FPGAの準備が整っているかどうかは、FPGAからHPSへのハンドシェイク信号であるf2h_boot_from_fpga_readyf2h_boot_from_fpga_on_failureによって示されます。f2h_boot_from_fpga_ready信号は準備が整っていることを示すためにプルアップされる必要があります。
注: 略語のBSELとBOOTSELは、ブート選択ピンを定義する場合同じ意味で用いられます。
表 1.  ブート・ソース選択に向けたBSELの値
BSEL[2:0] Value フラッシュ・デバイス
0x0 予約
0x1 FPGA(HPS-FPGA間のブリッジ)
0x2 1.8 V NANDフラッシュ・メモリ
0x3 3.0 V NANDフラッシュ・メモリ
0x4 外部トランシーバを備えた1.8 V SD/MMCフラッシュ・メモリ
0x5 内部トランシーバを備えた3.0 V SD/MMCフラッシュ・メモリ
0x6 1.8 V Quad SPIフラッシュ・メモリ
0x7 3.0 V Quad SPIフラッシュ・メモリ
注: BSELの値を0x4あるいは0x5で設定する場合、SD/MMCコントローラとインターフェイスするSDカードがコントローラ・インターフェイスとは異なる電圧で動作する必要があれば、レベル・シフトを供給するために外部トランスレーション・トランシーバおよびアイソレーションが必要となることがあります。詳細はSD/MMC Controllerの章を参照してください。

一般的なブート・フローは、ブートROMコードがフラッシュ・デバイス上で第2ステージ・ブートローダ・イメージを特定し、これをオンチップRAMへロードし、実行するためのものです。ウォーム・リセット後、ブートROMコードにRAM内でイメージを検索し、それを実行するよう指示することが可能です。

HPSフラッシュ・ソースは以下のような様々な種類のファイルを格納することが可能です。

  • FPGAプログラミング・ファイル
  • 第2ステージ・ブートローダ・バイナリ・ファイル(最大4コピー)
  • オペレーティング・システム・バイナリ・ファイル
  • アプリケーション・ファイル・システム

フラッシュ内の第2ステージ・ブートローダ・イメージは、HPSによる認証と解読が可能です。HPSオンチップRAMから直接ブートすると、常に未認証でクリアテキストとなります。ただし必要であればオプションでCRCを持つことができます。

BSELの値が0x1の場合、FPGAはそのブートへのブート・ソースとして選択されます。この選択は、fpga_boot_fヒューズがイネーブルされる場合など永続的なのもではありません。両方のケースにおいてCSELヒューズも無視され、HPSはFPGAが起動するまでリセット状態で保持され、ブートROMがブート・ソースを誤って解釈しないようプログラムする必要があります。

HPSフラッシュ・インタフェースがブート・イメージをロードするよう選択されている場合、ブートROMはオンチップRAMへブート・イメージをロードする前にそのインタエースのイネーブルとコンフィギュレーションを実行し、検証を行い、第2ステージ・ブートローダへソフトウェア・コントロールを渡します。

FPGAファブリックがブート・ソースである場合、ブートROMコードはデバイスのFPGA部分がユーザ・モードとなるまで待機し、コードの実行を準備し、FPGA RAM内でソフトウェア・コントロールを第2ステージ・ブートローダへ渡します。