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

45
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 の使用も紹介 されています。詳細は、「付録 BUEFI ブートローダのビルド」を参照してください。 ブートローダの生成方法およびブート・ソース・デバイスに向けたコンフィギュレーション 方法 ブートローダのビルド方法 ブートローダのデバッグ ブート・メモリおよび SoC 開発プラットフォームに向けた技術的参照付録 関連情報 41 ページの付録 BUEFI ブートローダのビルド ブート・プロセス 一般的なブート・フロー 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, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. ISO 9001:2008 登録済 www.altera.com 101 Innovation Drive, San Jose, CA 95134

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

Page 1: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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 aretrademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified astrademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performanceof its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to anyproducts and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information,product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of devicespecifications before relying on any published information and before placing orders for products or services.

ISO9001:2008登録済

www.altera.com101 Innovation Drive, San Jose, CA 95134

Page 2: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

図 1: 一般的なブート・フロー

一般的なブート・フローにおける第 2ステージ・ブートローダは、U-Bootとなります。一般的なブート・フロー OSの例は、Linuxです。

Reset Boot ROM Second-StageBoot Loader

OperatingSystem Application

User Software

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

図 2: ベアメタル・ブート・フロー

Reset Boot ROM Second-StageBoot Loader

BareMetal

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

図 3: カスタム・ブートローダ・フロー

Reset Boot ROM Custom BootLoader

Application

2 ベアメタル・ブート・フローUG-1171

2015.10.30

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

フィードバック

Page 3: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

ブート・ステージ

リセットリセットはブート・ステージ前に実行され、デバイス初期化における重要な手順となります。リセットには、コールド・リセットとウォーム・リセットの 2種類のリセット方法があります。SoCの FPGA部分は、コンフィギュレーション完了時にウォーム・リセットあるいはコールド・リセットをトリガすることが可能です。ブート・プロセスは、MPU内の CPU0がリセット状態を終了すると開始します。CPU0がリセットを終了する際、ブート ROMが配置されているリセット例外アドレスでコードの実行を開始します。CPU1はこの間リセット状態を維持し、後にユーザ・ソフトウェアによってリセットから脱け出します。ウォーム・リセットでは、一部のソフトウェア・レジスタは保存され、ソフトウェアの設定によってはブート・プロセスはいくつかの手順を飛ばして進みます。これに加え、ウォーム・リセットでは第 2ステージ・ブートローダはオンチップ RAMからの実行が可能です。関連情報• Reset Managerソフトウェア・リセットの詳細については、Arria 10 Hard Processor System Technical ReferenceManualの「Reset Manager」の章を参照してください。

• Arria 10 Core Fabric and General Purpose I/Os HandbookFPGAのコンフィギュレーションおよびリセットについての詳細情報です。

第 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-11712015.10.30 ブート・ステージ 3

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

フィードバック

Page 4: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

セットですべての RAMをクリアするセキュリティ・ヒューズをイネーブルします。セキュリティ・ヒューズの詳細については、Arria 10 Hard Processor System Technical ReferenceManualの 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 ReferenceManualの 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フローUG-1171

2015.10.30

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

フィードバック

Page 5: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

Initialize System

Reset

Boot Type

Jump to Code

FPGA Boot RAM Boot Error

Boot

Code Valid?

Reserved BootFlash Boot

High-LevelBoot FPGA Boot RAM Boot Reserved Boot

Spin UntilWatchdog Reset

Yes

No

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

UG-11712015.10.30 ブート ROMフロー 5

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

フィードバック

Page 6: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

Read CurrentSecurity Status inSecurity Manager

Boot Not Valid

FPGA Boot?

RAM Boot Valid?

Boot

Required to boot from FPGA?

Must Authenticate?

RAM Boot Allowed?

Enable FPGAAccess

FPGA Boot

Read BSEL Pins

Boot Valid FPGA Boot Boot Not Valid Boot Not ValidFPGA Boot

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ピンをリードします。

6 ブート ROMフローUG-1171

2015.10.30

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

フィードバック

Page 7: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

図 6: 上位レベルのブート・フロー

GlobalInitialization

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-11712015.10.30 ブート ROMフロー 7

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

フィードバック

Page 8: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

