• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "Arria 10 SoCブート・ユーザーガイド"

Copied!
45
0
0

読み込み中.... (全文を見る)

全文

(1)

Arria 10 SoC

ブート・ユーザーガイド

2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および Arria® 10 SoC 二向けたブートローダの生成とデバッグ方法を紹介します。 この SoC ブート・ユーザガイドには以下の詳細情報が含まれます。 • Arria 10 SoC システムでサポートされる一般的なブート・フロー • 使用可能なブート・ソース・デバイスおよびそのコンフィギュレーション方法

• 第 1 および第 2 ブート・ステージ(U-Boot あるいは Unified Extensible Firmware Interface (UEFI)) 注意: 本ユーザガイドでは、U-Boot を代表例として紹介していますが、第 2 ステージの非汎 用パブリック・ライセンス(非 GPL)ブートローダ・ソースとして UEFI の使用も紹介 されています。詳細は、「付録 B:UEFI ブートローダのビルド」を参照してください。 • ブートローダの生成方法およびブート・ソース・デバイスに向けたコンフィギュレーション 方法 • ブートローダのビルド方法 • ブートローダのデバッグ • ブート・メモリおよび SoC 開発プラットフォームに向けた技術的参照付録 関連情報 41 ページの付録 B:UEFI ブートローダのビルド

ブート・プロセス

一般的なブート・フロー

HPS のブートは、複数のステージ・プロセスを経て実行されます。各ステージは、次のステー ジのロードに影響します。 第 1 ステージは、ブート ROM の実行です。HPS 内に位置するブート ROM コードは、プロセッ サをリセットから立ち上げ、既知の状態および安定した状態にします。次に第 2 ステージ・ブー トローダを検索し、次のステージへコントロールを移譲します。ブート ROM コードは、第 2 ス テージ・ブートローダのみを把握しており、後続の潜在的なソフトウェア・ステージは把握して いません。この期間、ブート ROM はエラー条件もシームレスに処理します。 次のステージは、コントロールが第 2 ステージ・ブートローダに移譲される際に開始されます。 第 2 ステージ・ブートローダは、外部フラッシュ・メモリ、あるいは FPGA 内のどちらかの HPS 外部に位置します。FPGA を使用する場合、第 2 ステージ・ブートローダはオンチップ RAM に © 2016 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are

trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information,

ISO 9001:2008

(2)

コピーをしなくても直接 FPGA から実行可能です。第 2 ステージ・ブートローダは後続のステー ジ・ソフトウェアを検索し、ロードします。 コントロールが第 2 ステージ・ブートローダに移譲される前に、セキュア・ブートがイネーブル されているのであれば、暗号化/認証化が可能です。 ウォーム・リセット後、ユーザはオンチップ RAM 内でイメージを検索するようブート ROM に 指示を出し、直接実行することが可能です。この場合、RAM 内に格納されたイメージは、あら かじめ認証化されたコードとしてオンチップ RAM にインポートされている場合でも、未認証の クリアテキストとなります。 次の図は、一般的なブート・フローを表しています。ユーザ・ソフトウェア内のソフトウェア・ ステージの数は、この図の限りではなく、ソフトウェア・ステージの役割も異なる場合がありま す。 図 1: 一般的なブート・フロー 一般的なブート・フローにおける第 2 ステージ・ブートローダは、U-Boot となります。一般的 なブート・フロー OS の例は、Linux です。

Reset

Boot ROM

Second-Stage

Boot Loader

Operating

System

Application

User Software

ベアメタル・ブート・フロー

次の図は、ベアメタル・アプリケーションを使用するブート・フローを表しています。 図 2: ベアメタル・ブート・フロー

Reset

Boot ROM

Second-Stage

Boot Loader

BareMetal

カスタム・ブート・フロー

必要に応じて、カスタムのブート・フローを作成することも可能です。 図 3: カスタム・ブートローダ・フロー

Reset

Boot ROM

Custom Boot

Loader

Application

(3)

ブート・ステージ

リセット

リセットはブート・ステージ前に実行され、デバイス初期化における重要な手順となります。リ セットには、コールド・リセットとウォーム・リセットの 2 種類のリセット方法があります。 SoC の FPGA 部分は、コンフィギュレーション完了時にウォーム・リセットあるいはコールド・ リセットをトリガすることが可能です。

ブート・プロセスは、MPU 内の CPU0 がリセット状態を終了すると開始します。CPU0 がリセ ットを終了する際、ブート ROM が配置されているリセット例外アドレスでコードの実行を開始 します。CPU1 はこの間リセット状態を維持し、後にユーザ・ソフトウェアによってリセットか ら脱け出します。 ウォーム・リセットでは、一部のソフトウェア・レジスタは保存され、ソフトウェアの設定によ ってはブート・プロセスはいくつかの手順を飛ばして進みます。これに加え、ウォーム・リセッ トでは第 2 ステージ・ブートローダはオンチップ RAM からの実行が可能です。 関連情報 • Reset Manager

ソフトウェア・リセットの詳細については、Arria 10 Hard Processor System Technical Reference

Manual の「Reset Manager」の章を参照してください。

Arria 10 Core Fabric and General Purpose I/Os Handbook

FPGA のコンフィギュレーションおよびリセットについての詳細情報です。

第 1 ステージ:ブート ROM

ブート ROM コードのサイズは 64 kB で、アドレス 0xFFFD0000 から 0xFFFDFFFF のオンチップ ROM に位置しています。ブート ROM コードの役割は、ブート・ソースの決定、リセット後の HPS の初期化、プリローダへのジャンプです。第 2 ステージ・ブートローダ・イメージが既にフ ラッシュ・メモリからオンチップ RAM へロードされている場合、ブート ROM はオンチップ RAM ロケーションへジャンプします。ブート ROM は HPS を初期化する際、以下の動作を実行 します。 • CPU0 の NEON ベクタ・ユニット、命令キャッシュ、分岐予測、浮動小数点をイネーブルし ます。 • level 4(L4)watchdog 0 タイマを設定します。 • Boot Select(BSEL)設置をもとに専用ピンをコンフィギュレーションします。 • フラッシュ・コントローラをデフォルト設定に初期化します。 フラッシュ・メモリからボンディングを行う際、ブート ROM コードはオンチップ RAM の上部 32 B をデータ・ワークスペースとして使用します。このエリアはリセット後、ブート ROM コー ドが第 2 ステージ・ブートローダにソフトウェア・コントロールを移譲するまで、ブート ROM コード用に予約されます。第 2 ステージ・ブートローダの最大サイズは、認証化を行う場合であ れば 208 KB で、認証化を行わない場合 224 KB となります。RAM からのウォーム・ブートある いは FPGA からのブートの場合、ブート ROM コードはオンチップ RAM の上部 32 KB を保存し ません。また、ユーザはブート ROM によって上書きされることなく、このエリアにユーザ・デ ータを配置することができます。 注意: ブート ROM は、使用するオンチップ RAM の 32 KB 内の部分のみを初期化します。オン チップ RAM 内で第 2 ステージ・ブートローダが ECC を必要とする場合は、コールド・リ UG-1171 2015.10.30 ブート・ステージ 3

(4)

セットですべての RAM をクリアするセキュリティ・ヒューズをイネーブルします。セキ ュリティ・ヒューズの詳細については、Arria 10 Hard Processor System Technical Reference