フラッシュ・メモリからのコールド・ブート中、ブート 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コントローラ・ドライバ• プロトコルをサポートするイーサネット・ドライバ• クロック・マネージャ、システム・マネージャ、FPGAマネージャといったシステム・レベル

IP用ドライバ

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

2015.10.30

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

フィードバック

Page 9: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• キャッシュ・メモリ・ドライバ• 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-11712015.10.30 第 2ステージ:ブートローダ(U-Boot) 9

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

フィードバック

Page 10: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

Boot ROM Header CRC

Boot ROM Authentication Header

Boot ROM Standard Header

Second-Stage Boot Loader Binary

Keys to Authenticate/Decrypt Next StageClock ConfigurationPin Configuration

Memory Configuration

Second-Stage Boot Loader DTB

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

外部ブート・フロー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ステージ・ブート・プロセスは通常、以下の図に示すフローに従います。

10 外部ブート・フローUG-1171

2015.10.30

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

フィードバック

Page 11: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 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 throughthe System Manager

Reset Deassertion through theReset Manager

System Interconnect Configuration

Timer & UART Initialization

SDRAM Interface Initialization (IncludeCalibration & PLL Configuration)

Success?

yes

no

Next Stage Boot Device Initialization

Checking Boot Image’s Checksum(Optional)

ChecksumPassed?

yes

no

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

Write Magic Value to the InitialSoftware State Register

Error HandlerPass Control to Next BootStage 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/OConfigured Thru

FPGA?

no

yes

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

UG-11712015.10.30 一般的なブート・フロー(非セキュア) 11

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

フィードバック

Page 12: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

図 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-StageBoot Loader

After0x0000_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 一般的なブート・フロー(非セキュア)UG-1171

2015.10.30

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

フィードバック

Page 13: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

関連情報Booting and Configuration Appendixフラッシュのコンフィギュレーションについての詳細は、Arria 10 Hard Processor System TechnicalReference 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-11712015.10.30 セキュア・ブート・フロー 13

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

フィードバック

Page 14: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 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 セキュア・ブート・フローUG-1171

2015.10.30

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

フィードバック

Page 15: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

On-chip RAMSDRAM

Second-Stage Boot Loader(loaded by boot ROM) FIT Image which contains the secure

micro OS/application

FIT Image which contains the securemicro 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-11712015.10.30 セキュア・ブート・フロー 15

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

フィードバック

Page 16: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

On-chip RAMSDRAM

Second-Stage Boot Loader(loaded by boot ROM) FIT Image which contains the secure

micro OS/application

FIT Image which contains the securemicro 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エンジンをディセーブルします。

16 セキュア・ブート・フローUG-1171

2015.10.30

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

フィードバック

Page 17: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

On-chip RAM SDRAM

Second-Stage Boot Loader(loaded by boot ROM) FIT Image which contains the secure

micro OS/application

FIT Image which contains the securemicro 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-11712015.10.30 セキュア・ブート・フロー 17

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

フィードバック

Page 18: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

ブート・デバイス

ブート選択ブート選択(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 ブート・デバイスUG-1171

2015.10.30

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

フィードバック

Page 19: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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-11712015.10.30 ブートに向けたフラッシュ・メモリ・デバイス 19

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

フィードバック

Page 20: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 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フラッシュ・メモリに向けて QuadSPIコントローラをデフォルト設定にコンフィギュレーションします。関連情報フラッシュ・メモリ・デバイスフラッシュ・メモリ・デバイスに向けたデフォルト設定および 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 3Partition Type: A2Partition 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つのブート・モードをサポートします。

20 SD/MMCフラッシュ・デバイスUG-1171

2015.10.30

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

フィードバック

Page 21: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• 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-11712015.10.30 SD/MMCフラッシュ・デバイス 21

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

フィードバック

Page 22: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

表 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フラッシュ・デバイスUG-1171

2015.10.30

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

フィードバック

Page 23: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 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-11712015.10.30 FPGAからのブート 23

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

フィードバック

Page 25: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

第 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-11712015.10.30 第 2ステージ・ブートローダのサポート・パッケージ生成ツール 25

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

フィードバック

Page 26: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

SD Card

U-Boot Binary & U-Boot Device Tree

ImageU-Boot Device Tree make

U-Boot Source

U-Boot Makefile

BSP Editor

User Options

Handoff Folder(XML Files)

Quartus II

SOFQuartus

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 andConfiguration Appendixに記載された「Clock Selects」の項を参照してください。

• I/O ConfigurationArria 10 Hard Processor System Technical Reference Manualの Booting and Configuration Appendixに記載された「I/O Configuration」の項を参照してください。

26 ステップ 1:FPGAデザインのコンパイルUG-1171

2015.10.30

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

フィードバック

Page 27: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

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

図 20: BSPエディタ

このツールでは、以下の選択が含まれるコンフィギュレーション・オプションが利用可能です。

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

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

フィードバック

Page 28: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• 関連する 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エディタ画面は、コンフィギュレーションの一例を表しています。

28 ブートローダ生成ツール:BSPエディタUG-1171

2015.10.30

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

フィードバック

Page 29: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 22: コンフィギュレーション例

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

boot_deviceプルダウンからは変更しないでください。

UG-11712015.10.30 ブートローダ生成ツール:BSPエディタ 29

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

フィードバック

Page 30: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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テキスト・ボックスでブートローダ・コンフィギュレーションおよび設定ファイルを指定します

30 QSPIブート・デバイスを使用したブートローダの生成UG-1171

2015.10.30

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

フィードバック

Page 32: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

4. 各項目の設定完了後、OKをクリックし、mainメニュー・タブでソース boot_device(QSPI)を指定します注意: .rbfファイルは、SD/MMCからブートする場合にのみ適用されます。QSPIコンフィギ

ュレーションでは、これらのテキスト・ボックスに変更を加える必要はありませんが、その代わりに変換スクリプトを介してシングル.rbfファイルを作成する必要があります。

32 QSPIを使用したブートローダの生成例UG-1171

2015.10.30

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

フィードバック

Page 33: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 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-11712015.10.30 QSPIを使用したブートローダの生成例 33

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

フィードバック

Page 34: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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" -doutput_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フラッシュ・メモリ

Quad SPI Flashに関する詳細情報はこの項を参照してください。• 41ページの付録 B:UEFIブートローダのビルド

34 QSPIを使用したブートローダの生成例UG-1171

2015.10.30

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

フィードバック

Page 35: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• 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 TechnicalReference Manualの Booting and Configuration Appendixを参照してください。

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

コールド・ブート・デバッグコールド・ブートはボードへの電源の再投入あるいは適用可能な場合にはコールド・リセットの発行により開始されます。機能時のブートに関連する問題には以下の共通する兆候があります。• ハードウェアにアクティビティが見られない(例:LEDが点滅していない)• ディスプレイ・コンソールにアクティビティが見られない(例:UART出力や HPSソフトウェアが実行されない)

• ブート・ソフトウェアの実行が割り込みされ、フリーズしているブート ROMはパワーアップあるいはコールド・ブート中に実行される最初のブート・ステージですが、ブートを確実に成功させるにはこの他にも検証を要するハードウェア依存が存在します。加えて、ロジック・アナライザやオシロスコープといった測定装置もブート・プロセス中に信号の状態とレベルのチェックやアクティビティのモニタに使用可能です。ハードウェア・プラットフォームが安定しており、ブート・ソフトウェアの依存が仕様範囲内であることを検証することで、ブート ROMとブートローダが確実にロードおよび実行されます。以下は、確実にブートを成功させるために確認すべき依存性のサンプルです。• ボードの電源をチェックします。仕様の範囲内であり、過度のノイズが存在しないことを確認します。

• 電源シーケンスが正しい順序であり、すべてのレベルが各ステージで仕様の範囲内であることを確認します。

• 入力クロックは、その振幅、周波数、ノイズ、およびジッタを検証しておく必要があります。• すべてのリセット信号がデザインの仕様およびレベルにシーケンスされていることを検証します。

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

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

フィードバック

Page 36: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

ウォーム・ブート・デバッグウォーム・デバッグの問題には以下の原因が考えられます。• アプリケーション・ソフトウェアがウォーム・ブートを正しくない方法でイネーブルした• アプリケーション・ソフトウェアが使用シナリオとは一致しない方法でウォーム・リセット・オプションを修正した

• 使用されたブート・ソースがウォーム・リセット中にリセットされていない

ブート ROMおよびブートローダ・デバッグ・レジスタの使用方法HPSがブートローダ・ステートを実行する場合、ブート ROMとブートローダによって維持されるレジスタはブート・プロせずを介して更新されています。このようなレジスタは、有益なステータスと情報を提供し、これらを詳しく調べることでブート障害の原因を検証することができます。レジスタは、システム・マネージャの sysmgr.romcodegrp内で利用可能です。以下はレジスタとその説明です。• initswstate – 次の有効なブート・ステージにジャンプする前にブートローダが magic valueである 0x49535756をレジスタにライトします。この値がない場合、ブートローダが後続のブート・ステージの実行に成功しなかったことを示します。

• initswlastld – ブート・ソース・デバイスからロードされた最後のブートローダ・ソフトウェア・イメージのインデックスを含みます。最大 4個のブートローダ・イメージがロード可能です。

• bootromswstate – ブート ROMステートの情報を含みます。• Bit[0]:このビットが設定されている場合、すべてのブート・イメージのロードに成功しなかったことを示します。

• Bit[1]:このビットが設定されている場合、ブートローダが開始、あるいは実行していたこと(後に成功しなかった可能性もあります)を示します。

• Bits[11:8]:この領域はブート・フラッシュ・デバイスを示します。• 0x0= NAND• 0x1= SD/MMC• 0x2= QSPI

ブート・フラッシュ・デバイスの問題HPSがソフトウェアを実行していても、ブート ROMがブートローダ・イメージのロードに成功しない場合、考えられる原因はに以下があります。• ブートローダ・イメージがブート・デバイス・フラッシュ内で破損している• ブートローダ・イメージは有効であるが、ブート・フラッシュ・デバイスの通信にエラーがある

• ブートローダ・イメージのロードは成功したが、ソフトウェアのバグによりランタイム実行が成功しない

フラッシュ・デバイスの通信に関する問題を軽減するには、CSEL=0x0で設定します。この設定により、ブート ROMが PLLを再度プログラミングすることが防止され、デバイスで最低の通信スピードを強制的に使用させます。以下の目的のため、フラッシュ・メモリ信号は可能であれば適切な測定機器(ロジック・アナライザやオシロスコープ)を使用しモニタしてください。

36 ウォーム・ブート・デバッグUG-1171

2015.10.30

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

フィードバック

Page 37: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• 通信の持続時間が仕様内であるかを判断する• ブート ROM通信が時期尚早にアボートされるかを観察する• 電圧レベルおよび立ち上がり時間、立ち下がり時間といったシグナル・インテグリティを検証する

• HPSおよびフラッシュ・デバイスの通信を(ロジック・アナライザで)キャプチャする問題が解消していない状態で、デバッガ接続が可能である場合はオンチップ RAMの上部 4KBの内容を アルテラ が解析するようデバッガからダンプすることが可能です。関連情報Altera Support Centerサポート・センターのページへのログインおよび mySupportサービス・リクエスト・システムへのアクセスに関する情報です。

HPSブートローダのデバッグデバッガ接続が利用できない状態で、かつ HPSがフラッシュからブートしている場合はフラッシュ・デバイス信号をモニタする必要があります。「ブート・フラッシュ・デバイスの問題」の項を参照してください。デバッガはソース・コードにアクセス可能であるため、ブートローダ実行のデバッグにデバッガを使用することは最も効果的な方法です。以下の汎用的なデバッグ・テクニックが使用可能です。• JTAG接続を持つシステムでは、ブートローダの実行をステップ・スルーにはデバッガを使用します。

• あるいは、ブートローダ・コードは LEDや UARTといったハードウェア・リソースを経由、あるいは未使用のメモリ・ロケーションに書き込むことでより有益なデバッグ情報を提供するよう編集することも可能です。

関連情報• 36ページのブート・フラッシュ・デバイスの問題• ARM Infocenter

ARM DS-5を使用したブートローダのデバッグについての詳細情報です。

UG-11712015.10.30 HPSブートローダのデバッグ 37

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

フィードバック

Page 38: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

付録 A:SD/MMCブート・デバイスを使用したブートローダの生成

ブートローダの例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テキスト・ボックスでブートローダ・コンフィギュレーションおよび設定ファイルを指定します

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

38 付録 A:SD/MMCブート・デバイスを使用したブートローダの生成UG-1171

2015.10.30

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

フィードバック

Page 40: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

図 28: BSPエディタ画面で SD/MMCデバイスからブートを選択する

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/フォルダ内に生成されます。

表 6: ブートローダ実行可能イメージ

ファイル 説明

u-boot_w_dtb.bin デバイス・ツリー・バイナリを持つ U-boot実行可能ファイル

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

40 ブートローダの例UG-1171

2015.10.30

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

フィードバック

Page 41: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

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

7. ブート・デバイス上でブートローダ・イメージ、U-Bootデバイス・ツリー、FPGAデザインを準備します。詳細は、 アルテラ SoC Embedded Design Suite User Guideあるいは Rocketboardsサイトを参照してください。

関連情報• 20ページの SD/MMCフラッシュ・デバイス詳細については、「SD/MMCフラッシュ・デバイス」の項を参照してください。

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

付録 B:UEFIブートローダのビルドUEFI(Unified Extensible Firmware Interface)ブートローダをビルドするには、UEFIソース・コードを入手し、サポートされているツールチェインで UEFIソースをコンパイルする必要があります。

前提条件UEFIブートローダをビルドするには、インストール・パッケージが必要となります。使用するLinuxディストリビューションによってパッケージのインストールに使用するコマンドは異なります。Ubuntuディストリビューションを使用している場合は、以下を入力します。$ sudo apt-get install uuid-dev build-essential

Fedoraディストリビューションを使用している場合は、以下を入力します。$ sudo yum install uuid-devel libuuid-devel

注意: UEFIのビルドには、Pythonパッケージが必要です。Pythonがホストにインストールされていない場合は、以下のコマンドを入力することで SoC EDSインストレーション・パスから入手することができます。$ export PATH=$SocEDS_DEST_ROOT/host_tools/python/bin:$PATH

hashlib.pyによってエラーがレポートされる場合は、以下を入力して libssl.so.1.0.0をインストールします。

$ export LD_LIBRARY_PATH=$SOCEDS_DEST_ROOT/host_tools/python/lib/:$LD_LIBRARY_PATH/sbin/ldconfig

サポートされているコンパイラ・ツールチェインサポートされている UEFIコンパイラ・ツールチェインには以下が含まれます。

UG-11712015.10.30 付録 B:UEFIブートローダのビルド 41

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

フィードバック

Page 42: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

• Linaro:このツールチェインは、SoC EDSインストレーション・パッケージより利用可能です。• arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.8-2014.04 – Linaro GCC 4.8-2014.04) 4.8.3