Manual の SoC Security の章を参照してください。

ブート・プロセスは、CPU0 がリセット状態を終了すると開始します。ブート ROM コードは CPU0 でのみ実行されます。CPU1 はユーザ・ソフトウェアによってリリースされるまでリセッ ト状態を維持します。CPU0 がリセットを完了すると、リセット例外アドレスでコードの実行を 開始します。 ブート ROM 実行中、クロック・コントロール・ヒューズの情報はクロック・マネージャに、そ してメモリ・コントロール・ヒューズの情報はリセット・マネージャにそれぞれ自動で送信さ れ、その他のヒューズ機能(認証、暗号化、プライベートおよびパブリック・キー・ソース、ハ ッシュ関数) は、ブート・コードがリードできるようにメモリ・マップされた箇所に格納され ます。通常の動作では、ブート ROM はリセット例外アドレスにマップされるため、コードはブ ート ROM 内で実行を開始します。

CPU0 がブート ROM コードを完了し、ユーザ・ソフトウェアの実行を開始する際、ブート ROM アクセスはディセーブルされます。CPU0 で実行するユーザ・ソフトウェアは、ユーザ・ソフト ウェア例外ベクタを 0x0(これは以前ブート ROM 例外ベクタにマップされたものです)にマッ ピングする必要があり、また必要であれば CPU1 をリセットからリリースします。CPU1 がリセ ットからリリースされる際、CPU1 はブート ROM ではなくユーザ・ソフトウェア例外を実行し ます。 関連情報 SoC Security

セキュリティ・ヒューズについての詳細は、Arria 10 Hard Processor System Technical Reference

Manual の SoC Security の章を参照してください。

ブート ROM フロー

コールド・リセットでは、HPS ブート・プロセスは CPU0 がリセット(たとえば起動時)からリ リースされると開始し、リセット例外アドレス 0x00000000 で内部ブート ROM のコードを実行 します。 ブート ROM コードによって SoC はリセットから脱け出し、既知の状態となります。 ブート ROM コード完了後、コントロールは第 2 ステージ・ブートローダと呼ばれるブート・ソ フトウェアの次のステージへと移ります。第 2 ステージ・ブートローダはカスタム化が可能で、 通常は HPS 外部の不揮発性フラッシュ・ベースのメモリか FPGA 内のオンチップ RAM に保存さ れます。第 2 ステージ・ブートローダは、OS、ベアメタル・アプリケーションにロードするこ とが可能です。またはサード・パーティ製のブートローダにロードすることも可能です。 この項では、ブート ROM コードがソフトウェア・コントロールを第 2 ステージ・ブートローダ に渡すまでのリセットからのソフトウェア・フローについて説明します。 コードが開始するとシステムが初期化されますが、要求されるブートの種類によってはオンチッ プ RAM にコードのロードを試みることも可能です。ロードが成功すれば、第 2 ステージ・ブー トローダ・コードが実行されます。ブート ROM がコードの検索できない場合、あるいは 3 度連 続してロードに失敗した場合、スピンしウォッチドッグ・リセットを待ちます。 4 ブート ROM フロー 2015.10.30UG-1171

(5)

図 4: メイン・ブート ROM フロー

Initialize System

Reset

Boot Type

Jump to Code

FPGA Boot RAM Boot Error

Boot Code Valid?

Reserved Boot Flash Boot

High-Level

Boot FPGA Boot RAM Boot Reserved Boot

Spin Until Watchdog Reset Yes

No

ブート ROM は常に CPU0 で実行します。CPU1 はメイン・ブート ROM コードの実行中は常に リセットで保持され、システム・ソフトウェアによってのみリリースされます。 ブートの種類を判断する一環として、ブート ROM は下位レベルのブート・フローを実行しま す。ブート ROM コードは第 2 ステージ・ブートのソースが強制的に FPGA となるかどうかを判 断するためにセキュリティ・ヒューズを読み込みます。非認証の FPGA ブートあるいは非 CRC オンチップ RAM ブートが要求される場合やブートが無効の場合、ブートは下位レベルのブー ト・フロー内で処理されます。その他の種類のブートはすべて上位レベルのブート・フロー内で 処理されます。 UG-1171 2015.10.30 ブート ROM フロー 5

(6)

図 5: 下位レベルのブート・フロー

Read Current Security Status in Security Manager

Boot Not Valid

FPGA Boot? RAM Boot Valid?

Boot Required to boot

from FPGA?

Must Authenticate?

RAM Boot Allowed?

Enable FPGA Access

FPGA Boot

Read BSEL Pins

Boot Valid FPGA Boot Boot Not Valid FPGA Boot Boot Not Valid FPGA Boot?

RAM Boot Low-Level Boot

Read BSEL Pins

No No No No No No Yes Yes Yes Yes Yes Yes 下位レベル部分のブート ROM フローの間、FPGA のみのブートが必要であるかを判断するため にブート ROM はセキュリティ・ヒューズを読み込みます。この場合、ブート ROM は POF の認 証を示すヒューズが必要であるかも決定する必要があります。認証が必要でなければ、標準の FPGA コンフィギュレーションが実行されます。

FPGA のみのブートが必要とされない場合、ブート ROM はオンチップ RAM ブートが可能であ るかをチェックします。可能である場合、ブート ROM はコードが有効であるかを確認します。 コードが有効でなければ、ブート ROM は FPGA ブートを示しているかを決定するために BSEL ピンをリードします。

(7)

ブート・イメージに対し認証が必要であることをセキュア・ヒューズが示すのであれば、(C コ ードで実行される)上位レベルのブートを実行する必要があります。 図 6: 上位レベルのブート・フロー Global Initialization No Error

RAM Boot Valid?

Continue Boot Boot from FPGA & no Authenticate?

No Error

Initialize DMA

No Error ErrorError Valid Image? RAM Boot High-Level Boot Initialize Hardware No No No Yes Yes Yes

Load from flash

ブート・プロセス中、ブート・イメージで認証と復号を実行することが可能です。認証は復号か ら独立していますが、認証と復号の両方が必要とされるのであれば、必ず認証が先に実行されま す。認証ブートが必要な場合、ブート ROM には認証プロセスを開始するにあたってルート・キ ーが必要です。このキーはユーザ・ヒューズや FPGA ロジック・エレメントに実装したり、ある いは第 2 ステージ・ブート・イメージ・ヘッダの一部として実装したりすることが可能です。デ バイス・コンフィギュレーション・ヒューズはキーのソースを決定します。 UG-1171 2015.10.30 ブート ROM フロー 7

(8)

フラッシュ・メモリからのコールド・ブート中、ブート ROM コードはフラッシュ・メモリから オンチップ RAM への最初の第 2 ステージ・ブートローダ・イメージのロードを試み、コントロ ールを第 2 ステージ・ブートローダに渡します。この初期イメージが有効でない場合、ブート ROM コードはromcode_initswlastldレジスタにインデックスを付与し、次に格納されたイメー ジのロードを試みます。ブート ROM は最初のロードの後、3 回連続してロードを試みます。こ れらのロード後においても有効なイメージが検索されない場合、ブート ROM コードはフォール バック・イメージのためにデバイスの FPGA 部分をチェックします。 注意: ブート・プロセス中、ブート ROM はすべてのキャッシュ(L1 データおよび命令キャッシ ュと L2 キャッシュ)をイネーブルします。第 2 ステージ・ブートローダがブート・フラ ッシュ・デバイス(SD/MMC、QSPI、NAND)プロパティからロードされない場合、キャ ッシュはブート ROM がフォールバック・イメージのためにデバイスの FPGA 部分をチェ ックをする際、オンのままとなります。この状態は、コードをロードする際にコヒーレン シに関する問題の原因となるため、キャッシュはフォールバック・イメージ内でフラッシ ュされディセーブルされなければいけません。 ウォーム RAM ブートが成功しない、あるいはコールド・リセットが発生する場合は、ブート ROM はシステム・マネージャのbootinfoレジスタ内の BSEL 値を読み込みます。FPGA がブー

ト・ソースとして選択されているのであれば、ブート ROM コードは HPS-FPGA 間のブリッジの アドレス 0xC0000000 でコードの実行を試みます。FPGA が正しく初期化されず、ウォッチドッ グがタイムアウトに向けてイネーブルされない場合、エラー条件は生成されません。代わりに、 ブート ROM は FPGA が利用可能となるまで継続して待機します。 BSEL ビットが外部フラッシュからのブートを示すのであれば、ブート ROM コードはフラッシ ュ・デバイスからオンチップ RAM へのイメージのロード、検証と実行を試みます。BSEL が無 効であったり、ブート ROM コードが有効なイメージをフラッシュ内に見つけられない場合は、 ブート ROM コードは FPGA 内にフォールバックが存在するかどうかをチェックします。存在 する場合はブート ROM はそのフォールバック・イメージを実行し、存在しない場合はブート ROM はオンチップ RAM へ情報の事後分析ダンプを実行し、リセットを待ちます。 注意: 略語の BSEL と BOOTSEL は、ブート選択ピンを定義する場合同じ意味で用いられます。 ブート ROM コードは破損したイメージが実行されることがないよう、いくつかの方法で第 2 ス テージ・ブートローダを検証します。最初はイメージ・ヘッダを検証しますが、これはブロック を保護するイメージの CRC、マジック・ナンバー、バージョン、ブロック長を特定します。い ずれかが無効であれば、エラーが発生します。

第 2 ステージ:ブートローダ(U-Boot)

注意: この項では、U-Boot の機能に関する情報を提供します。UEFI ブートローダの機能につい ての情報は、 アルテラ® ウィキ・ページのテクニカル・リファレンス資料を参照してくだ さい。 第 2 ステージ・ブートローダの機能は、ユーザによって定義されます。アルテラが提供する第 2 ステージ・ブートローダは、初期化、コンフィギュレーション、U-Boot コードが組み合わされ たもので、以下の機能が含まれます。 • SD/MMC コントローラ・ドライバ • QSPI コントローラ・ドライバ • プロトコルをサポートするイーサネット・ドライバ 8 第 2 ステージ:ブートローダ(U-Boot) 2015.10.30UG-1171

(9)

• キャッシュ・メモリ・ドライバ

• UART、タイマ、およびウォッチドッグ・ドライバ • FAT ファイル・システム・サポート

• Flat Image Tree(FIT)イメージ処理

• 基本的かつ不可欠なデバッグ・コマンドを含む U-Boot コンソール・サポート • 暗号ライブラリ • U-Boot デバイス・ツリー処理ライブラリ • システムおよびメモリ・ファイアウォール・コンフィギュレーション • ソフトウェアの次のステージをロードするインタフェースに向けた初期化コード セキュア・ブートが必要な場合、セキュリティのレベルを上げ、必要であれば次のブート・イメ ージの認証と復号を開始するには第 2 ステージ・ブートローダを使用することができます。 SDRAM ファイアウォールをコンフィギュレーションすると、第 2 ステージ・ブートローダがブ ート・ソフトウェアの次のステージを SDRAM へロードすることが可能となります。オンチップ RAM に収まる第 2 ステージ・ブートローダの最大レングスは、認証がある場合は 208 KB、認証 がない場合は 224 KB です。一般的な次のソフトウェア・ステージは、アプリケーション OS ソ フトウェアのロードです。第 2 ステージ・ブートローダは、使用可能などのデバイスからも HPS へ次のステージ・ブート・ソフトウェアをロードすることが可能です。一般的なソースには、第 2 ステージ・ブートローダ、別のフラッシュ・デバイス、あるいは EMAC などの通信インタフェ ースを含む同じフラッシュ・デバイスが含まれます。 第 2 ステージ・ブートローダを認証化する必要が有る場合、第 2 ステージ・ブートローダはパブ リック・キーを格納する必要があります。以下の図は、セキュア、認証ブート中にブート ROM に尿時される第 2 ステージ・ブートローダ・イメージを表しています。 UG-1171 2015.10.30 第 2 ステージ:ブートローダ(U-Boot) 9

(10)

図 7: 第 2 ステージ・ブートローダ・イメージの上位レベルの図

Boot ROM Header CRC

Boot ROM Authentication Header

Boot ROM Standard Header

Second-Stage Boot Loader Binary

Keys to Authenticate/Decrypt Next Stage

Clock Configuration

Pin Configuration

Memory Configuration

Second-Stage Boot Loader DTB

関連情報

Altera Wiki Site

UEFI に関する説明およテクニカル・リファレンスについてはこのサイトを参照してください。

外部ブート・フロー

The second stage boot loader has the capability of supporting the following types of boot: • Non-secure clear text boot

• Secure boot with:

• Authentication only (also called verified boot) • Decryption only

• Authentication and decryption 一般的なブート・フロー(非セキュア)

非セキュアの第 2 ステージ・ブート・プロセスは通常、以下の図に示すフローに従います。

(11)

図 8: 一般的な第 2 ステージ・ブートローダのフロー(非セキュア)

Second-Stage Boot Loader Entry Low-Level Initialization Assert Reset to Affected Peripherals/ Components during PLL Reconfiguration

Clock Reconfiguration Configure Dedicated HPS I/O

Configure Pin Multiplexing through the System Manager Reset Deassertion through the

Reset Manager System Interconnect Configuration

Timer & UART Initialization SDRAM Interface Initialization (Include

Calibration & PLL Configuration)

Success? yes

no

Next Stage Boot Device Initialization Checking Boot Image’s Checksum

(Optional) Checksum Passed?

yes no

Copy the Next Stage Boot Image from the Next Stage Boot Device to the SDRAM

Write Magic Value to the Initial Software State Register

Error Handler Pass Control to Next Boot

Stage Software in SDRAM Configure Shared HPS I/O & Hard Memory

Controller I/O Using Full or Early Release FPGA Configuration Flow

FPGA Fabric and I/O Configured Thru FPGA? no yes 下位レベルの初期化のステップには、L4 ウォッチドッグ 0 タイマのリコンフィギュレーション とディセーブル、命令キャッシュと分岐予測の無効化、最下位メモリ領域へのオンチップ RAM の再マッピング、およびデータ・エリアの設定が含まれます。 第 2 ステージ・ブートローダに進むと、L4 ウォッチドッグ 0 タイマがアクティブとなります。 第 2 ステージ・ブートローダは、このウォッチドッグ・タイマをディセーブル、リコンフィギュ レーションすることや、あるいは変更させない状態にしておくことが可能です。リセット後にイ ネーブルされると、ウォッチドッグ・タイマをディセーブルすることは不可能で、停止あるいは リセットのみ選択可能です。 ブート ROM コードによってこれより前にイネーブルされていた命令キャッシュと分岐予測を 無効化する必要があります。第 2 ステージ・ブートローダがデータ・キャッシュをイネーブルし 使用する場合、イネーブルを行う前に全レベルのデータ・キャッシュを初期化する必要がありま す。 例外ベクタが依然ブート ROM 内で例外ハンドラに向けられているため、第 2 ステージ・ブート ローダは実行開始時に例外ベクタ・テーブルを再マップする必要があります。システム・インタ コネクトをビット 0 から 1 に再マップするよう設定することで、オンチップ RAM はメモリ・マ UG-1171 2015.10.30 一般的なブート・フロー(非セキュア) 11