20140401 (prerelease)• ARM (armcc, armlink):このツールチェインは、SoC EDS DS-5インストレーション・パッケージより利用可能です。

UEFIソース・コードの入手UEFIソース・コードは GitHub内に位置しています。UEFIソース・コードを入手するには以下の手順に従ってください。1. ターミナルを開きます2. GitHubから UEFIソース・コードをチェックアウトする目的でディレクトリ・パスを新しく作成します$ mkdir /data/<username>/pggit

3. この UEFI作業ディレクトリに変更し、gitツリーから UEFIソースをクローンします$ cd /data/<username>/pggit$ git clone https://github.com/altera-opensource/uefi-socfpga.git

4. 完了後、uefi-socfpgaフォルダに変更し、gitチェックアウトを実行します$ cd uefi-socfpga$ git checkout –t –b socfpga-linaro-edk2-2014.10-a3 origin/socfpga-linaro-edk2-2014.10-a3$ git reset tags/rel_socfpga_arria10_beta

Linaroツールチェインを使用した UEFIソース・コードのコンパイルこの項では、Linaroツールチェインを使用した UEFIソース・コードのコンパイル方法を解説します。1. ターミナル・ウィンドウを開き、以下のコマンドを入力します。

$ cd /data/<username>/pggit/uefi-socfpga$ make clean