(12)

ップの最下位領域を反映します。この再マップ実行は、例外ベクタはブートローダ・イメージ内 で例外ハンドラを使用します。 次の図は、再マップ実行前と実行後のメモリ・マップを表しています。 図 9: オンチップ RAM の再マップ

On-Chip RAM

...

On-Chip ROM

...

SDRAM

Unused

On-Chip ROM

0xFFFF_FFFF

0xFFE0_0000

0xFFFD_FFFF

0xFFFC_0000

0xBFFF_FFFF

0x0010_0000

0x0002_0000

Boot ROM

Before

On-Chip RAM

...

On-Chip ROM

...

SDRAM

Unused

On-Chip RAM

0xFFFF_FFFF

0xFFE0_0000

0xFFFD_FFFF

0xFFFC_0000

0xBFFF_FFFF

0x0010_0000

0x0004_0000

Second-Stage

Boot Loader

After

0x0000_0000

0x0000_0000

第 2 ステージ・ブートローダは、すべての HPS クロックをリコンフィギュレーションすること が可能です。クロックのリコンフィギュレーション中、ブートローダはクロックの変更に影響を 受ける HPS のペリフェラルにリセットを挿入します。 HPS の I/O アサインメントは、第 2 ステージ・ブートローダで IOCSR コンフィギュレーション の一部としてコンフィギュレーションされます。I/O アサインメントを含むビットストリーム は効率的に第 2 ステージ・ブートローダ内で初期化コードの一部としてデバイスへ送信されま す。FPGA を介して FPGA ファブリックと I/O がコンフィギュレーションされていない場合、 HPS は SDRAM にアクセスする必要があり、共有およびハード・メモリ・コントローラ I/O をコ ンフィギュレーションするために、フルあるいは早期 I/O リリース・コンフィギュレーション手 法を使用するよう HPS をプログラムすべきです。フルあるいは早期 I/O リリース・コンフィギ ュレーションについての詳細は、Arria 10 Hard Processor System Technical Reference Manual の付録 「Booting and Configuration」の項「FPGA Configuration」を参照してください。

第 2 ステージ・ブートローダは、ミラー・イメージ内のブート・イメージ検証データとチェック サムを検査することで次のステージのブート・デバイス内で有効な次のステージのブート・イメ ージを検索します。検証後、第 2 ステージ・ブートローダは次のステージのブート・デバイスか ら SDRAM へ次のステージのブート・イメージ(OS あるいはアプリケーション・イメージ)を コピーします。 ソフトウェアがコントロールを次のステージのブート・ソフトウェアに渡す前、第 2 ステージ・ ブートローダはシステム・マネージャのromcode_initswstateレジスタに有効な値 (0x49535756)をライトすることができます。この値は、オンチップ RAM 内に有効なブート・イ メージが存在することを表します。romcode_initiswlastldレジスタは、ブート・デバイスから ブート ROM によってロードされた最後の第 2 ステージ・ブートローダ・ソフトウェア・イメー ジを保持します。ウォーム・リセット発生時、BSEL の値が最後のブートと等しい場合、ブート ROM はromcode_initswlastldレジスタによって示されるイメージをロードします。 12 一般的なブート・フロー(非セキュア) 2015.10.30UG-1171

(13)

関連情報

Booting and Configuration Appendix

フラッシュのコンフィギュレーションについての詳細は、Arria 10 Hard Processor System Technical

Reference Manual の Booting and Configuration Appendix を参照してください。

セキュア・ブート・フロー セキュア・ブートの重要な目的は、信頼のチェーン(chain of trust)を後続するブート・ソフト ウェアに渡すことにあります。セキュア・ブート中、第 2 ステージ・ブートローダはセキュリテ ィ・マネージャのカレント・ステート・レジスタによっては後続するブート・イメージの認証や 復号が可能です。加えて、第 2 ステージ・ブートローダは、後続するブート・イメージがオンチ ップ RAM のようなセキュア・メモリから実行されることを確実にする必要があります。第 2 ス テージ・ブートローダは以下の図のように信頼のチェーンに収まります。 図 10: セキュア・ブート・フロー

Boot ROM (on-chip ROM)

Second-Stage Boot Loader (on-chip RAM)

Secure Micro-OS/ Application (on-chip RAM)

Standard OS (SDRAM) Through Secure API

Secure World

Normal World

Chain of Trust

Authenticate and/or Decrypt

Authenticate and/or Decrypt

マイクロ OS は、ノーマル・ワールドの OS でアプリケーションが Trusted Service を確立するこ とを可能とするセキュア API を提供します。 ベリファイド・ブート中、第 2 ステージ・ブートローダは OS イメージおよび OS が必要とする イメージのみを認証します。以下にベリファイド・ブートのフローを示します。 UG-1171 2015.10.30 セキュア・ブート・フロー 13

(14)

図 11: ベリファイド(認証)ブート・フロー

Boot ROM (on-chip ROM)

Second-Stage Boot Loader (on-chip RAM)

OS Image (SDRAM)

zImage

Authenticate Only

Device Tree Blob Filesystem Other

Dotted lines represent files within OS Image

セキュア・ブートとベリファイド・フローの両方のフローでは、第 2 ステージ・ブートローダが オンチップ RAM から実行している間にオンチップ RAM で後続するブート・イメージが実行さ れる必要があります。この要件に適合するためには、選択するセキュア・ブートの種類にもより ますが、認証および復号プロセスは以下の 3 つの図にあるステップに従わなければならない場合 があります。 14 セキュア・ブート・フロー 2015.10.30UG-1171

(15)

図 12: 第 2 ステージ・ブートローダの認証プロセス

On-chip RAM SDRAM

Second-Stage Boot Loader

(loaded by boot ROM) FIT Image which contains the securemicro OS/application

FIT Image which contains the secure micro OS/application 1. フラッシュからSDRAMへ FITイメージをロードします 3. ブートローダはオンチップRAMの 最後に折りたたまれ、コピー機能と SHA機能のみが保持されます

Collapsed Second-Stage Boot Loader

2. イメージを認証し ハッシュ値を保存します 4. 第2ステージ・ブートローダはセキュア・マイクロ O/SアプリケーションをオンチップRAMへコピーし、 SHAとマッチングすることでそれを検証します。 マッチする場合、コントロールは マイクロO/Sアプリケーションへ移譲されます。

Copy Function SHA Function

5. セキュア・マイクロO/Sアプリ ケーションはすべてのオンチップ RAMを消費することが可能です。 UG-1171

(16)

図 13: 第 2 ステージ・ブートローダの復号プロセス

On-chip RAM SDRAM

Second-Stage Boot Loader

(loaded by boot ROM) FIT Image which contains the securemicro OS/application

FIT Image which contains the secure micro OS/application 1. フラッシュからSDRAMへ FITイメージをロードします 2. ブートローダはオンチップRAMの 最後に折りたたまれ、 DMA機能のみが保持されます

Collapsed Second-Stage Boot Loader

4. 第2ステージ・ブートローダは 復号が完了するまでポーリング します。そしてコントロールは セキュア・マイクロO/S アプリケーションに移譲されます DMA Function 5. セキュア・マイクロO/Sアプリ ケーションはすべてのオンチップ RAMを消費することが可能です。 3. 第2ステージ・ブートローダは、 CSS DMAを介して復号を開始します

DMA and FPGA CSS Engine

復号はオプションであり、セキュア・ブートには必須ではありません。第 2 ステージ・ブートロ ーダのエントリで、CSS エンジンがイネーブルされます。第 2 ステージ・ブートローダが後続の ブート・イメージを復号し、抜け出る際に CSS エンジンをディセーブルします。

(17)

図 14: 第 2 ステージ・ブートローダの認証と復号のプロセス

On-chip RAM SDRAM

Second-Stage Boot Loader

(loaded by boot ROM) FIT Image which contains the securemicro OS/application

FIT Image which contains the secure micro OS/application 1. フラッシュからSDRAMへ FITイメージをロードします 3. ブートローダはオンチップRAMの 最後に折りたたまれ、コピー機能、 SHA機能、DMA機能のみが保持されます

Collapsed Second-Stage Boot Loader

6. 第2ステージ・ブートローダは 復号が完了するまでポーリング します。 そしてコントロールは セキュア・マイクロO/Sに移譲 されます DMA Function 4. 第2ステージ・ブートローダは セキュア・マイクロO/S アプリケーションをオンチップRAMへ コピーし、SHAとマッチさせることで 検証します 5. 第2ステージ・ブートローダは、 CSS DMAを介して復号プロセスを 開始します

DMA and FPGA CSS Engine

2. イメージを認証し ハッシュ値を保存します Copy Function SHA Function 7. セキュア・マイクロO/Sアプリ ケーションはすべてのオンチップ メモリを消費することが可能です。 UG-1171 2015.10.30 セキュア・ブート・フロー 17

(18)

ブート・デバイス

ブート選択

ブート選択(BSEL)ピンは、第 2 ステージ・ブート・イメージを取得するにあたって複数の方 法を提供します。コールド・リセットでは、ブート・ソースはセキュア・ブートヒューズと BSEL ピントの組み合わせによって決定されます。このようなヒューズの値と BSEL ピンの値は、コー ルド・リセットが開始されると HPS のセキュリティ・マネージャ・モジュールへ送信されます。 HPS がリセットからリリースされる際、ブート ROM はシステム・マネージャのbootinfoレジ スタをリードし、ブートのソースを決定します。 注意: 注意: FPGA からのブート(BSEL[2:0]=0x1)が必要な場合は、FPGA のプログラムが完全に終了 するまで HPS がリセットからリリースされないことを確認する必要があります。これを 怠ると、ブート・ソースを決定するためのbootinfoレジスタが、ブート ROM によって 不正確にリードされる恐れがあります。FPGA の準備が整っているかどうかは、FPGA か ら HPS へのハンドシェイク信号であるf2h_boot_from_fpga_readyと f2h_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 内でイメージを検索し、それを実行す 18 ブート・デバイス 2015.10.30UG-1171

(19)

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 ステージ・ブートローダへ渡します。

ブートに向けたフラッシュ・メモリ・デバイス

ブートローダ・イメージを含むメモリ・コントローラおよびデバイスには、フラッシュから正し くブートを実行するためのコンフィギュレーション要件があります。 すべてのフラッシュ・デバイスには、最大 4 個の第 2 ステージ・ブートローダ・イメージを含む ブート・エリアと呼ばれるメモリ領域が存在します。QSPI および SD/MMC デバイスの場合、ブ ート・エリアのサイズは 1 MB です。NAND デバイスの場合、ブート・エリアのサイズは 4 デバ イス・ブロックですが、NAND 消去ブリックが 256 Kb よりも大きければ 1 MB より大きくなり ます。

SD/MMC、Quad SPI、および NAND フラッシュ・デバイスはすべて、Raw モードと MBR(パー ティション)モードをサポートします。Raw モードでは、ブート・イメージはフラッシュ・メモ リ・デバイスの開始のオフセット 0x0 に配置されます。MBR モードでは、以下となります。 • ブート・イメージはカスタム・パーティション(0xA2)からリードされます • 最初のイメージはパーティションの最初であるオフセット 0x0 に配置されます • 開始アドレス = パーティション開始アドレス

Quad SPI

フラッシュ・メモリ

次の図は、Quad SPI フラッシュ・イメージ・レイアウトを表しています。第 2 ステージ・ブー トローダ・イメージは常に 256 KB の倍数であるオフセットに配置されます。 UG-1171 2015.10.30 ブートに向けたフラッシュ・メモリ・デバイス 19

(20)

図 15: Quad SPI フラッシュ・イメージ・レイアウト

Second-Stage Boot Loader Image 3

Second-Stage Boot Loader Image 2

Second-Stage Boot Loader Image 1

Second-Stage Boot Loader Image 0

Multiple of 256 KB

0x0

ブート ROM コードは、サポートされる SPI あるいは Quad SPI フラッシュ・メモリに向けて Quad SPI コントローラをデフォルト設定にコンフィギュレーションします。

関連情報

フラッシュ・メモリ・デバイス

フラッシュ・メモリ・デバイスに向けたデフォルト設定および CSEL ピンの設定についての詳細 は、Arria 10 Hard Processor System Technical Reference Manual の Booting and Configuration Appendix を参照してください。

SD/MMC

フラッシュ・デバイス

次の図は、ブートに向けた SD/MMC フラッシュ・イメージ・レイアウトの例です。マスタ・ブ ート・レコード(MBR)はメモリの最初の 512 バイトに位置しています。MBR には、パーティ ションについての情報(パーティションのアドレスとサイズ)が含まれます。第 2 ステージ・ブ ートローダ・イメージはパーティション A2 に格納されます。パーティション A2 は、ファイル・ システムを持たないカスタム Raw パーティションです。 図 16: SD/MMC フラッシュ・イメージ・レイアウト

...

Second-Stage Boot Loader Image 3

Partition Type: A2

Partition Size: 256 KB x 4

Master Boot Record (MBR)

0x0

MBR Partition Size: 512 Bytes

Second-Stage Boot Loader Image 2

Second-Stage Boot Loader Image 1

Second-Stage Boot Loader Image 0

SD/MMC コントローラは 2 つのブート・モードをサポートします。

(21)