注意: make cleanは、/data/<username>/pggit/uefi-socfpga/Build/フォルダをすべて消去し、また BaseToolsも削除します。

2. 以下のコマンドを使用し、 Arria 10デバイスに向けて UEFIブートローダをコンパイルします。このビルド・プロセスは 3分以内に完了します。$ make

注意: makeの入力は make DEVICE=a10 COMPILER=gccに相当します。ビルド完了後、Build Doneメッセージが表示されます。

42 UEFIソース・コードの入手UG-1171

2015.10.30

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

フィードバック

Page 43: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

ARMツールチェインを使用した UEFIソース・コードのコンパイルこの項では、ARMツールチェインを使用した UEFIソース・コードのコンパイル方法を解説します。1. ターミナル・ウィンドウを開き、以下のコマンドを入力します。

$ cd /data/<username>/pggit/uefi-socfpga$ make clean

注意: make cleanは、/data/<username>/pggit/uefi-socfpga/Build/フォルダをすべて消去し、また BaseToolsも削除します。

2. UEFIブートローダをコンパイルします。$ make DEVICE=a10 COMPILER=gcc HANDOFF_DTB=a10_soc_devkit_ghrd_qspi/software/bootloader/devicetree.dtb

UEFIが生成するファイルUEFIソース・コードをコンパイルすると、/data/<username>/pggit/uefi-socfpga/Build/フォルダ内に以下のファイルが作成されます。