• MBR(パーティション)モード • ブート・イメージはカスタム・パーティション(0xA2)からリードされます • 最初のイメージはパーティションの最初であるオフセット 0x0 に配置されます • 開始アドレス = パーティション開始アドレス • Raw モード • MBR シグネチャーが検索されない場合、SD/MMC ドライバはそれを Raw モードであると 仮定します • ブート・イメージ・データはユーザ・エリアのセクタから直接リードされ、SD/MMC の最 初のセクタに配置されます • 最初のイメージはメモリ・カードの開始であるオフセット 0x0 に配置されます • 開始アドレス = 0x0 MBR にはパーティション・テーブルが含まれますが、これは 512 バイトのメモリ・サイズで常 に最初のセクタ(LBA0)に配置されます。MBR は実行可能コード、4 つのパーティション・エ ントリ、そして MBR シグネチャーで構成されます。MBR は FDISK プログラムといった特別な ツールによって作成可能です。 表 2: MBR ストラクチャ オフセット サイズ(バイト) 説明 0x000 446 コード・エリア 0x1BE 16 パーティション 1 へのパーテ ィション・エントリ 0x1CE 16 パーティション 2 へのパーテ ィション・エントリ 0x1DE 16 パーティション 3 へのパーテ ィション・エントリ 0x1EE 16 パーティション 4 へのパーテ ィション・エントリ 0x1FE 2 MBR シグネチャー:0xAA55 標準的な MBR には、16 バイトのエントリを 4 個備えたパーティションが 1 個含まれます。この ため、この標準的なテーブルを使用するメモリカードは 4 個を超えるプライマリ・パーティショ ンあるいは 3 個のパーティションと 1 個の拡張パーティションを含めることはできません。 各パーティション・タイプはパーティション・エントリによって定義されます。ブート・イメー ジはカスタム・パーティション・タイプ(0xA2)を持つプライマリ・パーティション内に格納 されます。SD/MMC フラッシュ・ドライバはファイル・システムをサポートしていないため、 ブート・イメージは固定位置のパーティション A2 に配置されます。 UG-1171 2015.10.30 SD/MMCフラッシュ・デバイス 21

(22)

表 3: パーティション・エントリ オフセット サイズ(バイト) 説明 0x0 1 ブート・インディケータ。 0x80 はブート可能であること を表します。 0x1 3 CHS 値の開始 0x4 1 パーティション・タイプ 0x5 3 CHS 値の終了 0x8 4 パーティション内の最初のセ クションの LBA 0xB 4 パーティション内のセクタ数 ブート ROM コードは、サポートされる SD/MMC フラッシュ・メモリに向けて SD/MMC コント ローラをデフォルト設定にコンフィギュレーションします。 関連情報 フラッシュ・メモリ・デバイス フラッシュ・メモリ・デバイスに向けたデフォルト設定および CSEL ピンの設定についての詳細 は、Arria 10 Hard Processor System Technical Reference Manual の Booting and Configuration Appendix を参照してください。

NAND

フラッシュ・デバイス

NAND サブシステムは、NAND デバイスで少なくとも最初の 1 MB を予約します。NAND フラ ッシュ・デバイスに 256 KB を超えるブロックが存在する場合、NAND サブシステムはデバイス の最初のブロック 4 個を予約します。256 KB より小さいサイズのブロックを持つ NAND デバ イスでは、第 2 ステージ・ブートローダ・イメージは複数のブロックに配置する必要がありま す。NAND サブシステムは、NAND デバイスで最大 4 個の第 2 ステージ・ブートローダを検索 することが予想されます。必要であれば 4 個より少ないイメージを持たせることも可能です。 第 2 ステージ・ブートローダ・イメージは、必ず物理ページの最初に位置すべきです。ブロック は消去動作に使用される最小エリアであるため、特定のイメージに更新を行っても他のイメージ に影響することはありません。 22 NANDフラッシュ・デバイス 2015.10.30UG-1171

(23)

図 17: 256 KB メモリ・ブロック向け NAND フラッシュ・イメージ・レイアウト

Second-Stage Boot Loader Image 3

Second-Stage Boot Loader Image 2

Second-Stage Boot Loader Image 1

Second-Stage Boot Loader Image 0 0x00000 0x40000 0x80000 0xC0000 0xFFFFF ブートローダ・イメージ に使用可能な各ブロック のサイズは256KBです 関連情報 フラッシュ・メモリ・デバイス フラッシュ・メモリ・デバイスに向けたデフォルト設定および CSEL ピンの設定についての詳細 は、Arria 10 Hard Processor System Technical Reference Manual の Booting and Configuration Appendix を参照してください。

FPGA

からのブート

次の図では、FPGA は非 HPS コンフィギュレーション・ソースのいずれかを介し最初にコンフ ィギュレーションされます。CSS ブロックは FPGA ファブリック、FPGA I/O、共有 I/O、および ハード・メモリ・コントローラ I/O をコンフィギュレーションします。HPS は第 2 ステージ・ブ ートローダを FPGA から実行します。この場合、FPGA の電源がオンになりプログラムされるま で、HSP をリセットからリリースしないでください。FPGA がユーザ・モードとなり、リセット からリリースされた後、ブート ROM コードは実行を開始します。HPS ブート ROM コードは、 HPS-FPGA 間ブリッジを介し FPGA ファブリックから第 2 ステージ・ブートローダを実行しま す。 UG-1171 2015.10.30 FPGAからのブート 23

(24)

図 18: FPGA からのブート・フロー HPS D edic at ed I/O

FPGA

FPGA

Fabric

FPGA I/O Shared I/O

Hard Memory Controller I/O CSS

Boot

ROM

HPS-to-FPGA

Bridge

MPU

HPS

Boot &

Configuration

Sources

PCIe

Passive

Serial

Passive

Parallel

Active Serial/

Active Serial x4

JTAG

24 FPGAからのブート 2015.10.30UG-1171

(25)

第 2 ステージ・ブートローダのサポート・パッケージ生成ツール

SoC エンベデッド・デザイン・スイート(SoC EDS)には、FPGA デザインに向けてブートロー ダの生成を可能とする第 2 ステージ・ブートローダのサポート・パッケージ(BSP)生成ツール が含まれています。次の項で、ブート生成フローと BSP エディタ・ツールについて解説します。

ブートローダの生成とフロー

ブートローダの生成には、最終的なブート可能なイメージの作成までにいくつかのステップが含 まれます。 各ステップは、以前のステップから独立しています。以下の独立したステップに必要な情報を生 成するには、関連する アルテラ コンプリート・デザイン・スイート(ACDS)あるいは SoC EDS ツールを使用します。ステップおよび使用するツールについては以下の表を参照してください。 表 4: ブートローダの生成ステージとフロー ステップ 必要なツール ステップ 1:FPGA デザインのコンパ イル Quartus ® Prime ステップ 2:ハードウェアのハード・ プロセッサ・システム(HPS)ハンド オフ・ファイルの特定 Quartus Prime ステップ 3:ブートローダ・ソースの 生成とビルド SoC EDS ツール・チェインおよび BSP エディタ 次の図は、U-Boot を使用したブートローダの完全な生成フローを表しています。 注意: UEFI ブートローダに対しては、これに類似したフローを使用することができます。詳細 は「付録 B:UEFI ブートローダのビルド」の項を参照してください。 UG-1171 2015.10.30 第 2 ステージ・ブートローダのサポート・パッケージ生成ツール 25

(26)

図 19: Arria 10 ブートローダ生成フロー

SD Card U-Boot Binary & U-Boot Device Tree

Image

U-Boot Device Tree make

U-Boot Source U-Boot Makefile BSP Editor User Options Handoff Folder (XML Files) Quartus II SOF Quartus CPF Core RBF Peripheral RBF Hardware Design

Part of SoC EDS Part of ACDS Legend

関連情報

• 41 ページの付録 B:UEFI ブートローダのビルド

Altera SoC Embedded Design Suite User Guide

BSP ツールについての詳細は、Altera SoC Embedded Design Suite User Guide を参照してくださ い。

ステップ 1:FPGA デザインのコンパイル

ステップ 1 の詳細:FPGA デザインのコンパイルについては、GSRD User Manual を参照してくだ さい。 関連情報 GSRD User Manual

ステップ 2:ハードウェア・ハンドオフ・ファイル

ブートローダを生成する前に、HPS ハンドオフ・ファイルが必要です。ハンドオフ・ファイル は、「ステップ 1:FPGA デザインのコンパイル」で作成され、hps_isw_handoffフォルダ内に保 存されます。 HPS ハンドオフ・ファイルには、(XML として) FPGA ハードウェア・デザイン情が含まれ、正 しい FPGA ハードウェアの初期化とランタイム・アクセスに向けて必要なブートローダ・デバイ ス・ツリーの生成に使用されます。 関連情報 • Clock Select

詳細については、Arria 10 Hard Processor System Technical Reference Manual の Booting and Configuration Appendix に記載された「Clock Selects」の項を参照してください。 • I/O Configuration

(27)

ステップ 3:ブート・ローダ・ソースの生成

ブート生成フロー内のこのステップは、「QSPI ブート・デバイスを使用したブートローダの生 成」の項で一例として説明されています。 関連情報 30 ページのQSPI ブート・デバイスを使用したブートローダの生成

ブートローダ生成ツール:BSP エディタ

BSP エディタ・ツールは、ブートローダ・イメージのコンフィギュレーションと生成にあたって ガイド・オプションを提供します。BSP エディタ・ツールは、settings.bspファイルに保存され ている BSP コンフィギュレーション設定を変更することで既存の生成済みブートローダの編集 にも使用することができます。以下は、BSP エディタのメイン・インタフェースです。 図 20: BSP エディタ このツールでは、以下の選択が含まれるコンフィギュレーション・オプションが利用可能です。 UG-1171 2015.10.30 ステップ 3:ブート・ローダ・ソースの生成 27

(28)

• 関連する HPS ハンドオフ・ファイル

• ターゲット OS(U-Boot と UEFI ブートの両方が U-Boot OS セレクションnを使用します) 注意: U-Boot は本ユーザーガイドで詳しく解説していますが、第 2 ステージ・ブートローダ・ ソースとして UEFI を使用する方法についても紹介しています。詳細は、「付録 B:UEFI ブートローダのビルド」を参照してください。 • ブートローダの位置 • ソースおよびコンフィギュレーションの設定(BSP 設定) これらのオプションは、新しくブートローダのコンフィギュレーションを作成する場合も、既存 のブートローダのコンフィギュレーションを編集する場合も選択可能です。次の図は、新規にブ ートローダを生成する際の設定画面を表しています。 図 21: 新規にブートローダを生成する際の BSP 設定 新規に BSP を作成する場合や既存の BSP を編集する場合、BSP エディタでは以下の選択が可能 です。

• Preloader settings directory:HW HPS ハンドオフ・ファイルの位置

• Operating system:ターゲット・プラットフォーム・ブートローダ(U-Boot または UEFI) • Version:ターゲット・プラットフォーム・ブートローダのバージョン(デフォルトまたは推奨

を使用)

• BSP target directory:生成された BSP の位置 • BSP Settings File name:BSP 設定ファイルの位置

• Enable Additional Tcl Script:追加のカスタム設定への Tcl スクリプトを含める • Additional Tcl script:追加の Tcl スクリプトの位置

最初のコンフィギュレーション設定を入力した後、ブートローダ・ソース・デバイスの選択、プ ラットフォール・モデルの選択、FPGA コンフィギュレーション・ファイルに編集を加え、生成 後に自動でブートローダをビルドするかどうかを選択することができます。次の BSP エディタ

(29)

図 22: コンフィギュレーション例 以下は、この画面上で選択可能なコンフィギュレーションです。 • boot_device:生成されたブートローダに対しターゲット・ブート・デバイスを選択 • model:ターゲット SoC デバイス・プラットフォーム • peripheral_rbf_filename:ペリフェラル FPGA コンフィギュレーション・ファイル • core_rbf_filename:コア FPGA コンフィギュレーション・ファイル • disable_uboot_build:このオプションを選択すると、BSP はビルドされません(デフォルト) 注意: boot_device コンフィギュレーションは HPS Megawizard 内で選択し、この画面の boot_device プルダウンからは変更しないでください。 UG-1171 2015.10.30 ブートローダ生成ツール:BSP エディタ 29

(30)

QSPI

ブート・デバイスを使用したブートローダの生成

この項では、ブート可能なイメージの生成の手順を詳しく解説します。

前提条件

QSPI ブート・フラッシュを使用したブートローダの生成には、以下のツールが必要です。 • Arria 10 SoC 開発キット • QSPI ブート・フラッシュ・ドーターカード

• Arria 10 SoC と互換性を持つ U-boot および Linux ソース・コード

• QSPI からの Arria 10 SoC ブートをサポートする Quartus Prime バージョン

• QSPI ブートに向けて適切なピン・コンフィギュレーションを持つ FPGA デザイン

• ARM® DS-5 Development Studio バージョン 5.20.2 以降のバージョン、あるいは GNU デバッ グ・パッケージ

QSPI

を使用したブートローダの生成例

1. SoC EDS エンベデッド・コマンドシェルを起動します $ ~/altera/15.0/embedded/embedded_command_shell.sh 2. SoC EDS エンベデッド・コマンドシェルから BSP エディタ・ツールを起動します $ bsp-editor 3. File > New HPS BPS を選択し、画面上で新規に HPS BSP を作成した後、以下をコンフィギュ レーションします a. Preloader settings ディレクトリでハードウェア HPS ハンドオフ・フォルダを指定します b. Specify the boot loader sources folder in the BSP target directory テキスト・ボックスでブート

ローダ・ソース・フォルダを指定します

c. BSP Settings File name テキスト・ボックスでブートローダ・コンフィギュレーションおよ び設定ファイルを指定します

(31)

図 23: 新規の BSP エディタ画面の選択

UG-1171

(32)

図 24: 新規の BSP 設定のコンフィギュレーション

4. 各項目の設定完了後、OK をクリックし、main メニュー・タブでソース boot_device(QSPI) を指定します 注意: .rbfファイルは、SD/MMC からブートする場合にのみ適用されます。QSPI コンフィギ ュレーションでは、これらのテキスト・ボックスに変更を加える必要はありませんが、 その代わりに変換スクリプトを介してシングル.rbfファイルを作成する必要がありま す。 32 QSPIを使用したブートローダの生成例 2015.10.30UG-1171

(33)

図 25: BSP エディタ画面で QSPI デバイスからブートを選択する 5. Generate を選択すると、BSP ターゲット・ディレクトリとして指定したフォルダ内にブート ローダおよび U-Boot ソース・ファイルが作成されます 6. U-Boot ブートローダ・ソース・フォルダを移動し、イメージをビルドします $ cd ~/a10_soc_devkit_ghrd/software/arria10_uboot_bsp $ make 以下のアイテムが~/a10_soc_devkit_ghrd/software/arria10_uboot_bsp/フォルダ内に生成されま す。 表 5: ブートローダ実行可能イメージ ファイル 説明 u-boot_w_dtb.bin デバイス・ツリー・バイナリを持つ U-boot 実行可能ファ イル