表 7: UEFIが生成するファイル

ファイル 説明

~ /uefi-socfpga/Build/PEI.256 (256KB) このファイルは、~/uefisocfpga/ Build/Arria10SoCPkg/RELEASE_GCC48/FV/ALTERA_HPS_OCRAM_EFI_ PART1.fdに位置するオリジナル・ファイルにヘッダを追加することでmkpimageツールから生成されます。このファイルのサイズは、256 KBと小さいため DS-5を使用してオンチップ RAMに直接ロードします。このファイルは、PEI.ROMファイルを生成します。

~ /uefi-socfpga/Build/PEI.ROM (1MB = 256KB X 4) このファイルはフラッシュ・ドーターカードにプログラムされます。このファイルは、ブート ROMは最大 4個のバックアップ・イメージをサポート可能なため 4倍のサイズとなります。たとえば、最初のイメージ(256KB)が破損している場合、ブート ROMは 2番目のイメージをロードします。

UG-11712015.10.30 ARMツールチェインを使用した UEFIソース・コードのコンパイル 43

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

フィードバック

Page 44: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

ファイル 説明

~ /uefi-socfpga/Build/load_uefi_fw.ds これは DS-5スクリプトのテンプレートです。DS-5ツールにインポートされ、デバッグおよび開発用に UEFIファームウェアをロードします。このユーザはユーザのためにデバッグ・シンボルをロードします。現行では、GCCコンパイラのみがサポートされており、ARMCCはサポートされていません。

~ /uefi-socfpga/Build/DXE.ROM このファイルは現行では使用されておらず、将来用の予備となっています。

44 UEFIが生成するファイルUG-1171

2015.10.30

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

フィードバック

Page 45: Arria 10 SoCブート・ユーザーガイド...Arria 10 SoC ブート・ユーザーガイド 2015.10.30 UG-1171 更新情報 フィードバック 本資料では、ブート・フロー、ブート・ソース・デバイスの総合的な情報および

Arria 10 SoCブート・ユーザーガイドの改訂履歴日付 バージョン 変更内容

2015年 10月 2015.10.30 • 「付録 B:UEFIブートローダのビルド」の項とサブセクションを追加

• 「高度なブート・トピック」の項を削除2015年 6月 2015.06.12 • 「別の OSブート・フロー」の項を削除

• 「一般的なブート・フロー(非セキュア)」の項に記載された「一般的な第 2ステージ・ローダのフロー(非セキュア)」を更新

• 「QSPIを使用したブートローダ生成の例」の項に記載された「新しい BSPエディタ・ウィンドウの選択」の図を更新

• 「付録 A:SD/MMCブート・デバイスを使用したブートローダの生成」の項に記載された「新しい BSPエディタ・ウィンドウの選択」の図を更新

• 「ブートのデバッグ」の項に以下のサブセクションを追加• コールド・ブート・デバッグ• ウォーム・ブート・デバッグ• ブート ROMおよびブートローダ・デバッグ・レジスタの使用

• ブート・フラッシュ・デバイスの問題• HPSブートローダのデバッグ

• 「付録 B:ブートローダ(U-Boot)デバイス・ツリー・リファレンス」を削除

2015年 4月 2015.04.27 初版

UG-11712015.10.30 Arria 10 SoCブート・ユーザーガイドの改訂履歴 45

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

フィードバック