uboot_w_dtb-mkpimage.bin mkpimage ヘッダを持つ U-boot 実行可能ファイル

注意: 第 2 ステージ・ブートローダ・ソースとして UEFI の使用を選択する場合は、この段階 で「付録 B:UEFI ブートローダのビルド」を参照してください。

UG-1171

(34)

7. QSPI からブートする場合、FPGA コア・ファブリック・コンフィギュレーションと I/O リン グ設定の両方を含むシングル.rbfファイルが必要です。これは、別の.rbfファイルが必要な SD/MMC ブートとは異なる要件です。エンベデッド・コマンドシェルで以下を入力すること で変換を実行することができます。 $ ~/altera/15.0/embedded/embedded_command_shell.sh $ cd ~/a10_soc_devkit_ghrd/

$ quartus_cpf -c -o bitstream_compression=on output_files/ghrd_10as066n2.sof output_files/ghrd_10as066n2.rbf このコマンドにより、FPGA ファブリックと I/O リング・コンフィギュレーションが組み合わ されたファイルがghrd_10as066n2.rbfという名称で~/a10_soc_devkit_ghrd/output_files/フォル ダに作成されます。 8. U-Boot ソフトウェアが FPGA イメージ・ファイルのロードが可能となる前に、長さや CRC と いったイメージの情報が必要です。このような情報は、エンベデッド・コマンドシェルより mkimage ツールを実行することで U-boot ツールへ渡されます。 $ ~/altera/15.0/embedded/embedded_command_shell.sh $ cd ~/a10_soc_devkit_ghrd/

$ mkimage -A arm -T firmware -C none -O u-boot -a 0 -e 0 -n "A10 GHRD RBF" -d output_files/ghrd_10as066n2.rbf output_files/ghrd_10as066n2.rbf.bin

このコマンドにより、U-Boot ヘッダにラップされた FPGA ファブリックと I/O リング・コン フィギュレーションが組み合わされたファイルが作成されます。生成されるファイルの名称 はghrd_10as066n2.rbf.binファイルで、~/a10_soc_devkit_ghrd/output_files/ghrd_

10as066n2.rbf.binフォルダ内に位置します。

9. HPS Flash Programmer は、U-Boot とデバイス・ツリーのイメージ、および.rbfファイルを QSPI ブート・カードへ書き込むために使用します。HPS Flash Programmer への入力ファイルには 常に.bin拡張子が必要です。ファイルにこの拡張子がない場合、ファイル名を変更する必要 があります。U-Boot とデバイス・ツリーのイメージを QSPI へ書き込むには、以下のコマン ドを入力します。 $ ~/altera/15.0/embedded/embedded_command_shell.sh $ quartus_hps -c 1 -o PV ~/a10_soc_devkit_ghrd/software/arria10_uboot_bsp/ uboot_w_dtb-mkpimage.bin このコマンドの完了には 2 分ほど要します。 10.QSPI へ.rbfファイルを書き込むには、以下のコマンドを入力します。 $ ~/altera/15.0/embedded/embedded_command_shell.sh $ quartus_hps -c 1 -o PV -a 0x720000 ~/a10_soc_devkit_ghrd/output_files/ ghrd_10as066n2.rbf.bin このコマンドの満了には 45 分ほど要します。アルテラは、現段階では HPS Flash Programmer を使用したプログラミングを推奨していますが、今後のアップデートでは、これらのステッ プを高速化を図るには U-Boot コンソールの使用を推奨します。 11.ボードに電力を供給します。QSPI からブートし、U-Boot コンソールで停止します。 関連情報 • 19 ページのQuad SPI フラッシュ・メモリ 34 QSPIを使用したブートローダの生成例 2015.10.30UG-1171

(35)

Altera SoC Embedded Design Suite User Guide 必要なソフトウェア開発タスクについての詳細情報です。 • RocketBoards Website

ブートおよび FPGA のコンフィギュレーション

ブート・プロセス中、第 2 ステージ・ブートローダを使用した FPGA のコンフィギュレーション が可能です。また、外部フラッシュ・デバイスといった非 HPS ソース、あるいは Quartus Prime ツールを使用して FPGA をコンフィギュレーションすることが可能です。 関連情報

Booting and Configuration Appendix

フラッシュのコンフィギュレーションについての詳細は、Arria 10 Hard Processor System Technical

Reference Manual の Booting and Configuration Appendix を参照してください。

ブートのデバッグ

この項では、ブート・プロセスのデバッグの一助となるテクニックをいくつか紹介しており、ブ ート ROM とブートローダに対しての配慮がなされています。残りのブート・フローは汎用であ り、一般的なテクニックでデバッグが可能です。

コールド・ブート・デバッグ

コールド・ブートはボードへの電源の再投入あるいは適用可能な場合にはコールド・リセットの 発行により開始されます。 機能時のブートに関連する問題には以下の共通する兆候があります。 • ハードウェアにアクティビティが見られない(例:LED が点滅していない) • ディスプレイ・コンソールにアクティビティが見られない(例:UART 出力や HPS ソフトウ ェアが実行されない) • ブート・ソフトウェアの実行が割り込みされ、フリーズしている ブート ROM はパワーアップあるいはコールド・ブート中に実行される最初のブート・ステージ ですが、ブートを確実に成功させるにはこの他にも検証を要するハードウェア依存が存在しま す。加えて、ロジック・アナライザやオシロスコープといった測定装置もブート・プロセス中に 信号の状態とレベルのチェックやアクティビティのモニタに使用可能です。ハードウェア・プラ ットフォームが安定しており、ブート・ソフトウェアの依存が仕様範囲内であることを検証する ことで、ブート ROM とブートローダが確実にロードおよび実行されます。 以下は、確実にブートを成功させるために確認すべき依存性のサンプルです。 • ボードの電源をチェックします。仕様の範囲内であり、過度のノイズが存在しないことを確 認します。 • 電源シーケンスが正しい順序であり、すべてのレベルが各ステージで仕様の範囲内であるこ とを確認します。 • 入力クロックは、その振幅、周波数、ノイズ、およびジッタを検証しておく必要があります。 • すべてのリセット信号がデザインの仕様およびレベルにシーケンスされていることを検証し ます。 UG-1171 2015.10.30 ブートおよび FPGA のコンフィギュレーション 35

図 2: ベアメタル・ブート・フロー
図 4: メイン・ブート ROM フロー
図 5: 下位レベルのブート・フロー
図 7: 第 2 ステージ・ブートローダ・イメージの上位レベルの図
+7

参照

関連したドキュメント

Windows Hell は、指紋または顔認証を使って Windows 10 デバイスにアクセスできる、よ

必要な情報をすぐ探せない ▶ 部品単位でのリンク参照が冊子横断で可能 二次利用、活用に制約がある ▶

「系統情報の公開」に関する留意事項

7-3.可搬型設備,消火設備 大湊側エリア 常設代替交流電源設備 使用可能・使用不可・不明 1 ガスタービン発電機 ガスタービン発電機用

重量( kg ) 入数(個) 許容荷重( kg ). 7

荒天の際に係留する場合は、1つのビットに 2 本(可能であれば 3

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google

 大都市の責務として、ゼロエミッション東京を実現するためには、使用するエネルギーを可能な限り最小化するととも