84
Zynq-7000 All Programmable SoC ソ フ ト ウ ェ ア開発者向け ガイド UG821 (v10.0) 2015 3 10 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最 新情報につきましては、必ず最新英語版をご参照ください。

Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

Zynq-7000 All Programmable SoC ソ フ ト ウ ェ ア開発者向け ガイ ド

UG821 (v10.0) 2015 年 3 月 10 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

Zynq-7000 AP SoC SWDG japan.xilinx.com 2UG821 (v10.0) 2015 年 3 月 10 日

改訂履歴

次の表に、 こ の文書の改訂履歴を示し ます。

日付 バージ ョ ン 内容

2015 年 7 月 6 日 10.0 訳語修正

• 「実際、 暗号化は Zynq-7000 ハード ウ ェ アの AES/HMAC エンジンで行われます。」 → 「実際、 復号化は Zynq-7000 ハード ウ ェ アの AES/HMAC エンジンで行われます。」

• 「暗号化されたデータ を含む RSA_NUMBER」 → 「復号化されたデータ を含む RSA_NUMBER」

2015 年 4 月 1 日 10.0 文書全体にさ まざまな参照項目を追加。

51 ページの 「BIF フ ァ イルの属性」 を更新。

55 ページの 「Bootgen コマン ド のオプシ ョ ン」 を追加。 58 ページの 「パーテ ィ シ ョ ン属性ビ ッ ト 」 を更新。

2014 年 6 月 4 日 9.0 55 ページの「Bootgen コマン ド のオプシ ョ ン」 の -i オプシ ョ ンを削除し て Bootgen を変更。

付録 D 「その他の リ ソースおよび法的通知」 に相互参照を追加し て リ ン ク を更新。 RSA および SHA-2 の定義を追加。 UG652 への参照を削除。

23 ページの AP を PS に変更。

2014 年 4 月 2 日 8.0 2014.1 用の初版 リ リ ース

Page 3: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

目次

第 1 章 : Zynq-7000 AP SoC 入門概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

アーキテ クチャの選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

オペレーテ ィ ング システム (OS) の考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ローはじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

ソ フ ト ウ ェ ア ツールの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

ベア メ タル デバイ ス ド ラ イバーのアーキテ クチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

ベア メ タル アプ リ ケーシ ョ ンの開発 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Linux アプ リ ケーシ ョ ンの開発. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

その他の情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

ブー ト モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

ブー ト ステージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

ブー ト イ メ ージの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

bootROM ヘッ ダーのフ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

第 4 章 : Linuxはじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Git サーバー と Gitk コマン ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Linux BSP に含まれる もの. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48U-Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

付録 A : Bootgen の使用はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

BIF フ ァ イルの構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

初期化ペアおよび INIT フ ァ イルの属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

暗号化の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

認証の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Bootgen コマン ド のオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

イ メ ージ ヘッ ダー テーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

イ メ ージ ヘッ ダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

SDK のプロ ジェ ク ト フ ァ イルおよびフ ォルダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

ユーザー指定可能な PS eFUSE パラ メ ーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

ユーザー指定可能な PL eFUSE パラ メ ーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Zynq-7000 AP SoC SWDG japan.xilinx.com 3UG821 (v10.0) 2015 年 3 月 10 日

Page 4: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

AES およびユーザー キー パラ メ ーター. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

ユーザー指定可能な BBRAM パラ メ ーター. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

PL JTAG 信号に使用される MIO ピン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

MUX パラ メ ーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

AES キーと関連パラ メ ーター. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

エラー コード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

ステータ ス コード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

XMD を使用し て SVF フ ァ イルを作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

DDR から実行する eFUSE の書き込み手順 (応用). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

OCM 向け eFUSE ド ラ イバーのコ ンパイル手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

LibXil SKey ラ イブラ リ の API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

BBRAM API の説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

付録 C : Zynq-7000 AP SoC デバイス向け LibXil RSA (v1.1)LibXil RSA ラ イブラ リ の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

SDK プロ ジェ ク ト のフ ァ イルおよびフ ォルダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

マ ク ロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

LibXil RSA の API およびその説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

付録 D : その他のリ ソースおよび法的通知ソ リ ューシ ョ ン セン ター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

ザイ リ ン ク ス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Zynq-7000 AP SoC SWDG japan.xilinx.com 4UG821 (v10.0) 2015 年 3 月 10 日

Page 5: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 1 章

Zynq-7000 AP SoC 入門

概要このガイ ド では、ザイ リ ン ク スの Zynq®-7000 All Programmable SoC デバイ ス を使用するデザイ ンに役立つ情報を ソ フ ト ウ ェアを中心に提供し ています。 主に次のよ う な設計者 と対象 と し ています。

• エンベデッ ド ソ フ ト ウ ェ ア デザイ ン経験者

• ARM® 開発ツールの使用経験者

• ザイ リ ン ク スの FPGA デバイ ス、 IP コ ア、 開発ツール、 およびツール環境について理解し ている設計者

はじめにハード ウ ェア と ソ フ ト ウ ェアの両方をプロ グ ラ ムでき る SoC に拡張性が備わる こ と で、ハード ウ ェア と ソ フ ト ウ ェア のデザイ ン フ ローに新たな要件が生じ ます。

ハード ウ ェア協調シ ミ ュ レーシ ョ ンや協調デバッ グ機能など、一部のハード ウ ェア機能はザイ リ ン ク ス独自のものです。 こ のよ う な機能を利用する こ と で、 物理的ボー ド やエ ミ ュ レーター上の Zynq-7000 AP SoC プロセ ッ サでアプ リ ケーシ ョ ンを実行し ながら、 Zynq-7000 AP SoC デバイ ス あ るいはロ ジ ッ ク シ ミ ュ レーシ ョ ン環境にイ ンプ リ メ ン ト されたカ ス タ ム ロ ジ ッ ク を検証でき ます。

Zynq ベース エンベデッ ド システムの設計手順は、 次の資料を参照し て く ださ い。

• 『Vivado Design Suite チュー ト リ アル : エンベデッ ド プロセ ッ サ ハード ウ ェ ア デザイ ン』 (UG940) [参照 6]

• エンベデッ ド ハード ウ ェア デザイ ンのプロセスについては、 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド プロセ ッサ ハード ウ ェア デザイ ン』 (UG898) [参照 11] を参照し て く ださい。

• 『Vivado Design Suite チュー ト リ アル : Zynq-7000 All Programmable SoC エンベデッ ド デザイ ン 』 (UG1165) [参照 16]

ビデオ : Zynq-7000 AP SoC デバイ スの quick-take ビデオは、 「Smarter System を可能に」 をご覧 く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 5UG821 (v10.0) 2015 年 3 月 10 日

Page 6: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 1 章 : Zynq-7000 AP SoC 入門

アーキテ クチャの選択Zynq-7000 AP SoC 上で実行する アプ リ ケーシ ョ ンのエンベデッ ド 開発を始める前に、 アーキテ ク チャに関し てユー ザーが決定すべき事項がい く つかあ り ます。

Zynq-7000 AP SoC デバイ スには、 デュ アル コ ア ARM Cortex™-A9 プロセ ッ サが搭載されているため、 非対称型マル チプロセ ッ シング (AMP) または対称型マルチプロセ ッ シング (SMP) のいずれかを選択する必要があ り ます。

すべてのエンベデッ ド ソ フ ト ウ ェア プロ ジェ ク で、 使用するオペレーテ ィ ング システムを決定し てお く 必要があ り ます (使用し ない場合は不要)。 この章では、 AMP と SMP の両方について説明し、 ト レード オフやそれぞれについて の注意点について解説し ています。

マルチプロセ ッ シングの考察

このセ ク シ ョ ンでは、 マルチプロセ ッ シングに関する 2 つの考慮すべき事項について説明し ます。

非対称型マルチプロセ ッ シング

非対称型マルチプロセ ッ シング (AMP) と は、 マルチプロセ ッ サ システムでそれぞれのプロセ ッ サが物理的 メ モ リ を 共有し ながら、 異なるオペレーテ ィ ング システム イ メ ージを実行するプロセ ッ シング モデルのこ と をいいます。 各 イ メ ージは同じオペレーテ ィ ング システムのものであ る こ と も可能ですが、通常はそれぞれが異なるオペレーテ ィ ン グ システムで、 異なる特性を持つ別の OS を補完し ます。

• Linux などのフル機能を備えたオペレーテ ィ ング システムは、ネ ッ ト ワークやユーザー イ ン ターフ ェ イ ス を介し て簡単に外部 と接続でき る

• 小規模で軽量なオペレーテ ィ ング システムは、 メ モ リ や リ アルタ イ ム動作に関し て よ り 高い効率を発揮する

一般的な例 と し て、 Linux をプラ イマ リ オペレーテ ィ ング システム と し て実行し、 FreeRTOS またはベア メ タル シス テム (第 4 章 「Linux」 で説明) などの比較的小規模で軽量なオペレーテ ィ ング システムをセカンダ リ オペレーテ ィ ン グ システム と し て使用する場合が挙げられます。

プロセ ッ サ間におけ る システム デバイ ス (UART、 タ イ マー カ ウ ン ター、 イーサネ ッ ト など) の役割分担は、 シス テ ム設計で最も重要な要素です。 一般的には次のよ う にな り ます。

• ほ と んどのデバイ スは、 指定されたプロセ ッ サ専用のデバイ ス と なる

• 割 り 込みコ ン ト ローラーは、 複数プロセ ッ サ間で共有される よ う に設計する

• 割 り 込みコ ン ト ローラーを初期化する割 り 込みコ ン ト ローラー マス ターと し て 1 つのプロセ ッサを指定する

プロセ ッ サ間の通信は、両方のオペレーテ ィ ング システムを効率よ く 動作させる ための重要な要素です。 これを実現 するには、 プロセ ッ サ間での割 り 込み、 メ モ リ の共有、 メ ッ セージの送信など さ まざまな方法を用います。

対称型マルチプロセ ッ シング

対称型マルチプロセ ッ シング (SMP) と は、マルチプロセ ッサ システムでそれぞれのプロセ ッ サが 1 つのオペレーテ ィ ン グ シ ス テム イ メ ージ を実行する プ ロ セ ッ シ ン グ モデルの こ と をいいます。 オペレーテ ィ ン グ シ ス テムのス ケ ジューラーによ って、 各プロセ ッ サが実行するプロセスがスケジュー リ ング されます。

効率良いプロセ ッ シング モデルでは、 選択し た 1 つのオペレーテ ィ ング システムがシステム要件を満た し ます。 オ ペレーテ ィ ング システムは自動的に複数のプロセ ッサの処理能力を活用し、その処理はエン ド ユーザーに透過的に行 われます。 ユーザーが可能な操作は次の とお り です。

• プロセス を実行する特定のプロセ ッ サを指定する

• いずれかのプロセ ッ サを使用し て割 り 込みを処理する

• 1 つのプロセ ッサをシステムの初期化やほかのプロセ ッサを起動するマス ターと し て指定する

Zynq-7000 AP SoC SWDG japan.xilinx.com 6UG821 (v10.0) 2015 年 3 月 10 日

Page 7: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 1 章 : Zynq-7000 AP SoC 入門

オペレーテ ィ ング システム (OS) の考察

ベア メ タル システム

ベア メ タル と は、 オペレーテ ィ ング システムを使用し ない ソ フ ト ウ ェ ア システムの こ と をいいます。 通常、 こ の ソ フ ト ウ ェア システムは、オペレーテ ィ ング システムで提供される多 く の機能 (ネ ッ ト ワーク など) を必要と し ません。 オペレーテ ィ ング システムはプロセ ッ サの処理能力を幾分消費し、 シンプルな ソ フ ト ウ ェ ア システム と比較し た場 合、 確定性が劣る傾向にあ り ます。 システム デザイ ンによ っては、 こ のオペレーテ ィ ング システムのオーバーヘッ ドや確定性の低さ を許容でき ない場合があ り ます。エンベデッ ド プロセ ッ シングの処理速度が高 く なるに伴い、シス テム デザイ ンの多 く でオペレーテ ィ ング システムのオーバーヘッ ド は無視でき る レベル と な り ま し たが、 システム の複雑化を避けるために、 オペレーテ ィ ング システムを使用し ない場合も あ り ます。

オペレーテ ィ ング システム : LinuxLinux は、 多 く のエンベデッ ド デザイ ンで使用されているオープン ソースのオペレーテ ィ ング システムです。 さ まざ まなベンダーか らデ ィ ス ト リ ビ ューシ ョ ン と し て提供されてお り 、 オープン ソース リ ポジ ト リ か らの構築も可能で す。 本来、 Linux は リ アルタ イ ム オペレーテ ィ ング システムではあ り ませんが、 よ り リ アルタ イ ム性に対応でき る よ う になっています。

Linux は、 プロセ ッ サの メ モ リ 管理装置 (MMU) を利用する フル機能を備えたオペレーテ ィ ング システムであ り 、 安 全性の高いオペレーテ ィ ング システム と し て評価されています。 また、 複数プロセ ッ サを使用する際の SMP 機能も あ り ます。

リ アルタ イム オペレーテ ィ ング システム

ザイ リ ン ク スのサー ド パーテ ィ パー ト ナーが提供する リ アルタ イ ム オペレーテ ィ ング システム (RTOS) を使用する システム設計者もいます。

RTOS は、 タ イ ミ ングを重視する アプ リ ケーシ ョ ンやシステムで求められる確定性や予測可能な応答性を備えていま す。 最新のサード パーテ ィ ツールに関する情報は、 ザイ リ ン ク スへお問い合わせ く ださい。

パー ト ナー企業の Zynq-7000 オペレーテ ィ ング システム

設計者は、 独自の経験、 最新規格、 特定要件、 レガシ デザイ ン、 企業間契約などに応じ てエンベデッ ド ソ リ ューシ ョ ンを選択でき ます。

Zynq-7000 デバイ スでサポー ト されているパー ト ナー企業のオペレーテ ィ ング システムの一覧は、 Zynq-7000 AP SoC エコ システムのページを参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 7UG821 (v10.0) 2015 年 3 月 10 日

Page 8: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章

ソ フ ト ウェア アプリケーシ ョ ンの開発フロー

はじめにZynq®-7000 All Programmable (AP) SoC ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン開発フ ローでは、 統合されたザイ リ ン ク スの ツール セ ッ ト を使用し て ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンを構築でき ます。 さ らに、 ARM® Cortex™-A9 プロセ ッ サ用 にサード パーテ ィ が提供する さ まざまなツールも利用可能です。

この章では、ザイ リ ン ク スのツールおよびフ ローを中心に説明し ていますが、その概念は広 く サード パーテ ィ ツール に応用でき ます。 Zynq-7000 AP SoC デバイ ス ソ リ ューシ ョ ンには、 Eclipse ベースの統合設計環境 (IDE) や GNU コ ン パイ ラ ツールチェーンなどの使い慣れたコ ンポーネン ト が含まれています。

さ らに、 ザイ リ ン ク ス ツールを使用する、 ベア メ タルおよび Linux の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン開発フ ローに ついて も簡単に説明し ています。 ザイ リ ン ク ス ツールのサポー ト は、 その他のザイ リ ン ク ス エンベデッ ド プロセ ッ サ と同様ですが、 異なる部分については注記し ています。 また、 アプ リ ケーシ ョ ン開発フ ローに含まれるブー ト 、 デバイ ス コ ンフ ィ ギュ レーシ ョ ン、 および OS 使用法について も説明し ています。 これらについては、 ほかの章および 資料で詳し く 解説し ています。

Zynq-7000 AP SoC SWDG japan.xilinx.com 8UG821 (v10.0) 2015 年 3 月 10 日

Page 9: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

図 2-1 に、 Zynq-7000 AP SoC プロセ ッサのブロ ッ ク図を示し ます。

ソ フ ト ウ ェ ア ツールの概要ARM ベースのプロセ ッ シング システム (PS) と プロ グ ラ マブル ロ ジ ッ ク (PL) が結合された こ と によ って、 カ ス タ ム のペ リ フ ェ ラルやコプロ セ ッ サが追加でき る よ う にな り 、 よ り 独自性のあ る開発が可能にな り ま し た。 PL にイ ンプ リ メ ン ト されたカ ス タ ム ロ ジ ッ ク によ って、 タ イ ミ ングが重要な ソ フ ト ウ ェ ア機能の強化、 アプ リ ケーシ ョ ン レ イ テンシの削減、 システムの消費電力削減、 あ るいはソ リ ューシ ョ ン固有のハード ウ ェ ア機能追加などが実現し ます。

ハード ウ ェア と ソ フ ト ウ ェアのイ ン ターフ ェ イ スにハード ウ ェ アのプロ グ ラ マビ リ テ ィ が追加される こ と で、デザイン フ ローに新たな要件が生じ ます。ハード ウ ェ ア協調シ ミ ュ レーシ ョ ンや協調デバッ グ機能など、一部のハード ウ ェ ア機能はザ イ リ ン ク ス独自の も のです。 こ の よ う な機能を利用する こ と で、 物理的ボー ド やエ ミ ュ レー ター上のZynq-7000 AP SoC プロセ ッ サでアプ リ ケーシ ョ ンを実行し ながら、 Zynq-7000 AP SoC デバイ スあ るいはロ ジ ッ ク シ ミ ュ レーシ ョ ン環境にイ ンプ リ メ ン ト されたカ ス タ ム ロ ジ ッ ク を検証でき ます。

ザイ リ ン ク スは、Zynq-7000 AP SoC デバイ スのソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発およびデバッ グ向けの設計ツー ルを提供し ています。

• ソ フ ト ウ ェア IDE

• GNU ベースのコ ンパイ ラ ツールチェーン

• JTAG デバッ ガー

• 関連するユーテ ィ リ テ ィ

X-Ref Target - Figure 2-1

図 2-1 : Zynq-7000 AP SoC プロセ ッ シング システムの概略図

Zynq-7000 AP SoC SWDG japan.xilinx.com 9UG821 (v10.0) 2015 年 3 月 10 日

Page 10: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

これらのツールでは、 次のアプ リ ケーシ ョ ン開発が可能です。

• OS を使用し ないベア メ タル型アプ リ ケーシ ョ ン

• オープン ソース Linux OS のアプ リ ケーシ ョ ン

カ ス タ ム ロ ジ ッ ク と ユーザー ソ フ ト ウ ェ アは、 物理的ハー ド ウ ェ アやシ ミ ュ レーシ ョ ンのさ まざまな組み合わせで 動作でき、 ハード ウ ェアのイベン ト を監視する機能も備えています。 次に例を示し ます。

• ハード ウ ェアまたはシ ミ ュ レーシ ョ ン ツールで動作する カス タ ム ロ ジ ッ ク

• ターゲ ッ ト 上またはソ フ ト ウ ェ ア エ ミ ュ レーターで動作するユーザー ソ フ ト ウ ェ ア

• イベン ト 時の PL およびプロセ ッ サのク ロ ス ト リ ガー

Cortex-A9 プロセ ッサをサポー ト するサード パーテ ィ のソ フ ト ウ ェア ソ リ ューシ ョ ン も利用でき ます。 一部を次に示 し ます。

• ソ フ ト ウ ェア IDE

• コ ンパイ ラ ツールチェーン

• デバッ グおよび ト レース ポー ト

• エンベデッ ド OS と ソ フ ト ウ ェ ア ラ イブラ リ

• シ ミ ュ レータ

• モデルおよび仮想プロ ト タ イ ピング ツール

サード パーテ ィ ツール ソ リ ューシ ョ ンは、統合レベルおよび Zynq-7000 AP SoC デバイ スの直接サポー ト レベルがさ まざまです。 カーネルの開発およびデバッ グ専用ツールをザイ リ ン ク スは提供し ていませんが、 サード パーテ ィ から入手可能なツールがあ り ます。 それら をご利用 く ださい。

後続のサブセ ク シ ョ ンでは、 ザイ リ ン ク スの開発ツールの概要を説明し ます。 ツールは、 32 ビ ッ ト および 64 ビ ッ ト Windows および x86 Linux ホス ト コ ンピ ューテ ィ ング プラ ッ ト フ ォームで使用でき ます。

ハー ド ウ ェ ア設計ツール

ザイ リ ン ク スは、 ブロ ッ ク図を使用し ながら、 PL や Zynq-7000 プロセ ッ サ と関連し ている IP を設定でき る Vivado IP イ ンテグレーターを提供し ています。

Vivado Design Suite IP イ ンテグレーターは Zynq-7000 AP SoC 用のブロ ッ ク図を提供する ため、 ユーザーは XML フ ァ イル形式や INIT フ ァ イル形式 (.h、 .c および .tcl) でプロ グ ラ マブル ロ ジ ッ ク (PL) 情報を設定でき ます。 ソ フ ト ウ ェア設計ツールはこれらの情報を使用し てボード サポー ト パッ ケージ (BSP) ラ イブラ リ の作成および変更、 コ ンパイ ラ オプシ ョ ンの推論、 JTAG 設定の定義、 そし てハード ウ ェア情報を必要とするその他の動作の自動化を行 います。

詳細は、 次の資料を参照し て く ださい。

• 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド jプロセ ッ サ ハード ウ ェ ア デザイ ン』 (UG898) [参照 5]

• 『Vivado Design Suite チュー ト リ アル : エンベデッ ド プロセ ッ サ ハード ウ ェ ア デザイ ン』 (UG940) [参照 6]

• 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 7]

• 『Vivado Design Suite ユーザー ガイ ド : IP イ ンテグレーターを使用し た IP サブシステムの設計』 (UG994) [参照 8]

ソ フ ト ウ ェ ア開発キ ッ ト ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト (SDK) は、 ザイ リ ン ク ス エンベデッ ド プロセ ッ サを ターゲ ッ ト とする ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発に必要なすべてが揃った完全な環境を提供し ます。 このキ ッ ト には、 GNU ベースの コ ンパイ ラ ツールチェーン (GCC コ ンパイ ラ、 GDB デバッ ガー、 ユーテ ィ リ テ ィ 、 およびラ イブラ リ )、 JTAG デバッ ガー、 フ ラ ッ シ ュ プロ グ ラ マー、 ザイ リ ン ク ス IP 用ド ラ イバー、 ベア メ タル ボー ド サポー ト パ ッ ケージ、 アプ リ ケーシ ョ ン固有機能用 ミ ド ルウ ェ ア ラ イブ ラ リ 、 C/C++ ベア メ タルおよび Linux アプ リ ケーシ ョ ン開発/デバッ グ用

Zynq-7000 AP SoC SWDG japan.xilinx.com 10UG821 (v10.0) 2015 年 3 月 10 日

Page 11: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

IDE が含まれています。 オープン ソースの Eclipse プ ラ ッ ト フ ォームがベース と な る SDK には、 C/C++ 開発ツール キ ッ ト (CDT) が統合されています。 CDT の特徴は次の とお り です。

• C/C++ コード エデ ィ ターおよびコ ンパイル環境

• プロ ジェ ク ト 管理

• アプ リ ケーシ ョ ンの構築設定および makefile の自動生成

• エラー ナビゲーシ ョ ン

• エンベデッ ド ターゲ ッ ト のデバッ グおよびプロ フ ァ イル用の統合環境

• サード パーテ ィ のプラ グ イ ンを使用し て利用可能な追加機能 (例 : ソース コード のバージ ョ ン管理)

SDK の利用

SDK は、 Vivado Design Suite と共にダウ ン ロード で入手でき ますが、 ス タ ン ド ア ロ ン アプ リ ケーシ ョ ン と し て も利用 可能です。SDK には、第 1 段階ブー ト ローダー (FSBL) 作成用のアプ リ ケーシ ョ ン テンプレー ト およびブー ト イ メ ー ジ構築用のグ ラ フ ィ カル イ ン ターフ ェ イ ス も含まれています。

その他に、 コ ンセプ ト 、 タ ス ク、 参照情報を提供するヘルプ も あ り ます。 詳細は、 『ザイ リ ン ク スのソ フ ト ウ ェ ア開発キ ッ ト のヘルプ』 (UG782) [参照 14] を参照し て く ださい。

ハード ウ ェアの定義をエク スポー ト する場合、 図 2-2 のよ う に Vivado から SDK を起動でき ます。

システム性能解析

ザイ リ ン ク ス ソ フ ト ウ ェ ア デバッ ガ (XSDB) は、 システム パフ ォーマン ス モニ ター (SPM) を使用し てデバッ グを行 います。

SPM の詳細は、 次の リ ン ク を参照し て く ださい ([参照 15])。

• 『ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト : システム性能』 (UG1145) の第 3 章

• 『ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト : システム性能』 の第 5 章

その他に、 『All Programmable SoC のシステム性能解析』 (XAPP1219) [参照 17] も参照し て く ださい。

X-Ref Target - Figure 2-2

図 2-2 : [Export Hardware for SDK] ダイアログ ボッ クス

Zynq-7000 AP SoC SWDG japan.xilinx.com 11UG821 (v10.0) 2015 年 3 月 10 日

Page 12: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

ザイ リ ン クス Cortex-A9 コ ンパイ ラ ツールチ ェーン用の Sourcery CodeBench Lite Edition

SDK には、 ベア メ タル EABI (エンベデッ ド アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス) および Linux アプ リ ケー シ ョ ン開発向けのザイ リ ン ク ス Cortex-A9 コ ンパイ ラ ツールチェーン用 Sourcery CodeBench Lite Edition が含まれてい ます。

SDK のザ イ リ ン ク ス Sourcery CodeBench Lite ツールチ ェーンには、 標準の Sourcery CodeBench Lite Edition EABI や Linux コ ンパイ ラ ツールチェーン と同じ GNU ツール、 ラ イブラ リ 、 資料が含まれていますが、 その他に次が追加さ れています。

• ザイ リ ン ク ス Cortex-A9 プロセ ッサ用のデフ ォル ト ツールチェーン設定

• ザイ リ ン ク ス Cortex-A9 プロセ ッサ用のベア メ タル (EABI) ス ター ト ア ッ プ サポー ト およびデフ ォル ト リ ンカー ス ク リ プ ト

• ベク ター浮動小数点 (VFP) と NEON™ に最適化された ラ イブラ リ

解析ツール

Vivado ラボ ツール

Vivado IDE にはデバッ グ機能が統合されています。 詳細は、 『Vivado Design Suite ユーザー ガイ ド :プロ グ ラ ムおよび デバッ グ』 (UG908) [参照 11] を参照し て く ださい。

System Generator for DSP

System Generator™ for DSP ツールは、 DSP およびデータ フ ローを中心 とするハード ウ ェ ア ベースのコプロセ ッ サ開 発に使用可能で、 MATLAB®/Simulink® 環境内で動作し ます。

このツールは、 DSP ハード ウ ェ アの高速シ ミ ュ レーシ ョ ンをサポー ト し ている ため、 全体的な開発時間を短縮するだ けでな く 、PS へ接続でき る コプロセ ッサの生成を自動化し ます。SDK の協調デバッ グ機能を使用する こ と で、System Generator で開発中のハード ウ ェ アを確認および制御し ながら、 プロセ ッサ上で動作し ているプロ グ ラ ムを SDK 内で 実行およびデバッ グでき ます。

ベア メ タル デバイス ド ラ イバーのアーキテ クチャベア メ タル デバイ ス ド ラ イバーは、 階層構造になっています (13 ページの図 2-3 参照)。 この階層アーキテ クチャは、 デバイ ス ド ラ イバーの さ ま ざまな使用事例に対応でき る と 同時に、 オペレーテ ィ ング システム、 ツールセ ッ ト 、 プ ロセ ッ サ間の移植性にも優れています。

階層アーキテ クチャは、 次のコ ンポーネン ト と シームレ スに統合し ます。

• 「階層 2 (RTOS アダプター )」 - フル機能でオペレーテ ィ ング システム間の移植が可能な抽象的デバイ ス ド ラ イ バー イ ン ターフ ェ イ ス

• 「階層 1 (デバイ ス ド ラ イバー )」 - プロセ ッサ

• シンプルな使用事例またはカ ス タ ム デバイ ス ド ラ イバー開発向けの直接ハード ウ ェ ア イ ン ターフ ェ イ ス

以降のサブセ ク シ ョ ンで各階層について説明し ます。

重要 : 直接ハード ウ ェ ア イ ン ターフ ェ イ スは通常、 記号定数 (manifest constant) と マ ク ロ と し て実装されているため、 デバイ ス ド ラ イバーの関数呼び出しにオーバーヘッ ド を追加し ません。

Zynq-7000 AP SoC SWDG japan.xilinx.com 12UG821 (v10.0) 2015 年 3 月 10 日

Page 13: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

IX-Ref Target - Figure 2-3

図 2-3 : ベア メ タル ド ラ イバーのアーキテ クチャ

Zynq-7000 AP SoC SWDG japan.xilinx.com 13UG821 (v10.0) 2015 年 3 月 10 日

Page 14: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

階層 2 (RTOS アダプ ター )階層 2 は、 RTOS と デバイ ス ド ラ イバー間のアダプ ターです。 こ れは、 階層 1 のデバイ ス ド ラ イバーを RTOS 用 ド ラ イバー モデルの要件に合 う イ ン ターフ ェ イ スへ変換し ます。 各 RTOS に固有のアダプ ターが必要にな る こ と があ り ます。

アダプターの一般的な特徴は次の とお り です。

• RTOS およびデバイ ス ド ラ イバーの階層 1 イ ン ターフ ェ イ ス と直接通信

• RTOS に固有のフ ァ ン ク シ ョ ンおよび識別子を参照 (し たがって、 この階層はオペレーテ ィ ング システム間で移 植不可)

• メ モ リ 管理を使用でき る

• ス レ ッデ ィ ングやタ ス ク間通信などの RTOS サービ ス を使用でき る

• RTOS イ ン ターフ ェ イ スおよびデバイ ス ド ラ イバー要件によ って、 単純または複雑な構造になる

階層 1 (デバイス ド ラ イバー )階層 1 は、 下層ハー ド ウ ェ アへの潜在的な変更か ら ユーザー アプ リ ケーシ ョ ン を保護する抽象化デバイ ス ド ラ イ バー イ ン ターフ ェ イ スです。マ ク ロおよび関数で実装されてお り 、開発者がデバイ スの機能すべてを有効活用でき る よ う に設計されています。 デバイ ス ド ラ イバーは、 オペレーテ ィ ング システム と プロセ ッ サから独立し ているため、 移植性に優れています。

このイ ン ターフ ェ イ スの一般的な特徴は次の とお り です。

• ユーザーがソ リ ューシ ョ ンをすぐに利用でき る よ う にする確実な API。 抽象化された API は、 ハード ウ ェアの変 更からユーザー アプ リ ケーシ ョ ンを保護する

• RTOS やプロセ ッサに依存し ないため、 デバイ ス ド ラ イバーは移植性に優れている

• 入力引数のアサー ト などのラ ン タ イ ム エラー チェ ッ ク、 コ ンパイルによ ってエラーを削除

• デバイ ス機能のサポー ト

• デバイ ス コ ンフ ィ ギュ レーシ ョ ンのパラ メ ーターをサポー ト し、 FPGA ベースのハード ウ ェア デバイ スのパラ メ ーター化

• デバイ スの複数イ ン ス タ ン ス をサポー ト し、 各イ ン ス タ ン スに固有の特性を管理する

• ポー リ ングおよび割 り 込みで駆動される I/O

• 複雑なアプ リ ケーシ ョ ンをサポー ト する ノ ンブロ ッ キング関数呼び出し

• 大規模な メ モ リ フ ッ ト プ リ ン ト

• バイ ト イ ン ターフ ェ イ ス と対照的なデータ転送用バッ フ ァー イ ン ターフ ェ イ ス。 複雑なアプ リ ケーシ ョ ンで API の使用が容易にな る

• 上位階層 と の通信に非同期コールバッ ク を使用し ているため、階層 2 アダプターやアプ リ ケーシ ョ ン ソ フ ト ウ ェ ア と直接通信し ない

直接ハー ド ウ ェ ア イ ン ターフ ェ イス

階層 1 デバイ ス ド ラ イバー内に含まれる イ ン ターフ ェ イ スは、 直接ハー ド ウ ェ ア イ ン ターフ ェ イ スです。 通常、 こ のイ ン ターフ ェ イ スはマ ク ロや明示定数 と し て実装され、 小規模アプ リ ケーシ ョ ンやカ ス タ ム デバイ ス ド ラ イバー を作成でき る よ う 設計されています。 このイ ン ターフ ェ イ スの一般的な特徴は次の とお り です。

• デバイ ス レジス タのオフセ ッ ト やビ ッ ト フ ィ ール ド を定義する定数

• ハード ウ ェア レジス タへア ク セスする ためのシンプルなマ ク ロ

• 小規模な メ モ リ フ ッ ト プ リ ン ト

• エラー チェ ッ ク機能はほ と んどない、 またはま った く ない

Zynq-7000 AP SoC SWDG japan.xilinx.com 14UG821 (v10.0) 2015 年 3 月 10 日

Page 15: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

• 最低限の抽象レベルであ るため、 通常 API はデバイ ス レジス タ と一致する。 API はハード ウ ェ ア デバイ スの変 更からの保護レベルが低い

• デバイ ス コ ンフ ィ ギュ レーシ ョ ン パラ メ ーターをサポー ト し ない

• API へのベース ア ド レ ス入力によ る、 デバイ スの複数イ ン ス タ ン スのサポー ト

• ステー ト な し、 または最小限

• ポー リ ング I/O のみ

• シンプルな使用事例向けのブロ ッ キング機能

• 一般的にバイ ト イ ン ターフ ェ イ スが提供される

ベア メ タル アプ リ ケーシ ョ ンの開発ザイ リ ン ク スの ソ フ ト ウ ェ ア設計ツールは、 さ まざ まな ラ ン タ イ ム環境でのエンベデッ ド ソ フ ト ウ ェ ア アプ リ ケー シ ョ ン開発を容易にし ます。

ザイ リ ン ク スのエンベデッ ド 設計ツールを使用し、 次を含むハー ド ウ ェ ア プラ ッ ト フ ォームのデータ フ ァ イルを作 成し ます。

• XML 形式のハード ウ ェ ア記述フ ァ イル - プロセ ッ サ、 ペ リ フ ェ ラル、 メ モ リ マ ッ プ、 その他のシステム データ 情報が含まれている

• ビ ッ ト ス ト リ ーム フ ァ イル - プロ グ ラ マブル ロ ジ ッ ク (PL) のプロ グ ラ ム データが含まれている (オプシ ョ ン)

• ブロ ッ ク RAM メ モ リ マ ッ プ (BMM) フ ァ イル

• Zynq-7000 AP SoC の FSBL (第 1 段階ブー ト ローダー ) で使用される PL コ ンフ ィ ギ ュ レーシ ョ ン データ

ベア メ タル BSP (ボード サポー ト パッ ケージ) は、 ユーザー アプ リ ケーシ ョ ンの下位層を形成する ラ イブラ リ と ド ラ イバーを集めた ものです。

ラ ン タ イ ム環境は、基本的な機能を提供する単純なセ ミ ホス ト 型のシングル ス レ ッ ド環境で、ブー ト コード、 キ ャ ッ シ ュ機能、 例外処理、 基本のフ ァ イル I/O、 メ モ リ 割 り 当てやその他の呼び出し用の C ラ イ ブ ラ リ サポー ト 、 プロ セ ッ サ ハード ウ ェ ア ア ク セス マ ク ロ、 タ イマー機能、 ベア メ タル アプ リ ケーシ ョ ンをサポー ト する機能などが多数 含まれています。

ハード ウ ェア プラ ッ ト フ ォームのデータ とベア メ タル BSP を使用する こ と で、SDK でベア メ タル アプ リ ケーシ ョ ン の開発、 デバッ グ、 展開が可能です。

Zynq-7000 AP SoC SWDG japan.xilinx.com 15UG821 (v10.0) 2015 年 3 月 10 日

Page 16: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

図 2-4 に、 ベア メ タル アプ リ ケーシ ョ ン開発のフ ロー チャー ト を示し ます。

SDK でのベア メ タル アプ リ ケーシ ョ ン開発の一般的な手順は次の とお り です。

1. 「ハード ウ ェア プラ ッ ト フ ォーム情報を イ ンポー ト する」

2. 「ベア メ タル BSP を作成する」

3. 「ベア メ タル アプ リ ケーシ ョ ンを作成する」

4. 「アプ リ ケーシ ョ ン プロ ジェ ク ト を構築する」

5. 「デバイ スおよび実行アプ リ ケーシ ョ ンをプロ グ ラ ムする」

6. 「アプ リ ケーシ ョ ンをデバッ グする」

7. 「カ ス タ ム IP ド ラ イバーのサポー ト を追加する」

8. 「アプ リ ケーシ ョ ンを展開する」

以降のサブセ ク シ ョ ンでは、 こ れら の手順について説明し ています。 SDK ツールの詳細および使用例については、 SDK オン ラ イ ン ヘルプを参照し て く ださい。

ハー ド ウ ェ ア プ ラ ッ ト フ ォーム情報を イ ンポー ト する

ザイ リ ン ク スのハー ド ウ ェ ア設計ツールは、 ハー ド ウ ェ ア プラ ッ ト フ ォーム プロ ジェ ク ト を作成する ために、 SDK へエク スポー ト でき るハード ウ ェ ア プラ ッ ト フ ォーム データ を作成し ます。SDK では、プロ ジェ ク ト 内でハード ウ ェ ア システムに関する次のよ う な情報を管理し ますが、 これに限った ものではあ り ません。

• BSP 生成用のプロセ ッ サおよびペ リ フ ェ ラル情報

• リ ンカー ス ク リ プ ト 生成用の メ モ リ マ ッ プ情報

X-Ref Target - Figure 2-4

図 2-4 : ベア メ タル アプ リ ケーシ ョ ン開発の概要

Zynq-7000 AP SoC SWDG japan.xilinx.com 16UG821 (v10.0) 2015 年 3 月 10 日

Page 17: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

• カ ス タ ム ロ ジ ッ ク を含む PL をプロ グ ラ ムする際に使用する ビ ッ ト ス ト リ ーム データ

• FSBL およびデバッ ガーで使用される PS コ ンフ ィ ギュ レーシ ョ ン データ

ベア メ タル BSP を作成する ハード ウ ェア プラ ッ ト フ ォーム プロ ジェ ク ト の作成後、 SDK でベア メ タル BSP プロ ジェ ク ト を作成し ます。 ド ラ イ バーおよびラ イブラ リ のソース フ ァ イルは段階ご と に分類され、 ハー ド ウ ェ ア プラ ッ ト フ ォーム (プロセ ッ サ、 IP、 機能セ ッ ト 、 ハー ド ウ ェ ア コ ンフ ィ ギ ュ レーシ ョ ン設定) に基づいてパラ メ ーター化されてヘッ ダー フ ァ イル パラ メ ーターを定義し、 その後コ ンパイルされます。 BPS は、 多重 I/O (MIO) コ ンフ ィ ギ ュ レーシ ョ ンを含む PS で有効 にされた IP や PL 内のカス タ ム ロ ジ ッ ク を反映し ます。 BSP の設定は変更/再生成でき ます。 詳細は、 『OS およびラ イブラ リ 資料コ レ ク シ ョ ン』 (UG643) に含まれる 『ス タ ン ド ア ロ ン BSP』 (UG643) [参照 3] を参照し て く ださい。

サー ドパーテ ィ ツールを使用し てベア メ タル BSP を作成する SDK では、 関連する ド ラ イバーと ラ イブラ リ を設定および構築するためのソース フ ァ イルや メ タデータ フ ァ イルを 含むソ フ ト ウ ェア リ ポジ ト リ へのパス を指定する こ と によ って、その他のエンベデッ ド OS 環境およびツールの BSP を生成でき ます。

ベア メ タル アプ リ ケーシ ョ ンを作成する SDK では、 基本の 「Hello World」 や Dhrystone ベンチマーク アプ リ ケーシ ョ ンから FSBL や TCP/IP Echo サーバーま で、 キ ッ ト に含まれるサンプル プロ グ ラ ム用のテンプレー ト ベースのアプ リ ケーシ ョ ン ジェネレーターを提供し て います。 これらのアプ リ ケーシ ョ ンのデフ ォル ト の リ ンカー ス ク リ プ ト が作成されます。

アプ リ ケーシ ョ ン ジェネレーターは、 ザイ リ ン ク スの C または C++ アプ リ ケーシ ョ ン ウ ィ ザード で起動し ます。 空 のアプ リ ケーシ ョ ンを作成するか、あ るいは既存アプ リ ケーシ ョ ンを イ ンポー ト し てベア メ タル BSP へ移植する こ と も可能です。 各アプ リ ケーシ ョ ン プロ ジェ ク ト は 1 つの BSP プロ ジェ ク ト と関連付け られます。

コー ド 開発ツールには、 エデ ィ ター、 検索、 リ フ ァ ク タ リ ン グな どのツールのほかに、 ベースの Eclipse プ ラ ッ ト フ ォームや CDT プラ グ イ ンで利用でき る機能があ り ます。

アプ リ ケーシ ョ ン プロジ ェ ク ト を構築する

SDK アプ リ ケーシ ョ ン プ ロ ジ ェ ク ト は、 ユーザー管理 (ユーザーが makefile を作成) ま たは自動管理 (SDK が makefile を作成) が可能です。 ユーザー管理のプ ロ ジ ェ ク ト では、 ユーザーが makefile を管理し てアプ リ ケー シ ョ ンの構築を開始する必要があ り ます。

自動管理のプロ ジェ ク ト では、 ソース フ ァ イルが追加または削除された と きに SDK が必要に応じ て makefile を更 新し、変更が保存されて ELF が自動生成される と、 ソース フ ァ イルがコ ンパイルされます。Eclipse CDT の用語では、 アプ リ ケーシ ョ ン プロ ジェ ク ト は Managed Make プロ ジェ ク ト と呼ばれています。

可能な場合は、 SDK が使用するハード ウ ェ ア プラ ッ ト フ ォームおよび BSP に基づいてデフ ォル ト の構築オプシ ョ ン (コ ンパイ ラ、 リ ンカー、 ラ イブラ リ パス オプシ ョ ンなど) を推論し て設定し ます。

デバイスおよび実行アプ リ ケーシ ョ ンをプログラムする ベア メ タル アプ リ ケーシ ョ ンの構築後、 SDK を使用し て PS を コ ンフ ィ ギ ュ レーシ ョ ン し、 PL をプロ グ ラ ム し てア プ リ ケーシ ョ ンを実行し ます。 SDK は、 FSBL で使用される コ ン フ ィ ギ ュ レーシ ョ ン データ を含むシステム レベル コ ンフ ィ ギュ レーシ ョ ン レジス タ (SLCR) を用いて PS を コ ンフ ィ ギュ レーシ ョ ン し ます。

ビ ッ ト ス ト リ ーム (BIT) およびブロ ッ ク メ モ リ マ ッ プ (BMM) データが Zynq-7000 AP SoC へダウ ン ロード される と、 すべてのカ ス タ ム デザイ ン ロ ジ ッ ク が PL へロード 可能にな り ますが、 PS のみ必要なアプ リ ケーシ ョ ンを実行する 場合はこの手順を省略でき ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 17UG821 (v10.0) 2015 年 3 月 10 日

Page 18: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

SDK で実行コ ンフ ィ ギュ レーシ ョ ンを作成し、アプ リ ケーシ ョ ンの ELT フ ァ イルをダウ ン ロード し て実行し ます。ア プ リ ケーシ ョ ン と の相互通信には、 STDIN および STDOUT を使用し て端末表示が可能です。

アプ リ ケーシ ョ ンをデバッ グする

SDK でアプ リ ケーシ ョ ンをデバッ グする手順は、 アプ リ ケーシ ョ ンを実行する場合 と ほ と んど同じですが、 実行コ ン フ ィ ギ ュ レーシ ョ ン を作成する代わ り にデバ ッ グ コ ン フ ィ ギ ュ レーシ ョ ン を作成し ます。 一連の ウ ィ ン ド ウ ( ビ ュー ) によ って、 完全なデバ ッ グ環境が提供されます。 こ のデバ ッ グ方法は、 CDT プラ グ イ ンを追加する Eclipse ベースの IDE を使用し た経験のあ る ユーザーに と っては使い慣れた環境 と な り 、 セ ッ シ ョ ンのス テー ト を示すデ バ ッ グ ウ ィ ン ド ウ (呼び出し ス タ ッ ク、 ソース ビ ューアー、 逆アセンブ リ 、 メ モ リ 、 レ ジ ス タ、 その他のビ ュー、 コ ン ソール) が統合されています。標準的なデバ ッ ガー コマン ド でブレーク ポ イ ン ト を設定し、実行を制御でき ます。

カス タム IP ド ラ イバーのサポー ト を追加する ザイ リ ン ク スのハード ウ ェ ア設計ツールで作成されるハード ウ ェア プラ ッ ト フ ォームのデータには、 PL エ リ アで使 用されるザイ リ ン ク ス IP ブロ ッ ク が取 り 込まれている ため、 これらのブロ ッ ク の ド ラ イバーのサポー ト は、 自動的 にベア メ タル BSP に含まれます。 ハード ウ ェア記述 メ タデータ フ ァ イルを含むカス タ ム IP ブロ ッ ク も、 SDK へイ ン ポー ト されるハード ウ ェア プラ ッ ト フ ォームのデータに取 り 込み可能です。

SDK では、カス タ ム ド ラ イバーおよび メ タデータ を含むソ フ ト ウ ェア リ ポジ ト リ へのパス を指定し、ベア メ タル BSP にそれら を含める こ と も可能です。

カ ス タ ム ド ラ イバー ソース フ ァ イルを管理および構築する ためのラ イブ ラ リ プロ ジ ェ ク ト を作成し、 ベア メ タル BSP と共にラ イブラ リ プロ ジェ ク ト を使用する アプ リ ケーシ ョ ンを構築する こ と もでき ます。

ハード ウ ェア プラ ッ ト フ ォームが変更される と、カ ス タ ム IP ド ラ イバーの設定が必要な場合があ り ます。ソ フ ト ウ ェ ア ド ラ イバーをカ ス タマイ ズするには、 Tcl フ ァ イルのほかにマイ ク ロプロセ ッ サ ド ラ イバー定義 (MDD) フ ァ イル を使用し ます。

設定が必要な ド ラ イバー パラ メ ーターは、 MDD フ ァ イルで指定されます。 .h または .c フ ァ イルの生成手順は、 Tcl フ ァ イルに記述されます。詳細は、『プラ ッ ト フ ォーム仕様フ ォーマ ッ ト リ フ ァ レ ン ス マニュ アル』 (UG1043) [参照 4] を参照し て く ださい。

アプ リ ケーシ ョ ンを展開する

SDK でベア メ タル アプ リ ケーシ ョ ンを開発およびデバッ グ し た後、 ボー ド 上で展開する アプ リ ケーシ ョ ンのブー ト イ メ ージを作成し ます。 SDK には変更可能な FSBL 用のアプ リ ケーシ ョ ン テンプレー ト が含まれている ため、 これ ら を使用し て最終的な FSBL を生成し ます。 FSBL、 ベア メ タル アプ リ ケーシ ョ ン、 および PL プロ グ ラ ム用ビ ッ ト ス ト リ ーム (オプシ ョ ン) が一緒になってブー ト イ メ ージが生成されます。 このブー ト イ メ ージは、 SDK Flash Writer で サポー ト するデバイ スへプロ グ ラ ムでき ます。

ブー ト イ メ ージ フ ォーマ ッ ト の詳細は、 第 3 章 「ブー ト およびコ ンフ ィ ギュ レーシ ョ ン」 を参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 18UG821 (v10.0) 2015 年 3 月 10 日

Page 19: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

Linux アプ リ ケーシ ョ ンの開発 ザイ リ ン ク ス ソ フ ト ウ ェ ア設計ツールは、 ベア メ タル アプ リ ケーシ ョ ンのほかに、 Linux ユーザー アプ リ ケーシ ョ ンの開発をサポー ト し ます。 このセ ク シ ョ ンでは、 Linux アプ リ ケーシ ョ ン開発のフ ローについて簡単に説明し ます。

ザイ リ ン ク スのエンベデッ ド 設計ツールを使用し、 次を含むハー ド ウ ェ ア プラ ッ ト フ ォームのデータ フ ァ イルを作 成し ます。

• XML 形式のハード ウ ェ ア記述フ ァ イル - プロセ ッ サ、 ペ リ フ ェ ラル、 メ モ リ マ ッ プ、 その他のシステム データ 情報が含まれている

• ビ ッ ト ス ト リ ーム フ ァ イル - プロ グ ラ マブル ロ ジ ッ ク (PL) のプロ グ ラ ム データが含まれている (オプシ ョ ン)

• ブロ ッ ク RAM メ モ リ (BMM) フ ァ イル

• Zynq-7000 AP SoC の FSBL (第 1 段階ブー ト ローダー ) で使用される PL コ ンフ ィ ギ ュ レーシ ョ ン データ

Linux は、 オープン ソースのオペレーテ ィ ング システムです。ザイ リ ン ク スのオープン ソース ソ リ ューシ ョ ンは、 シ ングル プロセ ッ サおよび対称型マルチプロセ ッ シング (SMP) をサポー ト し ています。 ザイ リ ン ク スは、 プロセ ッ サ システム (PS) のペ リ フ ェ ラル用の ド ラ イバーを提供し ています。 PL 内にあ る カス タ ム ロ ジ ッ ク用の ド ラ イバーを追 加でき ます。

『OS およびラ イブラ リ 資料コ レ ク シ ョ ン』 (UG643) に含まれる 『ス タ ン ド ア ロ ン BSP』 (UG652) [参照 3] のベア メ タル BSP に関する内容を参照し て く ださい。

Linux の U-Boot ブー ト ローダーに関し ては、 第 4 章 「Linux」 を参照し て く ださい。 第 4 章 には、 よ り 多 く の情報を 提供するザイ リ ン ク ス オープン ソース Wiki への リ ン ク情報も記載されています。

ハード ウ ェア プラ ッ ト フ ォームのデータ と Linux カーネルを使用する こ と で、SDK で Linux ユーザー アプ リ ケーシ ョ ンの開発、 デバッ グ、 展開が可能です。 SDK は、 Linux カーネルのデバッ グをサポー ト し ていません。 このセ ク シ ョ ンでは、 Linux カーネルのコ ンフ ィ ギュ レーシ ョ ンおよび構築プロセスについて説明し ていません。

SDK での Linux ユーザー アプ リ ケーシ ョ ン開発の一般的な手順は次の とお り です。

1. 「Linux を起動する」

2. 「アプ リ ケーシ ョ ン プロ ジェ ク ト を作成する」

3. 「アプ リ ケーシ ョ ン プロ ジェ ク ト を構築する」

4. 「アプ リ ケーシ ョ ンを実行する」

5. 「アプ リ ケーシ ョ ンをデバッ グする」

6. 「PL 内のカス タ ム IP ド ラ イバーのサポー ト を追加する」

7. 「アプ リ ケーシ ョ ンのプロ フ ァ イルを行 う 」

8. 「Linux フ ァ イル システムにアプ リ ケーシ ョ ンを追加する」

9. 「Linux BSP (カーネルまたはフ ァ イル システム) を変更する」

Zynq-7000 AP SoC SWDG japan.xilinx.com 19UG821 (v10.0) 2015 年 3 月 10 日

Page 20: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

図 2-5 に、 Linux アプ リ ケーシ ョ ン開発のフ ロー チャー ト を示し ます。

以降のサブセ ク シ ョ ンでは、 こ れら の手順について説明し ています。 SDK ツールの詳細および使用例については、 SDK オン ラ イ ン ヘルプ [参照 14] を参照し て く ださ い。

Linux を起動する Linux は、 ワーク フ ローに基づいてい く つかの方法で起動でき ます。

• ブー ト イ メ ージをフ ラ ッ シュにプロ グ ラ ム し、 ボード に電源投入または リ セ ッ ト する

• FSBL をダウ ン ロード し て実行し、 その後 U-Boot と Linux カーネルを起動する

• U-Boot を使用し て イ メ ージを ロード し、 実行する

Zynq-7000 AP SoC で Linux を使用する場合、 SDK は PS プラ ッ ト フ ォームを リ モー ト Linux ホス ト と し て見な し、 そ の機能はフ ァ イル システム内のコ ンポーネン ト によ って異な り ます。

フ ラ ッ シュ メ モ リ のオフセ ッ ト は、 メ モ リ タ イプ (NAND、 NOR、 Quad-SPI) によ って異な り ます。 パーテ ィ シ ョ ン には、 FSBL、 U-Boot、 Linux カーネル、 デバイ ス ツ リ ー、 RAMdisk、 およびユーザー アプ リ ケーシ ョ ンを含める こ と が可能です。

ブー ト プロセス中に FSBL が実行されて PS を設定し、 その後 U-Boot が起動し ます。 U-Boot Linux カーネル イ メ ー ジを ロー ド し、 Linux を起動でき ます。 実際のブー ト シーケン スやフ ラ ッ シ ュ イ メ ージの生成プロ セスは、 フ ラ ッ シュの種類やその他の要件によ って異な り ます。た と えば、FSBL を使用し てカス タ ム ロ ジ ッ ク を含む PL を コ ンフ ィ ギュ レーシ ョ ンでき、 U-Boot イ メ ージ内に FSBL を含める こ と が可能です。

X-Ref Target - Figure 2-5

図 2-5 : Linux アプ リ ケーシ ョ ン開発

Zynq-7000 AP SoC SWDG japan.xilinx.com 20UG821 (v10.0) 2015 年 3 月 10 日

Page 21: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

アプ リ ケーシ ョ ン プロジ ェ ク ト を作成する

SDK では、 基本の 「Hello World」 や Dhrystone ブー ト ローダー、 FSBL アプ リ ケーシ ョ ンからベンチマーキング アプ リ ケーシ ョ ンまで、 キ ッ ト に含まれるサンプル プロ グ ラ ム用のテンプレー ト ベースのアプ リ ケーシ ョ ン ジェネレー ターを提供し ています。 アプ リ ケーシ ョ ン ジェネレーターは、 ザイ リ ン ク スの C または C++ アプ リ ケーシ ョ ン ウ ィ ザード で起動し ます。

空のアプ リ ケーシ ョ ン を作成する か、 あ る いは既存アプ リ ケーシ ョ ン を イ ンポー ト し て移植する こ と も可能です。コー ド 開発ツールには、 エデ ィ ター、 検索、 リ フ ァ ク タ リ ン グな どのツールのほかに、 ベースの Eclipse プ ラ ッ ト フ ォームや CDT プラ グ イ ンで利用でき る機能があ り ます。

SDK には、 ブー ト 可能な イ メ ージ (.bin および .mcs) を生成するユーテ ィ リ テ ィ (Bootgen) があ り ます。 ブー ト イ メ ージを作成するには、ユーザーが Bootgen ツールへすべてのイ メ ージおよびロード ア ド レ ス を提供する必要があ り ます。

SDK ではフ ラ ッ シュ デバイ スでイ メ ージを管理する こ と も可能です。

アプ リ ケーシ ョ ンを構築する

SDK アプ リ ケーシ ョ ン プ ロ ジ ェ ク ト は、 ユーザー管理 (ユーザーが makefile を作成) ま たは自動管理 (SDK が makefile を作成) が可能です。 ユーザー管理のプロ ジ ェ ク ト では、 ユーザーが makefile を管理し てアプ リ ケー シ ョ ンの構築を開始し ます。自動管理のプロ ジ ェ ク ト では、 ソース フ ァ イルが追加または削除された と きに SDK が 必要に応じ て makefile を更新し、 変更が保存されて ELF が自動生成される と 、 ソース フ ァ イルがコ ンパイルさ れます。 Eclipse CDT の用語では、 アプ リ ケーシ ョ ン プ ロ ジ ェ ク ト は Managed Make プ ロ ジ ェ ク ト と 呼ばれていま す。 可能な場合は、 SDK が使用するハー ド ウ ェ ア プ ラ ッ ト フ ォームおよび BSP に基づいてデフ ォル ト の構築オプ シ ョ ン (コ ンパイ ラ、 リ ンカー、 ラ イブ ラ リ パス オプシ ョ ンなど) を推論し て設定し ます。

アプ リ ケーシ ョ ンを実行する

コ ンパイルされたアプ リ ケーシ ョ ンを フ ァ イル システムへコ ピーし てアプ リ ケーシ ョ ンを実行するには、 SDK で実 行コ ンフ ィ ギュ レーシ ョ ンを作成し ます。 Zynq-7000 AP SoC で Linux を動作させ、 Linux 環境に SSH が含まれる場合 は、 sftp を使用し て実行コ ン フ ィ ギ ュ レーシ ョ ンが実行可能フ ァ イルを フ ァ イル シ ス テムへコ ピーし ます。 アプ リ ケーシ ョ ン と の相互通信には、 STDIN および STDOUT を使用し て端末表示が可能です。

次のコマン ド シェルを使用し てアプ リ ケーシ ョ ンを実行する こ と も可能です。

• sftp で実行可能フ ァ イルを コ ピーする

• Linux で ssh を用いて実行可能フ ァ イルを実行する

アプ リ ケーシ ョ ンをデバッ グする

SDK でアプ リ ケーシ ョ ンをデバッ グでき ます。SDK でデバッ ガー セ ッ シ ョ ンのオプシ ョ ンを定義するデバッ グ コ ン フ ィ ギュ レーシ ョ ンを作成し ます。 gdbserver が Linux 上でアプ リ ケーシ ョ ンを実行し、 SDK デバッ ガーが TCP を使 用し てアプ リ ケーシ ョ ン と通信し ます。 一連のウ ィ ン ド ウ (ビ ュー ) によ って、 完全なデバッ グ環境が提供されます。

このデバッ グ方法は、 CDT プラ グ イ ンを追加する Eclipse ベースの IDE を使用し た経験のあ るユーザーに と っては使 い慣れた環境 と な り 、 セ ッ シ ョ ンのステー ト を示すデバッ グ ウ ィ ン ド ウ (コール ス タ ッ ク、 ソース ビ ューアー、 逆 アセンブ リ 、 メ モ リ 、 レジス タ、 その他のビ ュー、 コ ン ソール) が統合されています。 標準的なデバッ ガー コマン ド でブレーク ポイ ン ト を設定し、 実行を制御でき ます。

PL 内のカス タム IP ド ラ イバーのサポー ト を追加する

SDK では、 PS 内のペ リ フ ェ ラ ル用の Linux BSP だけでな く 、 PL 内のカ ス タ ム IP 用の Linux BSP も生成でき ます。 Linux BSP を生成する場合は、 SDK がデバイ ス ツ リ ーを生成し ます。 これは、 ブー ト 時にカーネルへ渡されるハード

Zynq-7000 AP SoC SWDG japan.xilinx.com 21UG821 (v10.0) 2015 年 3 月 10 日

Page 22: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 2 章 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの開発フ ロー

ウ ェ ア システムに関する情報を含むデータ構造です。 デバイ ス ド ラ イバーはカーネルの一部 と し て、 または個別モ ジュール と し て提供され、 利用でき るハード ウ ェ ア機能および有効な機能はデバイ ス ツ リ ーで定義されます。

さ らに、ユーザーは動的にロード可能な ド ラ イバーを追加でき ます。Linux ド ラ イバーはこれらの ド ラ イバーをサポー ト し ます。 詳細は、 『OS およびラ イブラ リ 資料コ レ ク シ ョ ン』 (UG643) [参照 ] を参照し て く ださい。

PL 内のカス タ ム IP は柔軟に設定可能であ り 、デバイ ス ツ リ ーのパラ メ ーターによ って、 システム内で利用でき る IP と各 IP で有効なハード ウ ェ ア機能の両方が定義されます。

Linux カーネルおよびブー ト シーケン スの詳細は、 第 4 章 「Linux」 を参照し て く ださい。

アプ リ ケーシ ョ ンのプロ フ ァ イルを行う

Linux ユーザー アプ リ ケーシ ョ ンのプロ フ ァ イルには、 アプ リ ケーシ ョ ンを構築する際に -pg プロ フ ァ イル オプシ ョ ンを使用し ます。ユーザー アプ リ ケーシ ョ ンのプロ フ ァ イルは、gprof ユーテ ィ リ テ ィ に基づき、付随する ビ ューアー に呼び出し グ ラ フなどのデータ を表示し ます。

ユーザー アプ リ ケーシ ョ ン内のすべての実行コード、 カーネル、 割 り 込みハン ド ラー、 およびその他のモジュールを プロ フ ァ イルするために、SDK には呼び出しプロ フ ァ イル機能の可視化をサポー ト する OProfile プラ グ イ ンが備わっ ています。 OProfile は、 システム全体を監視する Linux 用のオープン ソース プロ フ ァ イ ラーです。 サンプル データの 収集には、 カーネル ド ラ イバーおよびデーモン (DAEMON) が必要です。

Linux フ ァ イル システムにアプ リ ケーシ ョ ンを追加する

コ ンパイルされたユーザー アプ リ ケーシ ョ ンおよび必要 と な る共有ラ イブラ リ は、 次のよ う に Linux フ ァ イル シス テムへ追加でき ます。

• Linux 環境に SSH が含まれている場合は、Zynq-7000 AP SoC 上で Linux が動作し ている間に sftp を使用し てフ ァ イルを コ ピーでき ます。

• SDK の場合、 リ モー ト システム エ ク スプローラー (RSE) プラ グ イ ンを利用し、 ド ラ ッ グ アン ド ド ロ ッ プ操作で フ ァ イルを コ ピーでき ます。

• SDK 以外の場合、 フ ァ イル システム イ メ ージを作成し てフ ラ ッ シュへ書き込む前に、 フ ァ イル システム フ ォル ダーへアプ リ ケーシ ョ ン と ラ イブラ リ を追加し ます。

Linux BSP (カーネルまたはフ ァ イル システム) を変更する

Linux U-Boot ブー ト ローダーの詳細は、 第 4 章 「Linux」 を参照し て く ださい。

その他に 82 ページの 「ザイ リ ン ク スのフ ォーラ ム Wiki リ ン ク」 でも情報を提供し ています。

その他の情報この章で説明し た内容に関連する詳細は、 第 1 章 「はじめに」 に記載し ている資料 リ ス ト の中から適切な資料を参照 し て く ださい。『Zynq-7000 All Programmable SoC テ ク ニカル リ フ ァ レ ン ス マニュ アル』 (UG585) [参照 13] の次のセ ク シ ョ ン も参照し て く ださい。

• 「Zynq プロセ ッ シング システムを使用するエンベデッ ド システム デザイ ン」

• 「フ ァブ リ ッ ク での Zynq PS への IP 追加」

Zynq-7000 AP SoC SWDG japan.xilinx.com 22UG821 (v10.0) 2015 年 3 月 10 日

Page 23: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章

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

概要Zynq®-7000 All Programmable SoC デバイ スのブー ト と コ ンフ ィ ギュ レーシ ョ ンには、ス タ テ ィ ッ ク メ モ リ のみを使用 (JTAG は無効) するセキ ュ ア モード と、 JTAG またはス タ テ ィ ッ ク メ モ リ のいずれかを使用する非セキ ュ ア モード が あ り ます。

• 開発およびデバッ グには、 主に JTAG が使用されます。

• デバイ スのブー ト には、 NAND、 パラ レル NOR、 シ リ アル NOR (Quad-SPI)、 およびセキ ュ ア デジタル (SD) フ ラ ッ シ ュ メ モ リ が使用されます。 これらのブー ト モー ド の詳細は、 『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レ ン ス マニュ アル』 (UG585) [参照 13] を参照し て く ださい。

プロセ ッ サ システムは、 2 段階のプロセスでブー ト されます。

• 内部 bootROM にステージ 0 ブー ト コード が格納されてお り 、これによ って一方の ARM® プロセ ッ サおよびペ リ フ ェ ラルを コ ン フ ィ ギ ュ レーシ ョ ン し、 ブー ト デバイ スの 1 つか ら第 1 段階ブー ト ローダー (FSBL) のブー ト コード のフ ェ ッチを開始し ます。 プロ グ ラ マブル ロ ジ ッ ク (PL) は、 bootROM でコ ンフ ィ ギュ レーシ ョ ン されま せん。 bootROM へは書き込みでき ません。

• FSBL ブー ト コード は、 通常 1 つのフ ラ ッ シュ メ モ リ に格納されていますが、 JTAG を介し てダウ ン ロードする こ と も可能です。 bootROM コード が、 選択し たフ ラ ッ シュ メ モ リ からオンチッ プ メ モ リ (OCM) へ FSBL ブー ト コード を コ ピーし ます。OCM へロード される FSBL のサイ ズは、最大 192 キ ロバイ ト に制限されています。FSBL が実行を開始し た後、 256 キ ロバイ ト 全体が利用可能にな り ます。

• FSBL でサポー ト されている も う 1 つのブー ト モード は、 eMMC ブー ト モード です。 こ のモード は、 プラ イマ リ ブー ト モー ド (ブー ト モー ド ピ ンで設定) が QSPI の場合にのみ有効です。 こ のオプシ ョ ンは、 小規模 QSPI フ ラ ッ シュがあ り 、eMMC のよ う な大規模フ ラ ッ シ ュにその他すべてのパーテ ィ シ ョ ンを格納する こ と を望む場合 に使用し ます。 こ の場合、 QSPI フ ラ ッ シ ュに FSBL を格納し、 eMMC フ ラ ッ シ ュにはその他すべてのパーテ ィ シ ョ ンを格納し ます。

• FDBL のソース コード は、 Git サーバーから入手でき ます。 Git サーバーの リ ン クは、 付録 D 「その他の リ ソース および法的通知」 を参照し て く ださ い。 ソース フ ァ イルをダウ ン ロー ド し た後、 コマン ド ラ イ ンから FSBL を 構築でき ます。

FSBL ブー ト コー ド は完全にユーザーが制御でき、 ユーザー ブー ト コー ド と 呼ばれています。 こ のため、 ユーザー システムで求められる あ らゆるブー ト コード を柔軟にイ ンプ リ メ ン ト でき ます。ザイ リ ン ク スは、ユーザーがカ ス タ ム変更でき るサンプル FSBL ブー ト コード を提供し ています。

FSBL ブー ト コード には、 プロセ ッ シング システム (PS) 内のペ リ フ ェ ラルを初期化する コード が含まれます。 FSBL 初期化シーケン スの詳細は、 SDK で提供される FSBL コー ド を参照し て く だ さ い。 ブー ト イ メ ージには、 プロ グ ラ マブル ロ ジ ッ ク (PL) のビ ッ ト ス ト リ ームを含める こ と ができ ます。

PL がコ ンフ ィ ギュ レーシ ョ ン されていな く て も、PS は正常動作でき る状態であ るため、この段階での PL のコ ンフ ィ ギュ レーシ ョ ンは必須ではあ り ません。 PL をブー ト /コ ンフ ィ ギュ レーシ ョ ンする ために FSBL ブー ト コード をカ ス タマイ ズ し、 イーサネ ッ ト 、 USB、 または STDIO などその他の PS ペ リ フ ェ ラルを使用でき ます。

注記 : DDR および SCU は bootROM では有効にでき ません。詳細は、『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レ ン ス マ ニュアル』 (UG585) [参照 13] を参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 23UG821 (v10.0) 2015 年 3 月 10 日

Page 24: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

ブー ト モー ド次に示すブー ト モード を利用でき ます。

• PS マス ター非セキ ュ ア ブー ト

• PS マス ター セキ ュ ア ブー ト

• JTAG/PJTAG ブー ト

これらのブー ト モード の詳細は、『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レン ス マニュ アル』 (UG585) [参照 13] の「ブー ト およびコ ンフ ィ ギュ レーシ ョ ン」 を参照し て く ださい。

ブー ト ステージZynq-7000 AP SoC デバイ スは、次に示すセキ ュ ア ブー ト プロセス と非セキ ュ ア ブー ト プロセス をサポー ト し ていま す。

• 「ステージ 0 ブー ト (bootROM)」

• 「第 1 段階ブー ト ローダー」

• 「第 2 段階ブー ト ローダー (オプシ ョ ン)」

ステージ 0 ブー ト (bootROM)詳細は、 『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レン ス マニュ アル』 (UG585) [参照 13] の 「BootROM」 を参照し て く だ さい。

図 3-1 に、 bootROM コード で FSBL を OCM へロードする フ ローを示し ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 24UG821 (v10.0) 2015 年 3 月 10 日

Page 25: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

31 ページの 「FSBL フ ォールバッ ク機能」 では、 有効な イ メ ージが検出されない場合の bootROM フ ローに関する詳 細情報を提供し ています。

第 1 段階ブー ト ローダー 第 1 段階ブー ト ローダー (FSBL) は、 ブー ト 後に開始し ます。 FSBL は bootROM によ って OCM へロー ド されます。 FSBL の役割は次の とお り です。

• ザイ リ ン ク スのハード ウ ェ ア設計ツールで提供される PS コ ンフ ィ ギュ レーシ ョ ン データ を使用し て初期化を 実行する (42 ページの 「Zynq PS のコ ンフ ィ ギュ レーシ ョ ン」 参照)

• ビ ッ ト ス ト リ ームを使用し て PL をプロ グ ラ ムする (ビ ッ ト ス ト リ ームがあ る場合)

• 第 2 段階ブー ト ローダーまたはベア メ タル アプ リ ケーシ ョ ン コード を DDR メ モ リ へロードする

• 第 2 段階ブー ト ローダーまたはベア メ タル アプ リ ケーシ ョ ンへ渡す

注記 : 第 2 段階ブー ト ローダーまたはベア メ タル アプ リ ケーシ ョ ンへ渡す前に、 FSBL は命令キ ャ ッ シュ を無効にし てキ ャ ッ シュ と MMU を利用不可にし ます (U-Boot は、 これらが無効であ る こ と を前提と し て起動する )。 FSBL の初 期化シーケン スの詳細は、 SDK で提供される FSBL コード を参照し て く ださい。

26 ページの図 3-2 に、 FSBL フ ローの例を示し ます。

X-Ref Target - Figure 3-1

図 3-1 : 非セキュア モー ド でのブー ト フ ロー

Zynq-7000 AP SoC SWDG japan.xilinx.com 25UG821 (v10.0) 2015 年 3 月 10 日

Page 26: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

X-Ref Target - Figure 3-2

図 3-2 : FSBL フ ローの例

System Initialization

Boot device Initialization

Read Partition Header

Authentication Enabled ?

RSA Verify Partition

Partition Encrypted

No

Route Partition to AES-HMACEngine and then Destination

Last Partition ?

Yes

Route Partition to the destination

No

No

Yes

PS partition present?

Yes

JTAG exitNo

Handoff to the PS partition

Yes

Zynq-7000 AP SoC SWDG japan.xilinx.com 26UG821 (v10.0) 2015 年 3 月 10 日

Page 27: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

PL 用ビ ッ ト ス ト リ ーム、第 2 段階ブー ト ローダーまたはベア メ タル アプ リ ケーシ ョ ンのデータ、および第 2 段階ブー ト ローダー、 Linux (またはその他のオペレーテ ィ ング システム)、 あ るいはベア メ タル アプ リ ケーシ ョ ンで使用され るその他のコード とデータは、 フ ラ ッ シュ イ メ ージの各パーテ ィ シ ョ ンに分類されます。 これらの構成図は、43 ペー ジの 「ブー ト イ メ ージのフ ォーマ ッ ト 」 を参照し て く ださい。

FSBL は、 パーテ ィ シ ョ ン ヘッ ダー テーブル内を検索し、 ビ ッ ト ス ト リ ームおよび第 2 段階ブー ト ローダー (または ベア メ タル アプ リ ケーシ ョ ン) のパーテ ィ シ ョ ンを見つけます。 詳細は、 付録 A 「Bootgen の使用」 を参照し て く だ さい。

これらのパーテ ィ シ ョ ンを含むブー ト イ メ ージの生成方法の詳細は、 42 ページの 「ブー ト イ メ ージの生成」 を参照 し て く ださい。

Bootgen プロ グ ラ ム を使用し、 FSBL にビ ッ ト ス ト リ ーム と アプ リ ケーシ ョ ン を結合し ます。 SDK には [Create Zynq Boot Image] ウ ィ ザード オプシ ョ ン (28 ページの図 3-3 参照) があ り 、パーテ ィ シ ョ ン イ メ ージの追加と ブー ト 可能な イ メ ージの生成を行い、 その後フ ラ ッ シュへ格納でき ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 27UG821 (v10.0) 2015 年 3 月 10 日

Page 28: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

次の規則があ り ます。

• 最初のパーテ ィ シ ョ ンは必ず FSBL ELF にな り 、 次にビ ッ ト ス ト リ ーム パーテ ィ シ ョ ン、 その次にアプ リ ケー シ ョ ン ELF と な り ます。

• ビ ッ ト ス ト リ ームはオプシ ョ ン選択です。 FSBL は、 BIF 内の順序で最初のアプ リ ケーシ ョ ンに渡されます。

重要 : BIF フ ァ イル内の順序は重要です。 ビ ッ ト ス ト リ ームは、 必ず FSBL の後のパーテ ィ シ ョ ンに含まれる必要が あ り ます。 ビ ッ ト ス ト リ ームは必須ではな く 、 PL をプロ グ ラ ムする必要があ る場合にのみ必要です。 FSBL は DDR を リ マ ッ プし ません。

し たがって、 1Mb 以下の DDR は使用でき ません。

X-Ref Target - Figure 3-3

図 3-3 : [Create Zynq Boot Image] ウ ィ ザー ド

Zynq-7000 AP SoC SWDG japan.xilinx.com 28UG821 (v10.0) 2015 年 3 月 10 日

Page 29: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

重要 : アプ リ ケーシ ョ ン ELF には 1Mb 以上の実行ア ド レ スがあ り ます。

図 3-4 に FSBL フ ローの概略図を示し ます。

eMMC フ ラ ッ シュ デバイス

Zynq-7000 デバイ スは、 セカンダ リ ブー ト ソース と し て MLC および SLC コ ンフ ィ ギュ レーシ ョ ンの eMMC フ ラ ッ シ ュ をサポー ト し ています。 FSBL は、 eMMC か ら パーテ ィ シ ョ ン を ロー ド で き ます。 ただ し、 こ れはプ ラ イ マ リ ブー ト モード (ブー ト モード ピンで設定) が QSPI の場合にのみ可能です。

こ のオプシ ョ ンは、 小規模 QSPI フ ラ ッ シ ュ があ り 、 eMMC のよ う な大規模フ ラ ッ シ ュ にその他すべてのパーテ ィ シ ョ ンを格納する こ と を望む場合に使用し ます。 こ の場合、 QSPI フ ラ ッ シ ュに FSBL を格納し、 eMMC フ ラ ッ シ ュ にはその他すべてのパーテ ィ シ ョ ンを格納し ます。

このブー ト モード を有効にする手順は次の とお り です。

1. ラ イブラ リ を使用し て BSP を作成し、 SDK で xilffs オプシ ョ ンの enable_mmc を設定し ます。 詳細は、 ラ イブラ リ 資料を参照し て く ださい。

2. SDK で MMC_SUPPORT フ ラ グを有効にし、FSBL を構築し ます。現在、FSBL イ メ ージの構築 fsbl.elf) には、 eMMC サポー ト があ り ます。

3. 唯一のパーテ ィ シ ョ ン と し て FSBL を含めたブー ト イ メ ージを生成し ます (Bootgen を使用)。

X-Ref Target - Figure 3-4

図 3-4 : FSBL フ ロー

Zynq-7000 AP SoC SWDG japan.xilinx.com 29UG821 (v10.0) 2015 年 3 月 10 日

Page 30: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

4. QSPI フ ラ ッ シュにブー ト イ メ ージを格納し ます。

5. Bootgen を使用し、必要と なるその他のパーテ ィ シ ョ ン (ビ ッ ト ス ト リ ームや U-Boot など) を含めたブー ト イ メ ー ジを生成し て eMMC フ ラ ッ シュに格納し ます。

6. ブー ト モード を QSPI に設定し ます。

7. ボード の電源を一旦切って再度入れます。

bootROM が起動し、 QSPI フ ラ ッ シュから OCM へ FSBL がロード されて FSBL へ制御が渡されます。 そし て、 FSBL が eMMC デバイ スから その他すべてのパーテ ィ シ ョ ンを DDR へロード し、 制御がアプ リ ケーシ ョ ンへ渡されます。

この場合、 FSBL は設定されているプラ イマ リ ブー ト モード QSPI (ボード上のブー ト モード ピンで設定) を無視し、 eMMC から その他のパーテ ィ シ ョ ンを ロード し ます。

QSPI フ ラ ッ シュに FSBL と U-Boot を ロードする場合、FSBL で MMC_SUPPORT フ ラ グが有効になる必要はあ り ませ んが、 U-Boot 自動コ ン フ ィ ギ ュ レーシ ョ ン フ ァ イルを更新し、 U-Boot に対し て eMMC フ ラ ッ シ ュか ら残 り のパー テ ィ シ ョ ンを ロードする よ う に示す必要があ り ます。

この場合、 FSBL が U-Boot を DDR へロード し、 制御を U-Boot へ渡し ます。

U-Boot は eMMC フ ラ ッ シュから残 り のパーテ ィ シ ョ ンを ロード し ます。 この場合の留意点と し て、U-Boot は RSA 認 証をサポー ト し ていないため、 eMMC フ ラ ッ シュにあ るパーテ ィ シ ョ ンは RSA によ って認証されません。

RSA は、 最初に実用化された公開キー暗号システムの一つであ り 、 安全なデータ伝送に幅広 く 利用されています。 こ のよ う な暗号システムでは、送信側はプラ イベー ト キーを使用し て イ メ ージを認証し、受信側は公開を使用し て検証 および認証し ます。

FSBL コ ンパイル フ ラグの設定

コ ンパ イル フ ラ グは、 SDK FSBL プ ロ ジ ェ ク ト で [C/C++ Build] の [Settings] を使用し て設定で き ます (30 ページの 図 3-5 参照)。

注記 : これらのフ ラ グを含めるために FSBL ソース フ ァ イルやヘッ ダー フ ァ イルを変更する必要はあ り ません。

表 3-1 に、 FSBL コ ンパイル フ ラ グを示し ます。

X-Ref Target - Figure 3-5

図 3-5 : SDK FSBL のプロパテ ィ 設定

Zynq-7000 AP SoC SWDG japan.xilinx.com 30UG821 (v10.0) 2015 年 3 月 10 日

Page 31: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

FSBL フ ォールバッ ク機能

エラー状態から回復するために、 FSBL はフ ォールバッ ク機能を使用し ます。 つま り 、 別のブー ト 可能な イ メ ージ (最 初に生成された正常なゴールデン イ メ ージ) がフ ラ ッ シ ュ メ モ リ 内にあ る場合は、 bootROM がそれら を ロー ド でき る よ う にな り ます。 FSBL は、 bootROM が次の有効な イ メ ージを ロード でき る よ う に、 マルチブー ト レジス タ を更新 し て ソ フ ト リ セ ッ ト し ます。

注記 : PL コ ンフ ィ ギュ レーシ ョ ン エラーが発生し た場合、 FSBL はフ ォールバッ ク を実行し ます。

eFUSE 内の AES キーを使用するセキ ュ ア ブー ト の場合は、 ソ フ ト リ セ ッ ト を行わずに FSBL によ ってフ ォールバッ ク プ ロ セ スが実行さ れます。 35 ページの 「BBRAM を使用する セキ ュ アなフ ォールバ ッ ク フ ロー」 、 37 ページの 「eFUSE を使用するセキ ュ アなフ ォールバッ ク フ ロー」、 および 41 ページの 「セキ ュ ア ブー ト のサポー ト 」 を参照し て く ださい。

以降のサブセ ク シ ョ ンで詳細を説明し ます。

eFUSE の詳細は、 付録 B の 「Zynq-7000 AP SoC デバイ ス用 LibXil SKey」 を参照し て く ださい。

非セキュアなフ ォールバッ ク プロセス

FSBL の非セキ ュ ア フ ローでは、 次の動作が行われます。

• パワー オン リ セ ッ ト (POR) 後、 bootROM が起動し て Image 1 ブー ト ヘッ ダーを検証し ます。

° エラーがない場合、 bootROM は FSBL へ制御を渡し ます。 そし て FSBL がイ メ ージ内のその他のパーテ ィ シ ョ ンを ロード し ます。

° ブー ト ヘッ ダーにエラーがあ る場合、 bootROM はフ ォールバッ ク機能を利用し て次の有効な イ メ ージを検 索し ます。 図 3-6 の例では、 bootROM が Image 2 ブー ト ヘッ ダーを検証し、 エラーがない場合には Image 2 を FSBL へ渡し、 FSBL が Image 2 の残 り のパーテ ィ シ ョ ンを処理し ます。

° 非セキ ュ ア イ メ ージの場合、 FSBL やその他のイ メ ージのエラーは認識されません。

表 3-1 : コ ンパイル フ ラグ

フ ラグ 説明

FSBL_DEBUG ロ グや メ ッ セージのプ リ ン ト を可能にし ます。

FSBL_DEBUG_INFO レジス タやパーテ ィ シ ョ ン ヘッ ダー ダンプなどの詳細ロ グを取得し ます。

FSBL_DEBUG_RSA RSA 関数で使用される さ らに細かい中間値をプ リ ン ト し ます。

NON_PS_INSTANTIATED_BITSTREAM

ビ ッ ト ス ト リ ームに PS コ ンポーネン ト が含まれていない場合に こ のフ ラ グ を設定し ます。 これによ り 、 FSBL はレベル シフ ターを有効にし ません。

RSA_SUPPORT FSBL の認証機能を有効にし ます。

MMC_SUPPORT FSBL の MMC サポー ト を有効にし ます。 こ のフ ラ グが設定されている場合、 (ブー ト モー ド ピ ンで設定 さ れる ) プ ラ イ マ リ ブー ト デバ イ スの代わ り に eMMC デバイ スからすべてのパーテ ィ シ ョ ンを読み出し ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 31UG821 (v10.0) 2015 年 3 月 10 日

Page 33: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-7 に、 非セキ ュ アなフ ラ ッ シ ュ イ メ ージ フ ォーマ ッ ト を示し ます。

X-Ref Target - Figure 3-7

図 3-7 : 非セキュア フ ォールバッ ク イ メ ージのフ ォーマ ッ ト

Zynq-7000 AP SoC SWDG japan.xilinx.com 33UG821 (v10.0) 2015 年 3 月 10 日

Page 34: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

RSA のみを使用し たフ ォールバッ ク フ ロー

RSA 認証機能が有効な非セキ ュ ア フ ォールバッ ク では、 次の動作が行われます。

• POR 後、 bootROM が起動し て Image 1 のブー ト ヘッ ダーを検証し ます。

• ブー ト ヘッ ダーにエラーがない場合、bootROM は制御を FSBL へ渡し ます。そし て FSBL が残 り のパーテ ィ シ ョ ンを認証し てロード し ます。

• ブー ト ヘッ ダーまたは FSBL イ メ ージにエラーがあ る場合、 bootROM はフ ォールバッ ク機能を使用し て次の有 効な イ メ ージを検索し ます。 この例の Image 2 では、 bootROM が Image 2 のブー ト ヘッ ダーを検証し ます。 ブー ト ヘッ ダーの検証が完了する と、 bootROM は Image 2 の FSBL を認証し て FSBL へ制御を渡し ます。

• この と き、 ビ ッ ト ス ト リ ーム、 U-Boot、 または OS にエラーがあ る と、 FSBL 認証が失敗と な り 、 システムのソ フ ト リ セ ッ ト によ ってフ ォールバッ ク が行われ、 bootROM がゴールデン イ メ ージを検索し ます。

図 3-8 に、 RSA のみを使用し たフ ォールバッ ク フ ローを示し ます。

X-Ref Target - Figure 3-8

図 3-8 : RSA のみを使用し たフ ォールバッ ク フ ロー

Zynq-7000 AP SoC SWDG japan.xilinx.com 34UG821 (v10.0) 2015 年 3 月 10 日

Page 35: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-9 に、 非セキ ュ アなフ ラ ッ シ ュ イ メ ージ フ ォーマ ッ ト を示し ます。

BBRAM を使用するセキュアなフ ォールバッ ク フ ロー

BBRAM を使用するセキ ュ アなフ ォールバッ ク フ ローでは、 次の動作が行われます。

• bootROM が起動し、 RSA が有効な場合には FSBL1 を復号化し て認証し ます。

° 認証成功後、 bootROM は制御を FSBL へ渡し ます。 そし て FSBL がその他のパーテ ィ シ ョ ンを ロード、 復号 化、 および認証 (有効の場合) し、 制御を OS、 U-Boot、 および/またはアプ リ ケーシ ョ ンへ渡し ます。

° Image 1 のブー ト ヘッ ダーにエラーがあ る場合、 bootROM は Image 2 を検索し て FSBL を復号化し、 Image 2 の FSBL へ渡し ます。 そ し て FSBL が残 り のパーテ ィ シ ョ ンの復号化および認証 (有効な場合) をすべて行 い、 U-Boot、 OS、 またはス タ ン ド ア ロ ン アプ リ ケーシ ョ ンへ渡し ます。 このプロセスでは、 FSBL がエラー を含むイ メ ージを検出する と、 フ ォールバッ ク を開始し ます。

X-Ref Target - Figure 3-9

図 3-9 : RSA のみを使用する フ ォールバッ ク パーテ ィ シ ョ ン

Zynq-7000 AP SoC SWDG japan.xilinx.com 35UG821 (v10.0) 2015 年 3 月 10 日

Page 36: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-10 に、 BBRAM を使用するセキ ュ アなフ ォールバッ ク フ ローを示し ます。

X-Ref Target - Figure 3-10

図 3-10 : BBRAM を使用するセキュアなフ ォールバッ ク

Zynq-7000 AP SoC SWDG japan.xilinx.com 36UG821 (v10.0) 2015 年 3 月 10 日

Page 37: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-11 に、 BBRAM を使用するセキ ュ ア ブー ト のフ ラ ッ シュ パーテ ィ シ ョ ンを示し ます。

eFUSE を使用するセキュアなフ ォールバッ ク フ ロー

パワー オン リ セ ッ ト (POR) 時に eFUSE を使用するセキ ュ アなフ ォールバッ ク フ ローは次の とお り です。 この場合、 FSBL はソ フ ト リ セ ッ ト を行わずにフ ォールバッ ク を実行し ます。

• bootROM が起動し、 FSBL* (* = FSBL Prime) を復号化し て認証を行い (有効な場合)、 FSBL へ制御を渡し ます。

• その後 FSBL* が次を実行し ます。

° 暗号化されたフ ォールバッ ク のシナ リ オに従います。

° その他のパーテ ィ シ ョ ンが見つから ない場合は、フ ォールバッ ク を行い、次の有効な イ メ ージを検索し ます。

- Image 2 を検索し て Image 2 のブー ト ヘッ ダーを検証し ます。

- 有効な場合は、Image 2 の FSBL を飛ばし て Image 2 内のその他のパーテ ィ シ ョ ンを処理し、その後 Image 2 のアプ リ ケーシ ョ ンに制御を渡し ます。

Image 2 にヘッ ダー エラーがあ る場合は、 次を実行し ます。

• FSBL* がエラー メ ッ セージを出し て Image 2 にエラーがあ る こ と を示し ます。 (Image 1 の FSBL がフ ァ イルを制 御し、 フ ォールバッ ク を実行し て次のイ メ ージを検索し ます。 )

• FSBL* が Image 3 を検索し た後、 次を実行し ます。

° ブー ト ヘッ ダーを検証し ます。

° RSA が有効の場合にはフ ァ イルを認証し ます。

° Image 3 の FSBL を飛ばし て Image 3 の残 り のパーテ ィ シ ョ ンを処理し ます。

推奨 : セキ ュ ア イ メ ージには認証機能を使用し て く ださい。

X-Ref Target - Figure 3-11

図 3-11 : フ ラ ッ シュ BBRAM のパーテ ィ シ ョ ン

Zynq-7000 AP SoC SWDG japan.xilinx.com 37UG821 (v10.0) 2015 年 3 月 10 日

Page 38: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-12 に、 eFuse を使用するセキ ュ アなフ ォールバッ ク フ ローを示し ます。

* 認証機能を使用する フ ォールバッ ク には、 (FSBL Prime) を使用する必要があ り ます。

注記 : PL の eFUSE に AES キーが格納されている場合のセキ ュ アなフ ォールバッ ク フ ローは、その他のフ ローと異な り ます。 RSA 認証はオプシ ョ ンです。

• FSBL* (Image 1 の FSBL) が認証に失敗し た場合、 bootROM はセキ ュ ア ロ ッ ク ダウ ン モード にな り ます。 し た がって、 Image 1 にエラーがないこ と をユーザーが確認する必要があ り ます。

• Image 1 のブー ト ヘッ ダーが有効でない場合、 bootROM は Image 2 へ移動し、 Image 2 の FSBL が起動し ます。

推奨 : セキ ュ ア モード では、 SRST ではな く 、 割 り 込み用にウ ォ ッチ ド ッ グ タ イマーを設定する こ と を推奨し ていま す。 GPIO を介し て POR を行 う よ う にウ ォ ッチ ド ッ グ割 り 込みを配線でき ます。

X-Ref Target - Figure 3-12

図 3-12 : eFUSE を使用するセキュアなフ ォールバッ ク フ ロー

Zynq-7000 AP SoC SWDG japan.xilinx.com 38UG821 (v10.0) 2015 年 3 月 10 日

Page 39: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

推奨 : キーのソース と し て efuse を使用するセキ ュ アなフ ォールバッ ク には、すべてのイ メ ージに同じ FSBL を備え る こ と を推奨し ています。

図 3-13 に、 eFUSE を使用するセキ ュ ア ブー ト の FSBL* パーテ ィ シ ョ ンを示し ます。

FSBL マルチブー ト

マルチブー ト は、 現在実行中のバージ ョ ン と は異な る FSBL を ロー ド する こ と を望む場合に使用し ます。 た と えば、 FSBL のあ るバージ ョ ン (セルフテス ト や診断を実行する任意のイ メ ージ) を実行し た後、 実際のアプ リ ケーシ ョ ンへ 移動し ます。

この場合、診断を実行する イ メ ージを実行し た後、ユーザーは実際のアプ リ ケーシ ョ ンを含むロード フ ァ イルのシー ケン ス番号を使用し てマルチブー ト レジス タ をア ッ プデー ト し、 ソ フ ト リ セ ッ ト を発行でき ます。

マルチブー ト のシナ リ オ :

• 複数のイ メ ージを使用し て 1 つのデバイ スの機能をセ ッ ト ア ッ プでき る

• 指定時間にデバイ スが実行し なければな ら ない機能に基づいて、 ユーザーがイ メ ージを選択でき る

システムが ソ フ ト リ セ ッ ト によ ってブー ト する と 同時に、 bootROM は最初のロー ド可能な イ メ ージの代わ り にマル チブー ト レジス タ を読み出し、 そのロード可能な イ メ ージへ移動し ます。

X-Ref Target - Figure 3-13

図 3-13 : eFUSE を使用するセキュア ブー ト のフ ラ ッ シュ パーテ ィ シ ョ ン

Zynq-7000 AP SoC SWDG japan.xilinx.com 39UG821 (v10.0) 2015 年 3 月 10 日

Page 40: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

eFUSE 内の AES キーを使用するセキ ュ ア ブー ト の場合、 ユーザーがマルチブー ト のシナ リ オを実行する必要があ り ます (ソ フ ト リ セ ッ ト に依存し ない)。

NAND ブー ト モー ド

NAND ブー ト でマルチブー ト を使用する場合は、次の手順に従って calculate_multiboot() ルーチンを イ ンプ リ メ ン ト す る必要があ り ます。 この API がマルチブー ト ア ド レ ス を計算し ます。

シーケン スは次の とお り です。

1. ブー ト ス ト ラ ッ プ ピンを使用し てブー ト モード を NAND に設定し ます。

2. ユーザー アプ リ ケーシ ョ ン (FSBL/その他アプ リ ケーシ ョ ン) に calculate_multiboot() 関数を イ ンプ リ メ ン ト し ます。

3. マルチブー ト を起動する アプ リ ケーシ ョ ンから calculate_multiboot() API を呼び出し、マルチブー ト ア ド レ ス を計 算し ます。

4. マルチブー ト ア ド レ ス レジス タのマルチブー ト ア ド レ ス をア ッ プデー ト ( 『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レ ン ス マニュ アル』 (UG585) [参照 13] 参照) し、 ソ フ ト リ セ ッ ト を ト リ ガーし ます。

Calculate_multiboot API

1. 使用される NAND のページ サイ ズを計算し ます。

2. NAND の各ページのバイ ト を計算し ます。

3. ブー ト イ メ ージの開始ア ド レ スに基づいて、 ソース ブロ ッ ク番号 (SourceAddress BytesPerBlock) を計算し ます。

4. 各ブロ ッ ク が有効か無効かを確認し て、 ソース ブロ ッ ク よ り も前にあ る無効ブロ ッ ク の数を計算し ます。

LOOP till SourceBlockCheck if the current block is BAD: IF "Block is BAD" THENIncrement the bad block count

ENDIFLOOP END

5. 次の式を用いて Multiboot_Address を計算し ます。

Multiboot_Address = (SourceAddress - (BadBlocks * BytesPerBlock))/(32 * 1024);

QSPI ブー ト モー ド

この QSPI ブー ト モード は x4 モード に対応し ます。 bootROM が x8 モード で最初の 256Mb を検索し ます。 QSPI ブー ト モー ド (QSPI デバイ スが 128Mb 以上) でマルチブー ト を使用する場合は、 128Mb 以下の メ モ リ に収ま る よ う に複 数イ メ ージを配置し ます。

このモード を有効にするには、 128Mb 以下の メ モ リ に収める必要があ るため、 (FSBL+U-Boot) のみを イ メ ージに含め ます。 そし て、 128Mb を超え るその他のパーテ ィ シ ョ ンは、 U-Boot で管理し て く ださい。 こ の場合、 zynq_common.h をア ッ プデー ト し、 必要なパーテ ィ シ ョ ンを ロードする ためのコマン ド を追加し ます。 詳しい使用法および例については、 ザイ リ ン ク スの Zynq-7000 AP SoC ソ リ ューシ ョ ン セン ター [参照 1] を参照し て く ださい。

FSBL のフ ッ ク

FSBL のフ ッ クは、 定義済み関数 (た と えば、 ビ ッ ト ス ト リ ームを ロード し た後に PL IP を初期化) を簡単にプラ グ イ ンでき る よ う にし ます。 FSBL のフ ッ ク用関数は、 fsbl_hook.c フ ァ イル内にあ り ます。

fsbl_hook.c フ ァ イルには次の関数が含まれています。

• FsblHookBeforeBitstreamDload : この関数は、 PL ビ ッ ト ス ト リ ームがダウ ン ロード される前に呼び出され ます。 これは、 カス タマイ ズ し た任意のコード です。 この関数で、 ビ ッ ト ス ト リ ームをダウ ン ロードする前にカス タ ム コード を追加でき ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 40UG821 (v10.0) 2015 年 3 月 10 日

Page 41: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

• FsblHookAfterBitstreamDload : こ の関数は、 アプ リ ケーシ ョ ンへ渡す前に呼び出されます。 アプ リ ケー シ ョ ンへ渡す前に実行する必要があ る カ ス タ ム動作を追加でき ます。

• FsblHookBeforeHandoff : この関数は、 FSBL がアプ リ ケーシ ョ ンへ渡す前に呼び出すフ ッ ク です。 このルー チンへ渡す前に実行すべき カ ス タ ム コード を追加でき ます。

• FsblHookFallback : こ の関数は、 FSBL がフ ォールバッ クする と きに呼び出されます。 フ ォールバッ ク が発 生する と きに、 メ ッ セージ表示、 エラー ロ グ、 あ るいは任意の動作を行 う など、 いずれかのカ ス タ ム コー ド を 追加でき ます。

これらのフ ッ ク機能を使用する こ と によ って、FSBL のフ ロー シーケン スにアプ リ ケーシ ョ ン特有のカス タ ム コード を簡単にプラ グ イ ンでき ます。

DDR ECC の有効化

DDR の ECC サポー ト を有効にする機能です。

• IP イ ンテグレーターで、 こ の機能を有効にし ます。

• Vivado IP イ ンテグレーター Zynq-7000 ブロ ッ ク図の場合、 DDR コ ンフ ィ ギュ レーシ ョ ン ページを使用し ます。

この機能が有効に設定される と、 EEC 機能を有効にする ために FSBL が DDR を初期化し ます。

FSBL は、 ECC エラーの管理をサポー ト し ていません。 し たがって、 ユーザーがプロ グ ラ ム内にエラー対応措置を講 じ る必要があ り ます。

FSBL は DDR を リ マ ッ プし ないため、DDR は 1Mb から開始し ます。 こ のため、 アプ リ ケーシ ョ ン プロ グ ラ ムは 1Mb 以上の DDR の使用を考慮する必要があ り ます。 1Mb よ り 小規模な DDR を使用し なればな ら ない場合は、 ECC 機能 をサポー ト するために、 DRR を初期化する必要があ り ます。

セキュア ブー ト のサポー ト

FSBL は、 次のセキ ュ ア ブー ト 機能をサポー ト し ます。

• AES (Advanced Encryption Standard) 暗号

° 256 ビ ッ ト のキーを使用する AES-CBC

° オンチッ プの eFuse または BBRAM (バッ ク ア ッ プ バッ テ リ 付き RAM) のいずれかに格納される暗号キーを 使用

• HMAC (Keyed-Hashed Message Authentication Code)

° SHA-256 認証エンジン (FIPS180-2)

• RSA 公開キー認証

° 2048 ビ ッ ト の公開キー

FSBL は、 ユーザーが有効にし たセキ ュ ア機能に基づ く セキ ュ ア モード で動作し ます。

RSA 認証が有効の場合、 FSBL は復号化または実行される前に公開キーを使用し て認証されます。 RSA 認証を有効に 設定するには、 ブー ト 可能な イ メ ージを生成する際に Bootgen にオプシ ョ ン と し て こ の機能を与え ます。 パーテ ィ シ ョ ン ヘッ ダーに提供されている コ ンフ ィ ギュ レーシ ョ ンに基づいて、 FSBL はイ メ ージを認証し て復号化し ます。

SHA-2 は、 ア メ リ カ国家安全保障局 (NSA) によ って設計され、 2001年に FIPS と し て標準化された暗号学的ハッ シュ 関数 (SHA-224、 SHA-256、 SHA-384、 SHA-512、 SHA-512/224、 SHA-512/256) です。 SHA は、 Secure Hash Algorithm の略です。 SHA-2 は、 前規格の SHA-1 から大き く 変わ り ま し た。 現在の SHA-2 には 6 つのハッ シュ関数があ り 、 ダ イ ジェ ス ト 長は 224、 256、 384、 512 ビ ッ ト のいずれか と な り ます。

RSA 認証の詳細は、『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レ ン ス マニュ アル』 (UG585) [参照 13] を参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 41UG821 (v10.0) 2015 年 3 月 10 日

Page 42: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

Zynq PS のコ ン フ ィ ギュ レーシ ョ ン

Zynq-7000 コ ン フ ィ ギ ュ レーシ ョ ン イ ン ターフ ェ イ ス を使用し、 ザイ リ ン ク スのハー ド ウ ェ ア設計ツールが DDR、 MIO、 および SLCR レジス タの初期化用コー ド を生成し ます。 ps7* フ ァ イルの作成については、 SDK のヘルプを参 照し て く ださい。

プロ ジェ ク ト デ ィ レ ク ト リ には、 次のフ ァ イルがあ り ます。

• ps7_init.c および ps7_init.h - CLK、 DDR、 および MIO を初期化する場合に使用でき ます。 ps7_init.tcl によ る初期化は、 ps7_init.c 内のコード で実行される初期化と同じです。

• ps7_init.tcl - CLK、 DDR、 および MIO を初期化する場合に使用し ます。 ps7_init.tcl によ る初期化は、 ps7_init.c 内 のコード で実行される初期化 と同じです。

注記 : XMD を 使用 し て ア プ リ ケ ー シ ョ ン を デバ ッ グ す る 場合は、 Tcl フ ァ イ ルが有用です。 た と えば、 ps7_init.tcl フ ァ イルの実行後、 ユーザー アプ リ ケーシ ョ ンを DDR へロー ド し てデバ ッ グを行 う こ と がで き ます。 この場合、 FSBL を実行する必要はあ り ません。

• ps7_init.html - 初期化データが含まれています。

devcfg の PCFG_POR_CNT_4K (オーバーラ イ ド ) ビ ッ ト がセ ッ ト されている場合、 PL の TPoR が短縮されます。 こ のビ ッ ト は、 Vivado の [PS-PL Configuration] オプシ ョ ン画面で対応する チ ェ ッ ク ボ ッ ク ス がオンにな っ てい る と、 FSBL によ ってセ ッ ト されます。詳細は、『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド プロセ ッサ ハード ウ ェ ア デザイ ン』 (UG898) [参照 5] を参照し て く ださい。

注記 : PL ビ ッ ト ス ト リ ーム と初期化データの同期は XPS で維持されます。これらの設定を手動で変更する こ と は、推 奨し ていません。

第 2 段階ブー ト ローダー (オプシ ョ ン)第 2 段階ブー ト ローダーは、 ユーザーが設計する オプシ ョ ンです。 第 2 段階ブー ト ローダーの例は、 49 ページの 「U-Boot」 を参照し て く ださい。

ブー ト イ メ ージの生成ROM やフ ラ ッ シ ュ メ モ リ のプロ グ ラ ムに最適な 1 つのブー ト イ メ ージ フ ァ イルを作成する ためのユーテ ィ リ テ ィ プロ グ ラ ム (Bootgen) があ り ます。 このプロ グ ラ ムは、 必要なブー ト ヘッ ダーを構築し て後続パーテ ィ シ ョ ンを定義 する テーブルを追加し、 パーテ ィ シ ョ ンの入力データ フ ァ イル (ELF フ ァ イル、 FPGA ビ ッ ト ス ト リ ーム、 その他の バイナ リ フ ァ イル) を処理する こ と によ ってブー ト イ メ ージを生成し ます。 各パーテ ィ シ ョ ンに対し て特定のデス テ ィ ネーシ ョ ン メ モ リ ア ド レ ス を割 り 当てた り 、ア ラ イ メ ン ト 要件を与え る機能があ り ます。 また、各パーテ ィ シ ョ ンにおける暗号化、 認証またはチェ ッ ク サムをサポー ト し ます。

こ のユーテ ィ リ テ ィ は、 ブー ト イ メ ージ フ ォーマ ッ ト (BIF) フ ァ イ ル と い う コ ン フ ィ ギ ュ レーシ ョ ン フ ァ イ ル *.bif) で駆動されます。

上級認証フ ローでは、 Bootgen を使用し てオフ ラ イ ンで符号化でき る中間のハッ シュ フ ァ イルを出力でき ます。 それ 以外の場合、Bootgen は提供されたプラ イベー ト キーを使用し、ブー ト イ メ ージ内に含まれる認証証明 (Authentication certificates) を符号化し ます。

ブー ト イ メ ージのフ ォーマ ッ ト は、ハード ウ ェア要件と ソ フ ト ウ ェア要件の両方に対応し ます。ブー ト イ メ ージ ヘッ ダーは、 シングル パーテ ィ シ ョ ン (通常は FSBL) を ロー ド する Zynq-7000 bootROM ローダーで必要です。 その他の ブー ト イ メ ージは、 FSBL によ ってロード されて処理されます。

ユーテ ィ リ テ ィ の詳細は、 付録 A 「Bootgen の使用」 を参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 42UG821 (v10.0) 2015 年 3 月 10 日

Page 43: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

Bootgen コマン ドの例

簡単なコマン ド ラ イ ン例を示し ます。

bootgen –image myDesign.bif –o i myDesignImage.bin

この例では、 Bootgen が、 ブー ト ヘッ ダーと それに続いて myDesign.bif に記述されたデータ フ ァ イルから作成さ れたデータ パーテ ィ シ ョ ンを含む myDesignImage.bin と い う フ ァ イルを生成し ます。

ブー ト イ メ ージのフ ォーマ ッ ト

ブー ト イ メ ージの構成内容は次の とお り です。

• bootROM ヘッ ダー

• FSBL イ メ ージ

• 1 つまたは複数パーテ ィ シ ョ ンのイ メ ージ

• 未使用空間 (該当する場合のみ)

44 ページの図 3-14 にブー ト イ メ ージ フ ォーマ ッ ト のレ イ ア ウ ト を示し ます。

注記 : FSBL の暗号機能はオプシ ョ ンです。

Zynq-7000 AP SoC SWDG japan.xilinx.com 43UG821 (v10.0) 2015 年 3 月 10 日

Page 44: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

X-Ref Target - Figure 3-14

図 3-14 : Zynq セキュア ブー ト イ メ ージのフ ォーマ ッ ト

Zynq-7000 AP SoC SWDG japan.xilinx.com 44UG821 (v10.0) 2015 年 3 月 10 日

Page 45: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

認証証明

認証証明は、認証済みの各パーテ ィ シ ョ ンの末尾に追加されます。すべてのイ メ ージ ヘッ ダーおよびパーテ ィ シ ョ ン ヘッ ダーの後に、 これらのヘッ ダーの内容を認証するオプシ ョ ンの認証証明ヘッ ダーが現れます。

すべての整数は、 リ ト ルエンデ ィ アン方式で格納され、 2048 ビ ッ ト の係数が含まれています。

表 3-2 に、 認証証明のオフセ ッ ト 値、 サイ ズ、 フ ィ ール ド、 および注記を示し ます。

FSBL の負荷を軽減する ために、 BootGen はべき乗剰余を求める ためのモンゴ メ リ リ ダ ク シ ョ ンで使用される係数の 拡張をあ らかじめ計算し ます。 これらの値は、 係数フ ィ ール ド の後の認証証明の中に格納されます。 表 3-3 に、 認証 証明のビ ッ ト 、 フ ィ ール ド、 および値を示し ます。

表 3-2 : 認証証明

オフセ ッ ト フ ィ ールド 説明

0x00 認証のヘッ ダー 0x01010000 – 表 3-3 参照

0x04 証明のサイ ズ 0x6C0

0x08 ユーザー定義フ ィ ール ド 56 バイ ト

0x040 PPK 係数 256 バイ ト

0x140 PPK 係数の拡張 256 バイ ト

0x240 PPK 指数 4 バイ ト (0x00010001 を推奨)

0x244 0 をパデ ィ ング 60 バイ ト - (0x00000000)

0x280 SPK 係数 256 バイ ト

0x380 SPK 係数の拡張 256 バイ ト

0x480 SPK 指数 4 バイ ト (0x00010001 を推奨)

0x484 0 をパデ ィ ング 60 バイ ト - (0x00000000)

0x4C0 SPK シグネチャ 256 バイ ト

0x5C0 パーテ ィ シ ョ ン シグネチャ 256 バイ ト

表 3-3 : ビ ッ ト 認証証明ヘ ッ ダー

ビ ッ ト フ ィ ールド 値

3:16 予約 0s

15:14 認証証明のフ ォーマ ッ ト 00 : PKCS #1 v1.5

13:12 認証証明のバージ ョ ン 00 : 現在の AC

11 PPK キー タ イプ 0 : ハッ シュ キー

10:9 PPK キー ソース 0 : SPK 有効

8 SPK 有効 1 : eFUSE

7:4 公開強度 0 : 2048

3:2 ハッ シュ アルゴ リ ズム 0 : ハッ シュ アルゴ リ ズム

1:0 SHA256 1 : RSA

Zynq-7000 AP SoC SWDG japan.xilinx.com 45UG821 (v10.0) 2015 年 3 月 10 日

Page 46: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 3 章 : ブー ト およびコ ン フ ィ ギュ レーシ ョ ン

図 3-15 に、 Zynq-7000 AP SoC Linux のブー ト イ メ ージ パーテ ィ シ ョ ンの例を示し ます。

bootROM ヘ ッ ダーのフ ォーマ ッ トbootROM ヘッ ダーのフ ォーマ ッ ト は、『Zynq-7000 AP SoC テ ク ニカル リ フ ァ レン ス マニュ アル』 (UG585) [参照 13] の 第 6 章の bootROM ヘッ ダー パラ メ ーターの表を参照し て く ださい。

X-Ref Target - Figure 3-15

図 3-15 : Zynq-7000 AP SoC Linux のブー ト イ メ ージ パーテ ィ シ ョ ンの例

Zynq-7000 AP SoC SWDG japan.xilinx.com 46UG821 (v10.0) 2015 年 3 月 10 日

Page 47: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 4 章

Linux

はじめにザイ リ ン ク スが提供する Zynq®-7000 AP SoC Linux は、 オープン ソース ソ フ ト ウ ェ ア (kernel.org のカーネル) を ベースにし ています。 ザイ リ ン ク スは、 Linux カーネルのザイ リ ン ク ス固有部分 ( ド ラ イバーおよびボー ド サポー ト パッ ケージ BSP) のサポー ト を提供し ています。

組み込み Linux フ ォーラ ムでも、Linux のサポー ト を提供し ています。多 く のオープン ソース プロ ジェ ク ト と同様に、 ザイ リ ン ク ス Zynq-7000 に特定されない部分の Linux に関し ては、 オープン ソース メ ー リ ング リ ス ト の利用を推奨 し ています。

ザイ リ ン ク ス Zynq Linux およびザイ リ ン ク ス オープン ソース プロ ジ ェ ク ト の詳細は、 Zynq-7000 AP SoC ソ リ ュー シ ョ ン セン ター [参照 1] を参照し て く ださ い。

ザイ リ ン ク スは、 公開 Git サーバーを使用し て Linux カーネル、 ザイ リ ン ク ス ボー ド 用 BSP、 および特定 IP 用 ド ラ イバーを提供し ているため、サード パーテ ィ 企業はザイ リ ン ク ス ハード ウ ェ ア用の組み込み Linux デ ィ ス ト リ ビ ュー シ ョ ンを構築でき ます。 Git サーバーを利用する こ と によ って、 デ ィ ス ト リ ビ ューシ ョ ンを購入する と い う よ り も独 自の Linux システムを開発する こ と が可能です。

注記 : すべてのザイ リ ン ク ス IP がサポー ト されているわけではあ り ません。

Git サーバーと Gitk コマン ドザイ リ ン ク スは、 Git を使用する こ と で Linux オープン ソース コ ミ ュニテ ィ と の相互作用を容易にし ています。 た と えば、 パッチは自動的にカーネルの メ イ ン ラ イ ンへプ ッ シュ されます。 また、 ユーザーが Git ツ リ ーからパッチを取 得し、 それをカーネルへ適用する こ と も可能です。 さ らに、 Git はコ ンフ ィ ギ ュ レーシ ョ ンの管理も行 う ため、 カー ネルの変更はユーザーがすべて把握でき ます。

• Git ツ リ ーは http://git.xilinx.com にあ り 、 リ ポジ ト リ のスナッ プシ ョ ッ ト 取得方法も含まれています。 ウ ェブサイ ト でコード を参照でき ます。

公開 リ ポジ ト リ の メ イ ン ブラ ンチがマス ターと な り ます。 こ こには、 最も信頼性が高 く 、 ザイ リ ン ク スによ る検証が 完了し た コード のみが含まれます。

• Git の概要 : http://git-scm.com

• Git に関する資料 : http://git-scm.com/documentation

• Git のダウ ン ロード : http://git-scm.com/download

gitk ツールは、 Git ツ リ ーをグ ラ フ ィ カルに表示する ためのツールです。 これは、 ツ リ ー内のブラ ンチ検索に有効で す。 Git を イ ン ス ト ールし、 コマン ド ラ イ ンから gitk を使用し て実行でき ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 47UG821 (v10.0) 2015 年 3 月 10 日

Page 48: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 4 章 : Linux

Linux BSP に含まれる もの

カーネル

Linux カーネルは、システムのボード と ド ラ イバー向けに生成されたボード サポー ト パッ ケージ (BSP) と共に含まれ ます。 カーネルにはフ ァ イル システムが必要 と な る ため、 カーネルを起動する ためのフ ァ イル システムを作成する 必要があ り ます。

注記 : カーネルが含まれるデ ィ レ ク ト リ をカーネル ツ リ ーと いいます。 こ こ では、 Linux カーネルのデ ィ レ ク ト リ 構 造を理解し ている こ と を前提に説明し ています。

48 ページの図 4-1 には、 さ ま ざまな機能が異な る層 と どのよ う に関連し ているかをわか り やす く 示すために、 Linux カーネルの上位図を示し ています。

ド ラ イバー

ザイ リ ン ク ス SDK ド ラ イバーについては、 オン ラ イ ンの資料を参照し て く ださい。

X-Ref Target - Figure 4-1

図 4-1 : Linux カーネル

Zynq-7000 AP SoC SWDG japan.xilinx.com 48UG821 (v10.0) 2015 年 3 月 10 日

Page 49: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

第 4 章 : Linux

U-Bootマイ ク ロプロセ ッ サは メ モ リ 内にあ る コード を実行でき る一方で、オペレーテ ィ ング システムは通常、ハードデ ィ ス ク、 CD-ROM、 USB デ ィ ス ク、 ネ ッ ト ワーク サーバー、 その他の永久記憶媒体などの大容量デバイ ス内にあ り ます。 プロセ ッ サに電源が投入される と きに、 メ モ リ 内にオペレーテ ィ ング システムがない場合は、 別の媒体にあ る OS を メ モ リ 内に移動させるための特別な ソ フ ト ウ ェ アが必要です。 このソ フ ト ウ ェアがブー ト ローダーと呼ばれる小さ なコード です。

U-Boot は、 Linux コ ミ ュ ニテ ィ で頻繁に使用されているオープン ソースのブー ト ローダーであ り 、 ザイ リ ン ク ス も Linux 用の MicroBlaze™ プロセ ッ サや Zynq-7000 AP プロセ ッ サで使用し ています。

ブー ト ローダーは、Linux カーネルが必ずし も初期化するわけではないハード ウ ェア (シ リ アル ポー ト および DDR な ど) を初期化し ます。 シス テム プロバイ ダーは、 通常、 フ ラ ッ シ ュ メ モ リ 内に U-Boot を置いています。 U-Boot は、 第 2 段階ブー ト ローダーの代表的な例です。

U-Boot は、 便利な機能を数多 く 提供し ます。 た と えば、 イーサネ ッ ト 、 フ ラ ッ シュ メ モ リ 、 SD/MMC、 および USB から イ メ ージを ロード し て実行でき るだけでな く 、 メ モ リ から カーネル イ メ ージを開始でき ます。 また、 メ モ リ の読 み出しや書き込み動作など さ まざまな コマン ド を使用する コマン ド イ ン タープ リ ターの利用が可能にな り 、 ping コ マン ド を用いたネ ッ ト ワーク動作も可能にな り ます。

最新情報は、 次の リ ン ク を参照し て く ださい。

• Zynq U-boot

• Zynq リ リ ース ノー ト

Zynq-7000 AP SoC SWDG japan.xilinx.com 49UG821 (v10.0) 2015 年 3 月 10 日

Page 50: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A

Bootgen の使用

はじめにBootgen はブー ト 可能な イ メ ージを作成する ス タ ン ド ア ロ ン ツールで、 Zynq®-7000 AP SoC プロ セ ッ サに最適です。 こ のプ ロ グ ラ ムがパーテ ィ シ ョ ン リ ス ト の先頭にヘ ッ ダー ブ ロ ッ ク を付けてブー ト イ メ ージを構築し ます。 オプ シ ョ ン と し て、 ビ ッ ト ス ト リ ームおよびパーテ ィ シ ョ ン を暗号化し て、 Bootgen を使用し て認証でき ます。 出力は、 システムのブー ト フ ラ ッ シュ メ モ リ へ直接プロ グ ラ ムでき る シングル フ ァ イルです。 認証や暗号化をサポー ト する その他のペ リ フ ェ ラル フ ァ イルも、 こ のツールで生成でき ます。

こ のツールは、 SDK へ統合されて イ メ ージ生成を自動化し た り 、 あ るいはコマン ド ラ イ ン ベースのス ク リ プ ト で使 用でき ます。

BIF フ ァ イルの構文BIF フ ァ イルは、 ブー ト イ メ ージの各コ ンポーネン ト をブー ト 順に指定し、 オプシ ョ ンで各イ メ ージ コ ンポーネン ト に属性を適用でき る よ う にし ます。 各イ メ ージ コ ンポーネン ト は、 通常 1 つのパーテ ィ シ ョ ンにマ ッ プ されます が、 1 つのイ メ ージ コ ンポーネン ト が メ モ リ 内で連続する場合は、 1 つのイ メ ージ コ ンポーネン ト が複数パーテ ィ シ ョ ンにマ ッ プ されます。

BIF フ ァ イルの構文は次の形式と な り ます。

name “:”“{“ "[“attributes”]” datafile...“}”

• name (フ ァ イル名) と {...} (グループ化) を使用し、 ROM 内のパーテ ィ シ ョ ンに分類する フ ァ イルを ま と めます。 {...} には 1 つまたは複数のデータ フ ァ イルが リ ス ト されます。

• フ ァ イルの拡張子から イ メ ージ データの種類 (ELF、 BIT、 RBT、 または INT - [init]属性を持つデータ フ ァ イル) が推論され、 フ ァ イルの種類に基づいて必要 と なる特別な前処理が行われます。

• データ フ ァ イルは、 フ ァ イル名の前に構文 ["attributes"] を使用する こ と で、 オプシ ョ ンで属性を持つこ と ができ ます。

• 属性によ って、 データ フ ァ イルに何らかの特性が適用されます。

• 複数の属性があ る場合は、 カンマ (,) で区切って並べる こ と ができ ます。 その場合の順序は重要ではあ り ません。 属性は、 1 つあ るいは複数のキーワード を引用符で囲みます。

• 現在のデ ィ レ ク ト リ にフ ァ イルがない場合は、 フ ァ イル名を含むフ ァ イル パス を追加でき ます。 フ ァ イルの リ ス ト 方法は自由形式で、 1 行にすべてを リ ス ト (スペースで区切る、 最低 1 スペースは必要) し て も、 1 つずつと改 行し て もかまいません。

• スペースは無視されるため、 読みやすいよ う に追加し て も問題あ り ません。

• C 形式のブロ ッ ク コ メ ン ト /*...*/、 または C++ 形式の行コ メ ン ト //... を使用でき ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 50UG821 (v10.0) 2015 年 3 月 10 日

Page 51: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

BIF フ ァ イルの例

次に、 例と し てシンプルな BIF フ ァ イルの一部を示し ます。

// A simple BIF file example.

the_ROM_image: { [init]init_data.int [bootloader]myDesign.elf Partition1.bit Partition1.rbt Partition2.elf }

次に、 パーテ ィ シ ョ ンが暗号化および認証される BIF フ ァ イルの例を示し ます。

image { [aeskeyfile]secretkey.nky /* this is the key file used for AES */ [pskfile]primarykey.pem /* primary secret key file for authen.*/ [sskfile]secondarykey.pem /* secondary secret key file for authen.*/ [bootloader,authentication=rsa] fsbl.elf /*first stage bootloader */ [authentication=rsa]uboot.elf /* second stage bootloader */ linux.gz /* OS image (compressed)*/ }

BIF フ ァ イルの属性

BIF フ ァ イルには、 次の 2 種類の属性があ り ます。

• bootloader - ELF データ フ ァ イルを FSBL と し て認識し ます。

° これらの属性は ELF フ ァ イルのみに適用可能

° 1 フ ァ イルのみ FSBL に指定可能

• init - INT ([init] 属性を持つデータ フ ァ イル) を レジス タ初期化フ ァ イル と し て認識し ます。

次の表に、 BIF フ ァ イルの属性および属性タ イプを示し ます。

:

表 A-1 : BIF フ ァ イルの属性

識別子 説明

aeskeyfile AES キー フ ァ イル

alignment = <value> パ ッ ケージのバイ ト ア ラ イ メ ン ト を設定。 オフセ ッ ト では使用 不可。 パーテ ィ シ ョ ンは、 こ の値の倍数値に揃え ら れる までパデ ィ ング される

authentication = <value> パーテ ィ シ ョ ンの認証を指定。 <value> は、 な し、 または RSA に指定可能

bootimage 前回生成 さ れたブー ト イ メ ージか ら パーテ ィ シ ョ ン データ を ロード

bootloader FSBL を含むパーテ ィ シ ョ ン

checksum =<value> チェ ッ ク サムは md5 と し て指定

encryption = <value> 暗号機能を指定 (none または aes)

headersignature = <filename> ヘッ ダー シグネチャ を認証証明ヘッ ダーにイ ンポー ト

Zynq-7000 AP SoC SWDG japan.xilinx.com 51UG821 (v10.0) 2015 年 3 月 10 日

Page 52: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

次の表に、 Bootgen でサポー ト される フ ァ イルを示し ます。

load = <value> パーテ ィ シ ョ ンが書き込まれる ロード ア ド レ ス を設定

offset = <value> 絶対オフセ ッ ト を設定

ppkfile パーテ ィ シ ョ ン を認証する ために使用する プ ラ イ マ リ 公開キー(PPK)

presign =<filename> パーテ ィ シ ョ ン シグネチャ を認証証明にイ ンポー ト

pskfile パーテ ィ シ ョ ン を符号化する ために使用する プ ラ イ マ リ 非公開キー (PSK)

psksignature PSK を使用し て作成された SPK シグネチャ

reserve = <value> パーテ ィ シ ョ ン用の総 メ モ リ 容量を確保。 パーテ ィ シ ョ ンは、 この領域までパデ ィ ング される

spkfile パーテ ィ シ ョ ン を認証する ために使用する セカ ンダ リ 公開キー(SPK)

sskfile パーテ ィ シ ョ ン を符号化する ために使用する セカ ンダ リ 非公開キー (SSK)

startup = <value> ロー ド 後のパーテ ィ シ ョ ンのエン ト リ ア ド レ ス を設定。 こ の識 別子は、 実行し ないパーテ ィ シ ョ ンでは無視される

udf_data =<filename> 認証証明の User Defined Field (ユーザー定義 フ ィ ール ド ) へ コ ピーされる最大 56 バイ ト のデータ を含むフ ァ イルを イ ンポー ト

xip_mode eXecute In Place モード が使用される こ と を示す

partition_owner = <fsbl|uboot> パーテ ィ シ ョ ンが FSBL または U-Boot のいずれでロード される かを指定する

表 A-2 : Bootgen でサポー ト される フ ァ イル

拡張子 説明 注記

.bin バイナ リ 未処理のバイナ リ フ ァ イル

.bit/.rbt ビ ッ ト ス ト リ ーム BIT フ ァ イル ヘッ ダーを除 く

.dtb バイナ リ 未処理のバイナ リ フ ァ イル

image.gz バイナ リ 未処理のバイナ リ フ ァ イル

.elf ELF シンボル とヘッ ダーを除 く

.int レジス タ初期化

.nky AES キー

.pk1/.pub/.pem RSA キー

表 A-1 : BIF フ ァ イルの属性 (続き)

識別子 説明

Zynq-7000 AP SoC SWDG japan.xilinx.com 52UG821 (v10.0) 2015 年 3 月 10 日

Page 53: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

初期化ペアおよび INIT フ ァ イルの属性 ブー ト イ メ ージ ヘッ ダーの固定部分の最後に 256 の初期化ペアがあ り ます。1 つのペアは、32 ビ ッ ト のア ド レ ス値と 32 ビ ッ ト のデータ値で構成される ため、 初期化ペアはこれにし たがって指定されます。 初期化が実行されない場合、 ア ド レ ス値はすべて 0xFFFFFFFF と な り 、 データ値はすべて 0x00000000 と な り ます。

これらの初期化ペアは、 デフ ォル ト でフ ァ イル拡張子が .int のテキス ト フ ァ イルで設定されますが、 拡張子は変更で き ます。

こ のフ ァ イルは、 フ ァ イル名の前に [init] フ ァ イル属性を使用する こ と によ って、 .bif 内で INIT フ ァ イル と し て認識 されます。

データ フ ォーマ ッ ト では、 動作指示子の後に次の情報が続き ます。

• ア ド レ ス値

• = 文字

• データ値

ラ イ ン (行) は、 セ ミ コ ロ ン (;) で終わ り ます。 次に、 「.set.」 動作指示子の例を示し ます。

.set.0xE0000018 = 0x00000411; // This is the 9600 uart setting.

Bootgen は、 最大で 256 ペアまで、 INT フ ァ イルからのブー ト ヘッ ダー初期化データ を埋めていき ます。 bootROM が 実行される と、 ア ド レ ス値を参照し ます。 その値が 0xFFFFFFFF でなければ、 bootROM はア ド レ ス値に続 く 次の 32 ビ ッ ト 値を使用し てア ド レ スの値を書き込みます。 bootROM は、 ア ド レ ス値が 0xFFFFFFFF になる まで、 または 256 番目の初期化ペアへ到達する まで、 初期化ペアを順に設定し続けます。

Bootgen では、 次に示す演算子を含む式の評価 (優先を強調するネス ト されたかっ こ を含む) を実行でき ます。

* = 乗算/ = 除算% = モジュ ロ除算+ = 加算- = 減算~ = 論理否定>> = 右シフ ト<< = 左シフ ト& = バイナ リ AND| = バイナ リ OR^ = バイナ リ NOR

数値は 16 進数 (0x)、 8 進数 (0o)、 または 10 進数が可能です。 数表現は、 128 ビ ッ ト の固定小数点整数と し て保持され ます。 読みやすいよ う に、 表現演算子の前後にスペース を入れる こ と ができ ます。

プ リ プロセ ッサでは、 BIF および INT フ ァ イルのパラ メ ーター指定が可能ですが、 コマン ド ラ イ ンから選択でき る複 数コ ンフ ィ ギュ レーシ ョ ンを持つ BIF および INT フ ァ イルのパラ メ ーター指定も可能です。 INT フ ァ イル と一緒にイ ン クルード フ ァ イルを用いる と、 そのま まの値ではな く 、 記号化された値を使用でき る よ う になるため便利にな り ま す。

次に例を示し ます。

#include "register_defs.h"

.set. kBAUD_RATE_REG = ( k9600BAUD | kDOUBLE_RATE ) << BAUD_BITS;

#if などの指示子を使用し て異なる コ ンフ ィ ギュ レーシ ョ ンを選択し、BIT フ ァ イルや INT フ ァ イルで使用される値を 渡すこ と も可能です。

Zynq-7000 AP SoC SWDG japan.xilinx.com 53UG821 (v10.0) 2015 年 3 月 10 日

Page 54: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

暗号化の概要暗号化のプラ イベー ト キーは、 eFUSE またはブロ ッ ク RAM メ モ リ 内に格納されます。

こ のキーは、 SDK に付属する ス タ ン ド ア ロ ン ド ラ イバーを使用し て eFUSE/ブロ ッ ク RAM メ モ リ に書き込むこ と が でき ます。 詳細は、 『Zynq-7000 All Programmable SoC のセキ ュ ア ブー ト 』 (XAPP1175) [参照 12] を参照し て く ださい。

bootROM は暗号プラ イベー ト キーを使用し、最初の FSBL パーテ ィ シ ョ ン ブー ト イ メ ージをデコード し ます。実際、 復号化は Zynq-7000 ハード ウ ェ アの AES/HMAC エンジンで行われます。

パーテ ィ シ ョ ンを暗号化するには、 次の手順を実行し ます。

1. コマン ド ラ イ ンに –encrypt オプシ ョ ンを適用し、 変数は efuse または bbram を使用し ます。

2. BIF フ ァ イルに [aeskeyfile] 属性を使用する キー フ ァ イルを リ ス ト し ます。

3. 暗号化されるべき BIF フ ァ イル内の各イ メ ージ フ ァ イルに [encryption=aes] 属性が適用されている こ と を確認し ます。

次にコマン ド ラ イ ンの例を示し ます。

Bootgen ….–encrypt efuse

Example BIF file: image:{ [aeskeyfile]secretkey.nky [bootloader,encryption=aes] fsbl.elf [encryption=aes]uboot.elf linux.gz}

認証の概要Zynq-7000 RSA 認証では、 プラ イマ リ キーと セカンダ リ キーを使用し ます。 プラ イマ リ キーがセカンダ リ キーを認 証し、 セカンダ リ キーはパーテ ィ シ ョ ンを認証し ます。

キーを示す頭文字の最初のアルフ ァベッ ト は、 プラ イマ リ の場合 P、 セカンダ リ の場合 S と な り ます。 キーを示す頭 文字の 2 番目のアルフ ァベッ ト は、 公開の場合 P、 非公開の場合 S と な り ます。 キーの種類は次の 4 つです。

• PPK = プラ イマ リ 公開キー

• PSK = プラ イマ リ 非公開キー

• SPK = セカンダ リ 公開キー

• SSK = セカンダ リ 非公開キー

BootGen は、 次の 2 つの方法で認証証明を作成でき ます。

• PSK と SSK を与えます。 これらの 2 つの入力を使用し、 SPK シグネチャがオンザフ ラ イで計算されます。

• PPK と SSK、そし て SPK シグネチャ を入力 と し て与えます。この方法は、PSK がわから ない場合に使用されます。

プ ラ イ マ リ キーはハ ッ シ ュ化されて eFUSE 内に格納されます。 こ のハッ シ ュ値は、 FSBL によ ってブー ト イ メ ージ に格納されたプラ イ マ リ キーのハッ シ ュ値 と比較されます。 こ のハッ シ ュは、 SDK に付属する ス タ ン ド ア ロ ン ド ラ イバーを使用し て PS の eFUSE メ モ リ に書き込むこ と ができ ます。詳細は、『Zynq-7000 All Programmable SoC のセキ ュ ア ブー ト 』 (XAPP1175) [参照 12] を参照し て く ださい。 BIF フ ァ イルの例を次に示し ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 54UG821 (v10.0) 2015 年 3 月 10 日

Page 55: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

image { [aeskeyfile]secretkey.nky [pskfile]primarykey.pem [sskfile]secondarykey.pem [bootloader,authentication=rsa] fsbl.elf [authentication=rsa]uboot.elf linux.gz}

コマン ド ラ イ ンで Bootgen を使用する例

bootgen -image bootimage.bif -o my.mcs -efuseppkbits efuseppkbits.txt -encrypt bbram developer.nky -p xc7z020clg484 -w on

Bootgen コマン ドのオプシ ョ ン次の表に Boootgen コマン ド ラ イ ン オプシ ョ ンを示し ます。

表 A-3 : Bootgen コ マン ド ラ イ ンのオプシ ョ ン

引数 説明

-efuseppkbits <filename> PPK ハ ッ シ ュ を含める ために書き込みを行 う efuse フ ァ イルの名前を指定し ます。 こ のオプシ ョ ンは、 パデ ィ ングな し で 32 バイ ト の直接ハ ッ シ ュ を生 成し ます。

-encrypt [bbram | efuse][StartCBC=<hex_string>][Key0=<hex_string>][HMAC=<hex_string>][<filename>[.nky]]

暗号化方法を指定し ます。 重要な情報は BIF フ ァ イルに指定されているため、 新規デザイ ンでは変数を イ タ リ ッ ク体で表すこ と は推奨し ていません。

例は次の通 り です。

° Key0 : 16 進数の文字列で、 AES キーを指定し ます。 使用可能な文字は、 1 ~ 9、 A、 a、 B、 b、 C、 c、 D、 d、 E、 e、 F、 f です。

° StartCBC : 16 進数の文字列で、 初期ベク ターを指定し ます。 使用可能な 文字は、 1 ~ 9、 A、 a、 B、 b、 C、 c、 D、 d、 E、 e、 F、 f です。

° HMAC : 16 進数の文字列で、 HMAC キーを指定し ます。 使用可能な文字 は、 1 ~ 9、 A、 a、 B、 b、 C、 c、 D、 d、 E、 e、 F、 f です。

-fill [<hex_byte>] フ ィ ル用に使用するバイ ト を指定し ます。

-generate_hashes PKCS#1v1.5 フ ォーマ ッ ト でパデ ィ ング し て SHA256 ハッ シ ュの出力に指定し ます。

これらのハッ シュ フ ァ イルのフ ォーマ ッ ト : (256 バイ ト )

SHA256 ハッ シ ュ T- パデ ィング

0x00 0xFF 0x01 0x00

32 バイ ト (予約) 19 バイ ト 1 バイ ト 202 バイ ト 1 バイ ト 1 バイ ト

-h ヘルプ サマ リ をプ リ ン ト ア ウ ト し ます。

-image <filename>[.bif] 入力するブー ト イ メ ージ フ ァ イル (*bif) を指定し ます。

-o <filename> 出力フ ァ イルを指定し ます。 サポー ト される出力フ ァ イルは、 次の とお り です。• bin• mcs

拡張子が指定されていない場合は、 bin が追加されます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 55UG821 (v10.0) 2015 年 3 月 10 日

Page 56: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

-p <partname> ザイ リ ン ク スのデバイ ス名を指定し ます。 こ の名前は暗号キーの生成で必要と な り 、 NKY の 「Device」 行に正確にコ ピーされます。 それ以外は、 Bootgen で使用されません。

-padheadertable={0|1} イ メ ージ ヘッ ダー テーブルおよびパーテ ィ シ ョ ン ヘッ ダー テーブルのそれ ぞれを 14 エン ト リ までパデ ィ ング し、 続 く パーテ ィ シ ョ ンを強制的にア ラ イ ン し ます。 こ のオプシ ョ ンは、 デフ ォル ト で 1 に設定されています。 無効に するには 0 を指定し ます。

-process_bitstream [mcs|bin] ビ ッ ト ス ト リ ームが MCS フ ァ イルまたは BIN フ ァ イルのいずれのフ ァ イル と し て処理および出力されるかを指定し ます。 た と えば、 BIF フ ァ イルのビ ッ ト ス ト リ ームに暗号化が選択される と、 その出力が暗号化されたビ ッ ト ス トリ ーム と な り ます。

-spksignature <filename> 書き込みを行 う spk シグネチャ フ ァ イルの名前を指定し ます。BIF フ ァ イルで pskfile および spkfile オプシ ョ ンを使用し て指定する必要があ り ます。

-split [mcs|bin] このオプシ ョ ンは、 MCS または BIN フ ォーマ ッ ト で、 ヘッ ダーを持つ各デー タ パーテ ィ シ ョ ンを新しいフ ァ イル と し て出力し ます。

例 : the_ROM_image:

{ [bootloader]myFSBL.elf myDesign.bit myDesign.elf}

3 つのデータ フ ァ イルが出力されます。 mybifile.mcs は、 myFSBL.elf のブー ト イ メ ージ ヘッ ダー、 パーテ ィ シ ョ ン ヘッ ダー テーブル、 およびパーテ ィ シ ョ ン データ を含む。

myDesign.bit.mcs は、myDesign.bit のパーテ ィ シ ョ ン データ を含む。

myDesign.elf.mcs は、myDesign.elf のパーテ ィ シ ョ ン データ を含む。

-w <on|off> 出力フ ァ イルが存在する場合の動作を指定し ます。 –w on は、 上書き を意味し ます。

-dual_qspi_mode [parallel | stacked <size>]

Dual QSPI コンフ ィ ギュ レーシ ョ ンの場合は 2 つの出力フ ァ イルを生成し ます。 ス タ ッ ク ド コ ンフ ィ ギュ レーシ ョ ンの場合は、フ ラ ッ シュのサイ ズ (MB) を指 定する必要があ り ます (16、 32、 64、 または 128)。 例 : -dual_qspi_mode parallel は、 QSPI Dual Parallel コ ンフ ィ ギュ レーシ ョ ンの 2 つ のフ ラ ッ シュ を個別にプロ グ ラ ミ ングするため、2 つの出力フ ァ イルを生成し ます。

-dual_qspi_mode stacked 64 は、 QSPI Dual Stacked コ ンフ ィ ギュ レーシ ョ ンの 2 つのフ ラ ッ シュ を個別にプロ グ ラ ミ ングするため、2 つの出力フ ァ イルを生成 し ます。実際のイ メ ージの最初の 64MB が 1 つ目のフ ァ イルに書き込まれ、残 り は 2 つ目のフ ァ イルに書き込まれます。 実際のイ メ ージが 64MB 未満の場 合は、 1 つのフ ァ イルのみ生成されます。

-log [error |warning |debug |trace] 現在の作業デ ィ レ ク ト リ 内の bootgen_log.txt フ ァ イルに、 指定し た ロ グ 情報を含むロ グ フ ァ イルが生成されます。

表 A-3 : Bootgen コ マン ド ラ イ ンのオプシ ョ ン (続き)

引数 説明

Zynq-7000 AP SoC SWDG japan.xilinx.com 56UG821 (v10.0) 2015 年 3 月 10 日

Page 57: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

イ メ ージ ヘ ッ ダー テーブル通常、 イ メ ージ ヘッ ダー テーブルは、 固定サイ ズのブー ト ヘッ ダー と レジス タ初期化テーブルのすぐ後ろに現れま す。 つま り 、 ア ド レ ス 0x000008A0 に現れます。 イ メ ージ ヘ ッ ダー テーブルは、 ヘ ッ ダーの後に一連の イ メ ージ ヘッ ダーが続いて構成されています。

イ メ ージ ヘ ッ ダー テーブルは連続する必要はあ り ませんが、 Bootgen によ って継続的に生成さ れます。 各イ メ ージ ヘッ ダーは、 NextEntryOffset によ って次のイ メ ージ ヘッ ダーと リ ン ク し ています。

注記 : オフセ ッ ト はワード (バイ ト オフセ ッ ト ではない) で指定されます。 変換する場合は、 ワード オフセ ッ ト 値に 4 を掛ける と バイ ト オフセ ッ ト にな り ます。

ブー ト イ メ ージの規定では、 イ メ ージ ヘッ ダーはブー ト イ メ ージ全体に散在でき ますが、 イ メ ージ ヘッ ダー テーブ ルのヘッ ダーの後には、 Bootgen で生成された一連のイ メ ージ ヘッ ダーが続き ます。

パーテ ィ シ ョ ン ヘ ッ ダー テーブル

注記 : パーテ ィ シ ョ ン ヘ ッ ダー テーブルは、 次の表に示すデータ を含む構造体の配列 (AOS) です。 FSBL パーテ ィ シ ョ ンを含め、 各パーテ ィ シ ョ ンに 1 つの構造体があ り ます。 テーブル内の最後の構造体は、 すべて NULL 値と な り ます (チェ ッ ク サムを除 く )。

-bif_help BIF フ ァ イル オプシ ョ ンのヘルプです。

-generate_keys auth [rsa

| pem] RSA または PEM フ ォーマ ッ ト で認証キーを生成し ます。

BIF フ ァ イルには、 各キーのパスが含まれる必要があ り ます。

例 : all.bif the_ROM_image: {[ppkfile] <path/ppk.txt>

[pskfile] <path/psk.txt>[spkfile] <path/psk.txt>

[sskfile] <path/psk.txt>}bootgen -image all.bif -generate_keys auth rsa

表 A-4 : イ メ ージ ヘ ッ ダー テーブルのヘ ッ ダー

オフセ ッ ト 名前 注記

0x0 バージ ョ ン 0x01020000

0x4 イ メ ージ ヘッ ダー数

0x8 パーテ ィ シ ョ ン ヘッ ダーのワード オフセ ッ ト

0xC 最初のイ メ ージ ヘッ ダーのワード オフセ ッ ト

0x10 ヘッ ダー認証のワード オフセ ッ ト

0x1C パデ ィ ング 64 バイ ト 境界まで 0xFFFFFFFF で埋められている

表 A-3 : Bootgen コ マン ド ラ イ ンのオプシ ョ ン (続き)

引数 説明

Zynq-7000 AP SoC SWDG japan.xilinx.com 57UG821 (v10.0) 2015 年 3 月 10 日

Page 58: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

パーテ ィ シ ョ ン属性ビ ッ ト

表 A-5 : パーテ ィ シ ョ ン ヘ ッ ダー テーブル

オフセ ッ ト 名前 注記

0x0 パーテ ィ シ ョ ン データ ワード長 暗号化されていないパーテ ィ シ ョ ン データの長さ

0x4 抽出されたデータ ワード長 暗号化されていないデータの長さ

0x8 合計パーテ ィ シ ョ ン ワード長 (認証証明を含む) 暗号化、 パデ ィ ング、 拡張、 認証をすべて合計し た長さ

0x0C デステ ィ ネーシ ョ ン ロード ア ド レ ス このパーテ ィ シ ョ ンがロード される RAM ア ド レ ス

0x10 デステ ィ ネーシ ョ ン実行ア ド レ ス ロード 後のこのパーテ ィ シ ョ ンの実行可能ア ド レ ス

0x14 イ メ ージのデータ ワード オフセ ッ ト ブー ト イ メ ージの開始に対するパーテ ィ シ ョ ン データ の位置

0x18 属性ビ ッ ト 表 6 を参照

0x1C セ ク シ ョ ン数 シングル パーテ ィ シ ョ ン内のセ ク シ ョ ン数

0x20 チェ ッ ク サム ワード オフセ ッ ト ブー ト イ メ ージ内のチェ ッ ク サム ワード の位置

0x24 イ メ ージ ヘッ ダーのワード オフセ ッ ト ブー ト イ メ ージ内のイ メ ージ ヘッ ダーの位置

0x28 認証証明ワード オフセ ッ ト ブー ト イ メ ージ内の認証証明の位置

0x2C 未使用 0x00000000 にする

0x30 未使用 0x00000000 にする

0x34 未使用 0x00000000 にする

0x38 未使用 0x00000000 にする

0x3C ヘッ ダー チェ ッ クサム パーテ ィ シ ョ ン ヘッ ダーの以前のワー ド の INVERTED 合計値 (反転し た論理和)

表 A-6 : パーテ ィ シ ョ ン属性ビ ッ ト

ビ ッ ト フ ィ ールド

説明 注記

31:18 データ属性 イ ンプ リ メ ン ト されていない

17:16 パーテ ィ シ ョ ン オーナー 0 - FSBL1 - UBOOT

2、 3 - 予約

15 RSA シグネチャの有無 0 – RSA 認証証明な し

1 – RSA 認証証明あ り

Zynq-7000 AP SoC SWDG japan.xilinx.com 58UG821 (v10.0) 2015 年 3 月 10 日

Page 59: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 A : Bootgen の使用

イ メ ージ ヘ ッ ダー

14:12 チェ ッ クサム タ イプ b000 = 0 = チェ ッ クサムな し

b001 = 1 = RFU (将来的な使用のために予約)b010 = 2 = RFUb011 = 3 = RFUb100 = 4 = RFUb101 = 5 = RFUb110 = 6 = RFUb111 = 7 = RFU

11:8 デステ ィ ネーシ ョ ン イ ン ス タ ン ス イ ンプ リ メ ン ト されていない

7:4 デステ ィ ネーシ ョ ン デバイ ス 0 - な し1 - PS2 - PL3 - INT

4 ~ 15 - 予約

3:2 ヘッ ド ア ラ イ メ ン ト イ ンプ リ メ ン ト されていない

1:0 テール ア ラ イ メ ン ト イ ンプ リ メ ン ト されていない

表 A-7 : イ メ ージ ヘ ッ ダー

オフセ ッ ト 名前 注記

0x0 次のイ メ ージ ヘッ ダーのワード オフセ ッ ト 次のイ メ ージ ヘッ ダー と関連し ます。 最後のイ メ ージ ヘッ ダーの場合は 0 と な り ます。

0x4 最初のパーテ ィ シ ョ ン ヘ ッ ダーの ワー ド オフ セ ッ ト

最初のパーテ ィ シ ョ ン ヘッ ダーと関連し ます。

0x8 パーテ ィ シ ョ ン数 常に 0

0xC イ メ ージ名の長さ 実際のパーテ ィ シ ョ ン数の値

0x10 ~ N イ メ ージ名 ビ ッ グエンデ ィ アン順に圧縮さ れます。 文字列を再構築する ため、一度に 4 バイ ト を解凍し、順 序を逆にし て連結されます。 た と えば、 文字列 「FSBL10.ELF」 は次の よ うに圧縮されます。 0x10 : ‘L’、 ’B’、 ’S’、 ’F’、 0x14 : ’E’、 ’.’、 ’0’、 ’1’、 0x18 : ’\0’、 ’\0’、 ’F’、 ’L’圧縮された イ メ ージ名は 4 の倍数バイ ト です。

varies 0x00000000 ス ト リ ング ター ミ ネーター (終端名) です。

varies 0xFFFFFFFFF 64 バイ ト 境界まで繰り 返しパディ ングされます。

表 A-6 : パーテ ィ シ ョ ン属性ビ ッ ト (続き)

ビ ッ ト フ ィ ールド

説明 注記

Zynq-7000 AP SoC SWDG japan.xilinx.com 59UG821 (v10.0) 2015 年 3 月 10 日

Page 60: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B

Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

概要LibXil SKey ラ イブラ リ は、 ユーザー定義の eFUSE ビ ッ ト やバッ ク ア ッ プ バ ッ テ リ 付き RAM (BBRAM) にキーをプ ロ グ ラ ムする際の メ カニズムを提供し ます。

• PS eFUSE は、 RSA プラ イマ リ キーのハッ シュ ビ ッ ト と ユーザー機能ビ ッ ト を格納し、 これらによ って一部の Zynq®-7000 プロセ ッ サ機能を有効または無効にでき ます。

• PL eFUSE は、 AES キー、 ユーザー キー、 および一部の機能ビ ッ ト を格納し ます。

• BBRAM は AES キーを格納し ます。

次のユーザー アプ リ ケーシ ョ ン (サンプル) フ ァ イルが提供されています。

• efuse サンプル フ ァ イル - PS/PL eFUSE への書き込みを実行する。

• BBRAM サンプル フ ァ イル - BBRAM にキーの書き込みを実行する。

注意 : eFUSE ビ ッ ト の書き込み (バーニング) を実行する前に、 正しい情報が入力されている こ と を確認し て く だ さ い。 書き込み実行後は変更でき ません。 BBRAM キーは、 何度でも再プロ グ ラ ム可能です。

注記 : eFUSE 値を認識させるために POR リ セ ッ ト が必要です。

Zynq-7000 AP SoC SWDG japan.xilinx.com 60UG821 (v10.0) 2015 年 3 月 10 日

Page 61: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

SDK のプロジ ェ ク ト フ ァ イルおよびフ ォルダー次の表に、 eFUSE アプ リ ケーシ ョ ンの SDK プロ ジェ ク ト フ ァ イル、 フ ォルダー、 およびマ ク ロ を示し ます。

表 B-1 : eFUSE SDK アプ リ ケーシ ョ ンのプロジ ェ ク ト フ ァ イル

フ ァ イルまたはフ ォルダー 説明

xilskey_efuse_example.c メ イ ン アプ リ ケーシ ョ ン コード が含まれます。

xilskey_input.h に定義されたユーザー設定に基づいて、 PS/PL 構造体の初 期化および PS/PL eFUSE の書き込み/読み出し を実行し ます。

xilskey_input.h eFUSE ラ イ ブ ラ リ でサポー ト さ れ るすべてのア ク シ ョ ンが含まれます。 こ の フ ァ イルにあ るプ リ プロセ ッ サ命令を使用し て、ユーザーは PS/PL eFUSE のビ ッ ト に読み出し /書き込みを実行でき ます。 各命令の詳細は、 こ の後のセ ク シ ョ ンで説明 し ま す。 PS/PL eFUSE ビ ッ ト のバーニ ン グ ま た は読み出 し は、 xilskey_input.h フ ァ イルに定義された値に基づき ます。

このフ ァ イルで、 BBRAM へプロ グ ラ ム される 256 ビ ッ ト キーを指定し ます。

XSK_EFUSEPS_DRIVER PL eFUSE の書き込み/読み出し を可能にし ます。

XSK_EFUSEPL_DRIVER PL eFUSE の書き込みを可能にし ます。

xilskey_bbram_example.c BBRAM にキーをプロ グ ラ ム し、 キーを検証する例が含まれます。

注記 : こ のアルゴ リ ズムは、 サンプル と同じ順序でキーのプロ グ ラ ミ ング と検証 の両方が完了する場合にのみ有効です。

Zynq-7000 AP SoC SWDG japan.xilinx.com 61UG821 (v10.0) 2015 年 3 月 10 日

Page 62: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

ユーザー指定可能な PS eFUSE パラ メ ーター PS eFUSE を使用するには、 XSK_EFUSEPS DRIVER マ ク ロ を定義し ます。 マ ク ロ を定義し た後、 XSK_EFUSEPS に 定義された入力に基づいて、 PS eFUSE のビ ッ ト をプロ グ ラ ム し ます。

ビ ッ ト をプロ グ ラ ムする場合は、 マ ク ロ を TRUE にし ます。 デフ ォル ト は FALSE です。

表 B-2 : ユーザー指定可能な PS eFUSE パラ メ ーター

マク ロ名 説明

XSK_EFUSEPS_ENABLE_WRITE_PROTECT デフ ォル ト = FALSEeFUSE ア レ イ の ラ イ ト プ ロ テ ク ト ビ ッ ト をプ ロ グ ラ ムする場合は、 TRUE を使用し ます。 ラ イ ト プロ テ ク ト ビ ッ ト には 2 ビ ッ ト あ り ま す。 いずれかのビ ッ ト がプロ グ ラ ム される と、 書き込み禁止になったと 見な されます。 し たがって、 ラ イ ト プロ テ ク ト ビ ッ ト をプロ グ ラ ムする際に、 1 ビ ッ ト がプロ グ ラ ム されただけでも、 書き込み API の 戻 り 値は SUCCESS と な り ます。 前述し た とお り 、 eFUSE ビ ッ ト のラ イ ト プロ テ ク ト ビ ッ ト をプロ グ ラ ム し た後に書き込み禁止を有効にするには、POR リ セ ッ ト が必要で す。 ラ イ ト プ ロ テ ク ト ビ ッ ト をプ ロ グ ラ ム し た後には必ず POR リ セ ッ ト を実行する こ と を推奨し ています。 また、 ラ イ ト プロ テ ク ト ビ ッ ト をプロ グ ラ ム し た後は、 eFUSE への 書き込みができ ません。 別のマ ク ロによ って ラ イ ト プロ テ ク ト マ ク ロが TRUE になっている 場合は、 定義済みのすべての値をプロ グ ラ ム し た後、 最後にラ イ ト プ ロ テ ク ト がプロ グ ラ ム されます。 し たがって、 別のマ ク ロ をプロ グ ラム し ている間に生じ たエ ラーが eFUSE アレ イ全体に影響を与え る こ と はあ り ません。 FALSE の場合は、 ラ イ ト プロ テ ク ト ビ ッ ト を変更でき ません。

XSK_EFUSEPS_ENABLE_RSA_AUTH デフ ォル ト = FALSE PS eFUSE アレ イの RSA イネーブル ビ ッ ト をプロ グ ラ ムする場合は、 TRUE を使用し ます。 このビ ッ ト を イネーブルにする と、 すべての正 常なブー ト について JTAG と は別に RSA がイ ネーブルにな り ます。 こ のビ ッ ト をプロ グ ラ ムする前に、 eFUSE アレ イに有効な PPK ハッ シュがあ る こ と を確認し て く ださい。

PPK ハッ シュのプロ グ ラ ミ ングが可能な場合には、適切にハッ シュ を 記述し てから、 RSA イネーブル ビ ッ ト をプロ グ ラ ム し ます。 RSA イネーブル ビ ッ ト に効力を持たせるには、 POR リ セ ッ ト が必要 です。

FALSE の場合は、 RSA イネーブル ビ ッ ト を変更でき ません。

XSK_EFUSEPS_ENABLE_ROM_128K_CRC デフ ォル ト = FALSEROM 128K CRC ビ ッ ト をプロ グ ラ ムする場合は、TRUE を使用し ます。 すべての正常なブー ト プロセスで、 BootROM が 128k CRC を計算し ます。

FALSE の場合は、 ROM CRC 128K ビ ッ ト を変更でき ません。

XSK_EFUSEPS_ENABLE_RSA_KEY_HASH デフ ォル ト = FALSE TRUE の場合、 書き込み API が使用される と きに XSK_EFUSEPS_ RSA_KEY_HASH_VALUE に与え られた eFUSE ハ ッ シ ュ をプロ グ ラ ム し ます。 TRUE の場合、読み出し API が使用される と きに eFUSE ハッ シュが読 み出され、 構造体に読み込まれます。 FALSE の場合は、 これらの値を無視し ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 62UG821 (v10.0) 2015 年 3 月 10 日

Page 63: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

ユーザー指定可能な PL eFUSE パラ メ ーター

XSK_EFUSEPS_RSA_KEY_HASH_VALUE "0000000000000000000000000000000000000000000000000000000000000000"

書き込み API が使用される と き、 指定し た値が 16 進数のバッ フ ァー へ変換されて、 PS eFUSE ア レ イに書き込まれます。 こ の値が、 文字 列形式で提供される PPK (プ ラ イ マ リ 公開キー ) のハ ッ シ ュ と な り ま す。 バッ フ ァーの長さは 64 文字です (有効な文字は 0-9、a-f、および A-F)。 その他の文字は無効 と し て認識され、RSA ハッ シュ をプロ グ ラ ムでき ません。 Xilskey_EfusePs_Write() API が使用される場合には、 RSA ハ ッ シ ュが 記述されて、 XSK_EFUSEPS_ENABLE_RSA_KEY_HASH の値が TRUE であ る必要があ り ます。

表 B-2 : ユーザー指定可能な PS eFUSE パラ メ ーター (続き)

マク ロ名 説明

表 B-3 : ユーザー指定可能な PL eFUSE パラ メ ーター

マク ロ名 説明

XSK_EFUSEPL_FORCE_PCYCLE_RECONFIG デフ ォル ト = FALSE

この値を TRUE に設定し た後、 デバイ スの電源を再投入し て認識させる必要があ り ます。

FALSE の場合、 eFUSE コ ン ト ロール ビ ッ ト はセ ッ ト されません。

XSK_EFUSEPL_DISABLE_KEY_WRITE デフ ォル ト = FALSE

TRUE の場合、 FUSE_AES および FUSE_USER ブロ ッ クへの書き込みが不可と な り ます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

XSK_EFUSEPL_DISABLE_AES_KEY_READ デフ ォル ト = FALSE

TRUE の場合、 FUSE_AES および FUSE_USER キーへの書き込みが不可と な り 、 FUSE_AES の読み出し も不可とな り ます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

XSK_EFUSEPL_DISABLE_USER_KEY_READ デフ ォル ト = FALSE

TRUE の場合、 FUSE_AES および FUSE_USER キーへの書き込みが不可と な り 、 FUSE_USER の読み出し も不可と な り ます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

XSK_EFUSEPL_DISABLE_FUSE_CNTRL_WRITE デフ ォル ト = FALSE

TRUE の場合、 FUSE_CTRL ブロ ッ クへの書き込みが不可と な り ます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

Zynq-7000 AP SoC SWDG japan.xilinx.com 63UG821 (v10.0) 2015 年 3 月 10 日

Page 64: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

PL JTAG オペレーシ ョ ン用の MIO ピン

ユーザーは、 次に示すピンを自由に変更でき ます。

MUX 次のセ ク シ ョ ンでは、MUX の使用法、MUX のセレ ク ト ピン、および MUX のパラ メ ーターについて説明し ています。

MUX の使用要件

ド ラ イバーを使用し て PL eFUSE へ書き込みを行 う には、 次に従 う 必要があ り ます。

• 4 つの MIO ラ イ ンを使用 (TCK、 TMS、 DO、 TDI)

• MIO ラ イ ンを JTAG ポー ト へ接続

外部 JTAG と MIO 駆動の JTAG で動作を切 り 換え る必要があ る場合は、 次に従 う 必要があ り ます。

• 外部 JTAG と MIO 駆動と の JTAG の間に MUX を含める

• MUX のセレ ク ト ピンを割 り 当てる

XSK_EFUSEPL_FORCE_USE_AES_ONLY デフ ォル ト = FALSE

TRUE の場合、 eFUSE AES キーのみを利用し たセキ ュ ア ブー ト の使用が強制されます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

XSK_EFUSEPL_DISABLE_JTAG_CHAIN デフ ォル ト = FALSE

TRUE の場合、 Zynq ARM DAP コ ン ト ローラーが永久的にバイパス モード に設定されます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

XSK_EFUSEPL_BBRAM_KEY_DISABLE デフ ォル ト = FALSE

TRUE の場合、 セキ ュ ア イ メ ージをブー ト する際には eFUSE キーを使用する よ う に強制されます。

FALSE の場合に eFUSE ビ ッ ト に影響を与え る こ と はあ りません。

表 B-4 : PL JTAG 用 MIO ピン

ピン名 ピン番号a

a. こ こで示すピン数は一例です。 各ハード ウ ェ ア デザイ ンに基づ

いた適切なピン数を割 り 当て る必要が り ます。

XSK_EFUSEPL_MIO_JTAG_TDI (17)

XSK_EFUSEPL_MIO_JTAG_TDO (18)

XSK_EFUSEPL_MIO_JTAG_TCK (19)

XSK_EFUSEPL_MIO_JTAG_TMS (20)

表 B-3 : ユーザー指定可能な PL eFUSE パラ メ ーター (続き)

マク ロ名 説明

Zynq-7000 AP SoC SWDG japan.xilinx.com 64UG821 (v10.0) 2015 年 3 月 10 日

Page 65: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

つま り 、 PL EFUSE の書き込み用に JTAG を選択する場合は、 次の定義が必要です。

• JTAG オペレーシ ョ ンで使用される MIO (TCK、 TMS、 TDI、 TDO) (表 4 参照)

• MUX セレ ク ト ラ イ ンで使用される MIO (表 5 参照)

• PL eFUSE 書き込み用 JTAG を選択する ための、 MUX セレ ク ト ラ イ ンの値 (表 6 参照)

次の図は、 正しい MUX の使用法を表し ています。

X-Ref Target - ? 1

注記 : Vivado Device Programmer ツールを使用し て PL eFUSE をプロ グ ラ ムする場合は、 MUX 回路や MIO ピンは必要 あ り ません。

セレ ク ト ピン

X-Ref Target - Figure A-1

図 B 1 : MUX の使用法

表 B-5 : MUX のセレ ク ト ピン

ピン名 ピン番号 説明

XSK_EFUSEPL_MIO_JTAG_MUX_SELECT (21) こ のピンは、 外部 JTAG オペレーシ ョ ン と MIO 駆 動の JTAG オペレーシ ョ ン間で ト グルし ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 65UG821 (v10.0) 2015 年 3 月 10 日

Page 66: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

MUX パラ メ ーター

AES およびユーザー キー パラ メ ーター

表 B-6 : MUX パラ メ ーター

パラ メ ーター名 説明

XSK_EFUSEPL_MIO_MUX_SEL_DEFAULT_VAL デフ ォル ト = LOW LOW の場合は、PL_eFUSE 書き込み動作の前に MUX セレ ク ト ラ イ ンに 0 を書き込みます。

HIGH の場合は、PL_eFUSE 書き込み動作の前に MUX セレ ク ト ラ イ ンに 1 を書き込みます。

表 B-7 : AES およびユーザー キー パラ メ ーター

パラ メ ーター名 説明

XSK_EFUSEPL_PROGRAM_AES_ AND_USER_LOW_KEY

デフ ォル ト = FALSE TRUE の場合は、XSK_EFUSEPL_AES_KEY と XSK_EFUSEPL_USER_LOW_KEY にそ れぞれ定義されている AES キー と ユーザーの下位ハッ シュ キーをプロ グ ラ ム し ます。

FALSE の場合、 与え られた値を無視し ます。

AES キー と ユーザーの下位キーを別々に書き込むこ と はでき ません。

XSK_EFUSEPL_PROGRAM_USER_ HIGH_KEY

デフ ォル ト = FALSETRUE の場合、 XSK_EFUSEPL_PROGRAM_USER_HIGH_KEY に定義されたユーザー の上位ハッ シュ キーをプロ グ ラ ム し ます。

FALSE の場合、 与え られた値を無視し ます。

XSK_EFUSEPL_AES_KEY デフォル ト = "0000000000000000000000000000000000000000000000000000000000000000"

書 き 込み API が使用 さ れ る と き、 こ の値は 16 進数のバ ッ フ ァ ーへ変換 さ れて PL eFUSE ア レ イに書き込まれます。 こ の値は、 文字列形式の AES キー と な り ます。 長 さは 64 文字で、 有効な文字は 0-9、 a-f、 および A-F と な り 、 その他の文字は無効と し て認識され、 AES キーをプロ グ ラ ムでき ません。 AES キーを書き込む場合は、 XSK_EFUSEPL_PROGRAM_AES_AND_USER_LOW_KEY が TRUE であ る必要があ り ます。

XSK_EFUSEPL_USER_LOW_KEY デフ ォル ト = "00" 書き込み API が使用される と き、 こ の値は 16 進数バッ フ ァーへ変換されて PL eFUSE ア レ イ に書き込まれます。 こ の値は、 文字列形式で提供 さ れたユーザーの下位キー(User Low Key) と な り ます。 長さは 2 文字で、 有効な文字は 0-9、 a-f、 および A-F です。 その他の文字は無効と し て認識されるため、 ユーザーの下位キーはプロ グ ラ ム されません。 ユーザーの下位キーを書き込む場合は、 XSK_EFUSEPL_PROGRAM_AES_AND_USER_LOW_KEY が TRUE であ る必要があ り ます。

Zynq-7000 AP SoC SWDG japan.xilinx.com 66UG821 (v10.0) 2015 年 3 月 10 日

Page 67: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

ユーザー指定可能な BBRAM パラ メ ーター

PL JTAG 信号に使用される MIO ピンPL JTAG 信号には、 次の MIO ピンが使用されます。 これらのピンは、 ハード ウ ェアに応じ て変更可能です。

MUX パラ メ ーター

XSK_EFUSEPL_USER_HIGH_KEY デフ ォル ト = "000000"書き込み API が使用される と き、 デフ ォル ト 値が 16 進数のバッ フ ァーに変換されて PL eFUSE アレ イに書き込まれます。 こ の値は、 文字列形式で提供されたユーザーの 上位キーと な り ます。 長さは 6 文字で、 有効な文字は 0-9、 a-f、 および A-F です。 その他の文字は無効 と し て認識される ため、 ユーザーの上位キーはプロ グ ラ ム されま せん。 ユーザーの上位キーを書き込む場合は、 XSK_EFUSEPL_PROGRAM_USER_HIGH_KEY が TRUE であ る必要があ り ます。

表 B-7 : AES およびユーザー キー パラ メ ーター (続き)

パラ メ ーター名 説明

表 B-8 : ユーザー指定可能な BBRAM パラ メ ーター

パラ メ ーター デフ ォル ト 値 説明

XSK_BBRAM_FORCE_PCYCLE_RECONFIG FALSE TRUE の場合、 デバイ スの電源を再投入し てデバイ ス を認識させる必要があ り ます。

XSK_BBRAM_DISABLE_JTAG_CHAIN FALSE TRUE の場合、 Zynq ARM DAP コ ン ト ローラーが永 久的にバイパス モード と な り ます。

表 B-9 : PL JTAG 信号用の MIO ピン

JTAG 信号 ピン番号

XSK_BBRAM_MIO_JTAG_TDI 17

XSK_BBRAM_MIO_JTAG_TDO 21

XSK_BBRAM_MIO_JTAG_TCK 19

XSK_BBRAM_MIO_JTAG_TMS 20

表 B-10 : MUX パラ メ ーター

パラ メ ーター デフ ォル ト 値 説明

XSK_BBRAM_MIO_MUX_SEL_DEFAULT_VAL LOW デフ ォル ト 値で PL JTAG が有効にな る。

Zynq-7000 AP SoC SWDG japan.xilinx.com 67UG821 (v10.0) 2015 年 3 月 10 日

Page 68: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

AES キーと関連パラ メ ーター

エラー コー ドアプ リ ケーシ ョ ン エラー コード の長さは 32 ビ ッ ト です。

た と えば、 PS のエラー コード が 0x8A05 の場合は、 次のよ う にな り ます。

• 0x8A は、 RSA Authentication ビ ッ ト の書き込み中に書き込みエラーが発生し た こ と を示し ます。

• 0x05 は、 書き込み動作時の温度が範囲を超えているため、 書き込みエラーが生じ た こ と を示し ます。

アプ リ ケーシ ョ ンには、 エラー ステータ ス を示すために次のオプシ ョ ンがあ り ます。 ステータ ス を通知する これらの 方法は、 デフ ォル ト で実装されています。 ただし、 UART 経由でステータ ス を表示する場合は、 UART を提供し て初 期化する必要があ り ます。

• UART ピン経由でエラー コード を送信する

• リ ブー ト ステータ ス レジス タにエラー コード を書き込む

表 B-11 : AES キーと関連パラ メ ーター

パラ メ ーター名 デフ ォル ト 値 説明

XSK_BBRAM_AES_KEY XX BBRAM にプ ロ グ ラ ム される AES キー (16 進数)。

XSK_BBRAM_AES_KEY_SIZE_IN_BITS 256 AES キーのサイ ズ。 必ず 256 ビ ッ ト になる。

Zynq-7000 AP SoC SWDG japan.xilinx.com 68UG821 (v10.0) 2015 年 3 月 10 日

Page 69: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

PL eFUSE エラー コー ド

表 B-12 : PL eFUSE エラー コー ド

エラー コー ド 値 説明

XSK_EFUSEPL_ERROR_NONE 0 エラーな し

EFUSE 読み出し エラー コー ド

XSK_EFUSEPL_ERROR_ROW_NOT_ZERO 0x10 Row が 0 でない

XSK_EFUSEPL_ERROR_READ_ROW_OUT_OF_RANGE 0x11 Row が範囲外

XSK_EFUSEPL_ERROR_READ_MARGIN_OUT_OF_RANGE 0x12 マージンが範囲外

XSK_EFUSEPL_ERROR_READ_BUFFER_NULL 0x13 バッ フ ァーがない

XSK_EFUSEPL_ERROR_READ_BIT_VALUE_NOT_SET 0x14 ビ ッ ト がセ ッ ト されていない

XSK_EFUSEPL_ERROR_READ_BIT_OUT_OF_RANGE 0x15 ビ ッ ト が範囲外

XSK_EFUSEPL_ERROR_READ_TEMPERATURE_OUT_OF_RANGE 0x16 XADC から取得した温度が範囲外

XSK_EFUSEPL_ERROR_READ_VCCAUX_VOLTAGE_OUT_OF_RANGE 0x17 XADC か ら取得し た VCCAUX が範囲 外

XSK_EFUSEPL_ERROR_READ_VCCINT_VOLTAGE_OUT_OF_RANGE PL XADC から取得し た VCCINT が範囲外

EFUSE 書き込みエラー コー ド

XSK_EFUSEPL_ERROR_WRITE_ROW_OUT_OF_RANGE 0x19 Row が範囲外

XSK_EFUSEPL_ERROR_WRITE_BIT_OUT_OF_RANGE 0x1A ビ ッ ト が範囲外

XSK_EFUSEPL_ERROR_WRITE_TEMPERATURE_OUT_OF_RANGE 0x1B XADC から取得した温度が範囲外

XSK_EFUSEPL_ERROR_WRITE_VCCAUX_VOLTAGE_OUT_OF_RANGE 0x1C XADC か ら取得し た VCCAUX が範囲 外

XSK_EFUSEPL_ERROR_WRITE_VCCINT_VOLTAGE_OUT_OF_RANGE 0x1D XADC から取得し た VCCINT が範囲外

EFUSE CNTRL エラー コー ド

XSK_EFUSEPL_ERROR_FUSE_CNTRL_WRITE_DISABLED 0x1E ヒ ューズ コ ン ト ロールの書き込みが無 効

XSK_EFUSEPL_ERROR_CNTRL_WRITE_BUFFER_NULL 0x1F コ ン ト ロ ール デー タ を含むためにサ ポー ト されるバッ フ ァー ポイ ン ターが NULL であ る

EFUSE KEY エラー コー ド

XSK_EFUSEPL_ERROR_NOT_VALID_KEY_LENGTH 0x20 キーの長さが無効

XSK_EFUSEPL_ERROR_ZERO_KEY_LENGTH 0x21 キーの長さが 0

XSK_EFUSEPL_ERROR_NOT_VALID_KEY_CHAR 0x22 キーの文字が無効

XSK_EFUSEPL_ERROR_NULL_KEY 0x23 キーが NULL であ る

Zynq-7000 AP SoC SWDG japan.xilinx.com 69UG821 (v10.0) 2015 年 3 月 10 日

Page 70: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

XSKEfusepl_Program_Efuse() エラー コー ド

XSK_EFUSEPL_ERROR_KEY_VALIDATION 0xF000 キーが無効

XSK_EFUSEPL_ERROR_PL_STRUCT_NULL 0x1000 PL 構造体が Null

XSK_EFUSEPL_ERROR_JTAG_SERVER_INIT 0x1100 JTAG サーバーの初期化エラー

XSK_EFUSEPL_ERROR_READING_FUSE_CNTRL 0x1200 ヒ ュ ーズ コ ン ト ロ ールの読み出 し エ ラー

XSK_EFUSEPL_ERROR_DATA_PROGRAMMING_NOT_ALLOWED 0x1300 データ プロ グ ラ ミ ングが許可されない

XSK_EFUSEPL_ERROR_FUSE_CTRL_WRITE_NOT_ALLOWED 0x1400 ヒ ューズ コ ン ト ロールの書き込みが無 効

XSK_EFUSEPL_ERROR_READING_FUSE_AES_ROW 0x1500 ヒ ューズの AES 行の読み出しエラー

XSK_EFUSEPL_ERROR_AES_ROW_NOT_EMPTY 0x1600 AES 行が空でない

XSK_EFUSEPL_ERROR_PROGRAMMING_FUSE_AES_ROW 0x1700 ヒ ュ ーズの AES 行のプ ロ グ ラ ミ ン グ エラー

XSK_EFUSEPL_ERROR_READING_FUSE_USER_DATA_ROW 0x1800 ヒ ュ ーズのユーザー行の読み出 し エラー

XSK_EFUSEPL_ERROR_USER_DATA_ROW_NOT_EMPTY 0x1900 ユーザー行が空でない

XSK_EFUSEPL_ERROR_PROGRAMMING_FUSE_DATA_ROW 0x1A00 ヒ ューズのユーザー行のプロ グ ラ ミ ング エラー

XSK_EFUSEPL_ERROR_PROGRAMMING_FUSE_CNTRL_ROW 0x1B00 ヒ ューズのコ ン ト ロール行のプロ グ ラミ ング エラー

XSK_EFUSEPL_ERROR_XADC 0x1C00 XADC エラー

XSK_EFUSEPL_ERROR_INVALID_REF_CLK 0x3000 基準ク ロ ッ ク が無効

表 B-12 : PL eFUSE エラー コー ド (続き)

エラー コー ド 値 説明

Zynq-7000 AP SoC SWDG japan.xilinx.com 70UG821 (v10.0) 2015 年 3 月 10 日

Page 71: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

PS eFUSE エラー コー ド

表 B-13 : PS eFUSE エラー コー ド

エラー コー ド 値 説明

XSK_EFUSEPL_ERROR_NONE 0 エラーな し

EFUSE 読み出し エラー コー ド

XSK_EFUSEPS_ERROR_ADDRESS_XIL_RESTRICTED 0x01 ア ド レ スが制限されている

XSK_EFUSEPS_ERROR_READ_TMEPERATURE_OUT_OF_RANGE 0x02 XADC から取得した温度が範囲外

XSK_EFUSEPS_ERROR_READ_VCCAUX_VOLTAGE_OUT_OF_RANGE 0x03 XADC から取得し た VCCAUX が 範囲外

XSK_EFUSEPS_ERROR_READ_VCCINT_VOLTAGE_OUT_OF_RANGE 0x04 XADC か ら取得し た VCCINT が 範囲外

EFUSE 書き込みエラー コー ド

XSK_EFUSEPS_ERROR_WRITE_TEMPERATURE_OUT_OF_RANGE 0x05 XADC から取得した温度が範囲外

XSK_EFUSEPS_ERROR_WRITE_VCCAUX_VOLTAGE_OUT_OF_RANGE 0x06 XADC から取得し た VCCAUX が 範囲外

XSK_EFUSEPS_ERROR_WRITE_VCCINT_VOLTAGE_OUT_OF_RANGE 0x07 XADC か ら取得し た VCCINT が 範囲外

XSK_EFUSEPS_ERROR_VERIFICATION 0x08 検証エラー

XSK_EFUSEPS_ERROR_RSA_HASH_ALREADY_PROGRAMMED 0x09 RSA ハ ッ シ ュはすでにプ ロ グ ラ ム されている

EFUSE CNTRL エラー コー ド

XSK_EFUSEPS_ERROR_CONTROLLER_MODE 0x0A コ ン ト ローラー モード エラー

XSK_EFUSEPS_ERROR_REF_CLOCK 0x0B 基準 ク ロ ッ ク が 20 ~ 60MHz で ない

XSK_EFUSEPS_ERROR_READ_MODE 0x0C サポー ト さ れていない読み出 しモード

XADC エラー コー ド

XSK_EFUSEPS_ERROR_XADC_CONFIG 0x0D XADC コ ン フ ィ ギ ュ レーシ ョ ン エラー

XSK_EFUSEPS_ERROR_XADC_INITIALIZE 0x0E XADC 初期化エラー

XSK_EFUSEPS_ERROR_XADC_SELF_TEST 0x0F XADC セルフテス ト エラー

Utils エラー コード

XSK_EFUSEPS_ERROR_PARAMETER_NULL 0x10 渡されたパラ メ ーターが NULL

XSK_EFUSEPS_ERROR_STRING_INVALID 0x20 渡された文字列が無効

Zynq-7000 AP SoC SWDG japan.xilinx.com 71UG821 (v10.0) 2015 年 3 月 10 日

Page 72: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

ステータ ス コー ドステータ スは、 次のフ ォーマ ッ ト で UART 経由または リ ブー ト ステータ ス レジス タ経由で伝達されます。

0xYYYYZZZZ つま り

• YYYY は PS eFUSE ステータ ス を示し ます。

• ZZZZ は PL eFUSE ステータ ス を示し ます。

エラー コード の説明は、 69 ページの表 12 および 71 ページの表 13 を参照し て く ださい。

XSKEfuse_Write/Read()common エラー コー ド

XSK_EFUSEPS_ERROR_PS_STRUCT_NULL 0x8100 PS 構造体のポイ ン ターが NULL

XSK_EFUSEPS_ERROR_XADC_INIT 0x8200 XADC 初期化エラー

XSK_EFUSEPS_ERROR_CONTROLLER_LOCK 0x8300 PS eFUSE コ ン ト ローラーがロ ッ ク ア ッ プ

XSK_EFUSEPS_ERROR_EFUSE_WRITE_PROTECTED 0x8400 PS eFUSE が書き込み禁止

XSK_EFUSEPS_ERROR_CONTROLLER_CONFIG 0x8500 コ ン ト ロ ー ラ ー コ ン フ ィ ギ ュ レーシ ョ ン エラー

XSK_EFUSEPS_ERROR_PS_PARAMETER_WRONG 0x8600 PS eFUSE パラ メ ーターが TRUE/FALSE でない

XSKEfusePs_Write() エラー コー ド

XSK_EFUSEPS_ERROR_WRITE_128K_CRC_BIT 0x9100 128k CRC の有効化エラー

XSK_EFUSEPS_ERROR_WRITE_RSA_HASH 0x9400 RSA キーの書き込みエラー

XSK_EFUSEPS_ERROR_WRITE_RSA_AUTH_BIT 0x9500 RSA 認証ビ ッ ト の有効化エラー

XSK_EFUSEPS_ERROR_WRITE_WRITE_PROTECT_BIT 0x9600 ラ イ ト プロ テ ク ト ビ ッ ト の書き 込みエラー

XSK_EFUSEPS_ERROR_READ_HASH_BEFORE_PROGRAMMING 0x9700 プロ グ ラ ムする前に RSA キーを 確認

XSKEfusePs_Read() エラー コー ド

XSK_EFUSEPS_ERROR_READ_RSA_HASH 0xA100 RSA キーの読み出しエラー

表 B-13 : PS eFUSE エラー コー ド (続き)

エラー コー ド 値 説明

表 B-14 : ステータ ス コー ド

ステータ ス コー ド 説明

値 0x0000ZZZZ PS eFUSE ではエラーは発生し ていない。 PL eFUSE でエラーが発生。

値 0xYYYY0000 PL eFUSE ではエラーは発生し ていない。 PS eFUSE でエラーが発生。

値 0xFFFF0000 PS eFUSE は実行されていない。 PL eFUSE ではエラーは生じ ていない。

値 0x0000FFFF PL eFUSE は実行されていない。 PS eFUSE ではエラーは生じ ていない。

値 0xFFFFZZZZ PS eFUSE は実行されていない。 PL eFUSE でエラーが発生。

値 0xYYYYFFFF PL eFUSE は実行されていない。 PS eFUSE でエラーが発生。

Zynq-7000 AP SoC SWDG japan.xilinx.com 72UG821 (v10.0) 2015 年 3 月 10 日

Page 73: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

XMD を使用し て SVF フ ァ イルを作成次に示す XMD コード を使用し て、 生成された ELF フ ァ イルから SVF フ ァ イルを作成し ます。

注記 : ELF フ ァ イルのパスは、 OPT フ ァ イルに提供されています。

“xmd –tcl efuse.tcl –opt efuse.opt”

DDR から実行する eFUSE の書き込み手順 (応用)こ のシーケン スは、 次に示す既存フ ローと同じです。

1. xilskey_input.h に必要な入力を提供し、 SDK プロ ジェ ク ト を コ ンパイルし ます。

2. 生成された <output>.elf に最新の FSBL (ELF) を結合し て (Bootgen プロ グ ラ ムを使用)、 ブー ト 可能な イ メ ー ジを生成し ます。

3. 生成されたバイナ リ イ メ ージをフ ラ ッ シュ デバイ ス (例 : QSPI、 NAND) に書き込みます。

4. イ メ ージを実行し て eFUSE キー ビ ッ ト を書き込みます。

OCM 向け eFUSE ド ラ イバーのコ ンパイル手順1. SDK プロ ジェ ク ト の リ ンカ ス ク リ プ ト (lscript.ld) を開き ます。

2. すべてのセ ク シ ョ ンを ps7_ddr_0_S_AXI_BASEADDR ではな く 、 ps7_ram_0_S_AXI_BASEADDR を示すよ う にマ ッ プし ます。

例 : .text セ ク シ ョ ンの [Memory Region] タブを ク リ ッ ク し て、 ド ロ ッ プダウ ン リ ス ト から [ps7_ram_0_S_AXI_BASEADDR] を選択し ます。

3. hw_platform フ ォルダーの ps7_init.c および ps7_init.h フ ァ イルを example フ ォルダーへコ ピーし ます。

4. xilskey_efuse_example.c で、 “ps7_init()” ルーチンを呼び出すコード のコ メ ン ト を外し ます。

5. プロ ジェ ク ト を コ ンパイルし ます。

<Project name>.elf フ ァ イルが生成されて、 OCM から実行されます。

こ のサンプル プロ ジェ ク ト を実行する と、UART 経由 (UART が提供されて初期化されている場合) または リ ブー ト ス テータ ス レジス経由でデ ィ スプレ イ メ ッ セージに eFUSE アプ リ ケーシ ョ ンのエラー ステータ スが表示されます。

ステータ ス /エラー コード の説明は、 エラー コード を参照し て く ださい。

Zynq-7000 AP SoC SWDG japan.xilinx.com 73UG821 (v10.0) 2015 年 3 月 10 日

Page 74: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

LibXil SKey ラ イブ ラ リの APIこ のセ ク シ ョ ンでは、 LibXil SKey ラ イブラ リ API の一覧 ( リ ン ク付き ) を示し、 その後にそれらの詳細を示し ます。

API の一覧

こ こ では、LibXil SKey ラ イブラ リ で提供される API の一覧を示し ます。こ の リ ス ト の後に、各 API の説明を示し ます。

u32 XilSKey_EfusePs_Write (XilSKey_EPs *InstancePtr)

u32 XilSKey_EfusePs_Read(XilSKey_EPs *InstancePtr)

u32 XilSKey_EfusePl_Program (XilSKey_EPl *InstancePtr)

u32 XilSKey_EfusePs_ReadStatus(XilSKey_EPs *InstancePtr, u32 *StatusBits);

u32 XilSKey_EfusePl_ReadStatus(XilSKey_EPl *InstancePtr, u32 *StatusBits);

u32 XilSKey_EfusePl_ReadKey(XilSKey_EPl *InstancePtr);

u32 XilSKey_EfusePs_Write (XilSKey_EPs *InstancePtr)

パラ メ ーター InstancePtr : どの PS eFUSE ビ ッ ド をプロ グ ラ ムするかを示す PS eFUSE ハン ド ラー のポイ ン ターです。

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。 エラーが生じ た場合、 値は xilskey_utils.h に定義された とお り と な り ます。

エラー値は、 上位 8 ビ ッ ト 値と下位 8 ビ ッ ト 値の組み合わせで構成されます。 た と えば、0x8A03 は、0x8A00 と 0x03 と し て xilskey_utils.h で確認し て く ださい。 上位 8 ビ ッ ト 値で主なエラーを示し、下位 8 ビ ッ ト 値でエラーの詳細を提供し ます。

説明 こ の API が呼び出される と次を実行し ます。 • タ イマー、 XADC サブシステムを初期化し ます。

• PS eFUSE コ ン ト ローラーをアン ロ ッ ク し ます。

• PS eFUSE コ ン ト ローラーを設定し ます。

• 必要に応じ てハ ッ シ ュ ビ ッ ト およびコ ン ト ロール ビ ッ ト に書き込みを実行し ます。

• 必要に応じ て RSA 認証を有効にする ために PS eFUSE をプロ グ ラ ム し ます。

• PS eFUSE コ ン ト ローラーを ロ ッ ク し ます。

次の場合にはエラーを示し ます。

• 基準ク ロ ッ クが 20 ~ 60MHz の範囲でない。

• リ ク エス ト された PS eFUSE ビ ッ ト を書き込む条件が揃っていない (このビ ッ ト はすでにプロ グ ラ ム されている、 または書き込みが不可であ る )。

• 温度/電圧が範囲外であ る。

イ ン クルード xilskey_eps.h、 xilskey_epshw.h、 xilskey_utils.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 74UG821 (v10.0) 2015 年 3 月 10 日

Page 75: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

u32 XilSKey_EfusePs_Read(XilSKey_EPs *InstancePtr)

u32 XilSKey_EfusePl_Program (XilSKey_EPl *InstancePtr)

パラ メ ーター InstancePtr : どの PS eFUSE ビ ッ ド をプロ グ ラ ムするかを示す PS eFUSE ハン ド ラー のポイ ン ターです。

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。 エラーが生じ た場合、 値は xilskey_utils.h に定義された とお り と な り ます。

エラー値は、 上位 8 ビ ッ ト 値と下位 8 ビ ッ ト 値の組み合わせで構成されます。 た と えば、 0x8A03 は、 0x8A00 と 0x03 と し てxilskey_utils.h で確認し て く ださい。 上位 8 ビ ッ ト 値で主なエラーを示し、下位 8 ビ ッ ト 値でエラーの詳細を提供し ます。

説明 こ の API は、 呼び出される と次を実行し ます。 • タ イマー、 XADC サブシステムを初期化し ます。

• PS eFUSE コ ン ト ローラーをアン ロ ッ ク し ます。

• PS eFUSE コ ン ト ローラーを設定し ます。

• PS eFUSE (ハッ シュ値) を読み出し ます。

• PS eFUSE コ ン ト ローラーを ロ ッ ク し ます。

次の場合にはエラーを示し ます。

• 基準ク ロ ッ クが 20 ~ 60MHz の範囲でない。

• リ ク エス ト された PS eFUSE ビ ッ ト を書き込む条件が揃っていない (このビ ッ ト はすでにプロ グ ラ ム されている、 または書き込みが不可であ る )。

• 温度/電圧が範囲外であ る。

イ ン クルード xilskey_eps.h、 xilskey_epshw.h、 xilskey_utils.h

パラ メーター InstancePtr は、 PL eFUSE へ書き込まれる入力データ を示し ます。

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。

エ ラーが生じ た場合、 値は xilskey_utils.h に定義さ れた と お り と な り ます。 エ ラー値は、上位 8 ビ ッ ト 値と下位 8 ビ ッ ト 値の組み合わせで構成されます。 た と えば、 0x8A03 は、 0x8A00 と 0x03 と し てxilskey_utils.h で確認し て く だ さ い。 上位 8 ビ ッ ト 値で主なエラーを示し、 下位 8 ビ ッ ト 値でエラーの詳細を提供し ます。

説明 この API が呼び出される と次が実行されます。

• タ イマー、 XADC、 および JTAG サーバー サブシステムを初期化し ます。• 必要に応じ て、 AES キーおよびユーザー キーに書き込みを実行し ます。• 必要に応じ てコ ン ト ロール ビ ッ ト に書き込みを実行し ます。次の場合にはエラーを示し ます。

• 基準ク ロ ッ ク が 20 ~ 60MHz の範囲でない。• PL DAP ID が認識されない。• リ ク エス ト された PL eFUSE ビ ッ ト を書き込む条件が揃っていない (こ のビ ッ ト は

すでにプロ グ ラ ム されている、 または書き込みが不可であ る )。• 温度/電圧が範囲外であ る。

イン クルード xilskey_utils.h、 xilskey_epl.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 75UG821 (v10.0) 2015 年 3 月 10 日

Page 76: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

u32 XilSKey_EfusePs_ReadStatus(XilSKey_EPs *InstancePtr, u32 *StatusBits);

u32 XilSKey_EfusePl_ReadStatus(XilSKey_EPl *InstancePtr, u32 *StatusBits);

u32 XilSKey_EfusePl_ReadKey(XilSKey_EPl *InstancePtr);

パラ メ ーター • InstancePtr - PS eFUSE イ ン ス タ ン ス を示すポイ ン ター• StatusBits - ステータ ス レジス タの値を格納するバッ フ ァー

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。

エラーが生じ た場合、 エラー コード は 68 ページの 「エラー コード」 に定義された とお り と な り ます。

説明 こ の API はコ ン ト ローラーをアン ロ ッ ク し て、 PS eFUSE ステータ ス レジス タ を読 み出し ます。

イ ン クルード xilskey_eps.h、 xilskey_utils.h

パラ メ ーター • InstancePtr - PL eFUSE イ ン ス タ ン ス を示すポイ ン ター• StatusBits - ステータ ス ビ ッ ト を格納するバッ フ ァー

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。

エラーが生じ た場合、 エラー コード は 68 ページの 「エラー コード」 に定義された とお り と な り ます。

説明 こ の API は、 row 0 から ステータ ス ビ ッ ト を読み出し ます。 タ イマー、 XADC、 お よび JTAG サーバー サブシステムを初期化し ます (これらがまだ行われていない場 合)。

イ ン クルード xilskey_epl.h、 xilskey_utils.h

パラ メ ーター InstancePtr - PL eFUSE イ ン ス タ ン ス を示すポイ ン ター

戻 り 値 エラーがない場合は、 XST_SUCCESS と な り ます。

エラーが生じ た場合、 エラー コード は 68 ページの 「エラー コード」 に定義された とお り と な り ます。

説明 こ の API は、 AES キーと ユーザー キーを読み出し て、 これら を イ ン ス タ ン ス構造 内の対応する アレ イに格納し ます。 タ イマー、 XADC、 および JTAG サーバー サブ システムを初期化し ます (これらがまだ行われていない場合)。

イ ン クルード xilskey_epl.h、 xilskey_utils.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 76UG821 (v10.0) 2015 年 3 月 10 日

Page 77: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 B : Zynq-7000 AP SoC デバイス用 LibXil SKey (v2.0)

BBRAM API の説明こ のセ ク シ ョ ンでは、 バ ッ ク ア ッ プ バッ テ リ 付き RAM (BBRAM) API の一覧 ( リ ン ク付き ) を示し、 その後にそれら の詳細を示し ています。

API の一覧

int XilSKey_Bbram_Program(XilSKey_Bbram *InstancePtr)

重要 : こ の API は、 BBRAM のプロ グ ラ ム と検証を同時に実行し ます。 これは、 BBRAM アルゴ リ ズムによ るプロセスであ る ため、 プロ グ ラ ム と検証を別々に実行する こ と はでき ません。

パラ メ ーター BBRAM イ ン ス タ ン ス ポイ ン ター

戻 り 値 XST_SUCCESS (エラーな し )、 XST_FAILURE (エラーあ り )

説明 こ の API は、 キーをプロ グ ラ ムおよび検証し ます。

イ ン クルード xilskey_utils.h、 xilskey_bbram.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 77UG821 (v10.0) 2015 年 3 月 10 日

Page 78: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 C

Zynq-7000 AP SoC デバイス向け LibXil RSA (v1.1)

LibXil RSA ラ イブ ラ リの概要LibXil RSA ラ イブラ リ は、RSA 暗号化/復号化アルゴ リ ズムおよび SHA アルゴ リ ズムを使用する ための API を提供し

ます。

このラ イブラ リ の使用例は、 RSA 認証アプ リ ケーシ ョ ンおよびそれらの資料を参照し て く ださい。

SDK プロジ ェ ク ト のフ ァ イルおよびフ ォルダー

説明xilrsa ラ イブラ リ には、 ユーザーがシグネチャの作成や検証に使用する RSA 関数や SHA 関数の記述が含まれてい

ます。 RSA には RSA-2048 ビ ッ ト が使用され、 ハッ シュには SHA-256 ビ ッ ト が使用されます。

SHA-256 関数の使用sha2 の計算が必要な と きに、すべてのデータが提供されている場合は、説明されている とお り に適切なパラ メ ーター

で sha_256() を使用でき ます。

sha2 の計算が必要な と きに、 すべてのデータが提供されていない場合は、 次の順序で sha2 関数を使用し ます。

1. 入力データが完了する まで、 sha2_update() を複数回呼び出すこ と ができ ます。

2. sha2_context は、 ラ イブラ リ でのみア ッ プデー ト されます。 コ ンテキス ト の値は変更でき ません。

表 C-1 : SDK プロジ ェ ク ト のフ ァ イルおよびフ ォルダーの説明

フ ァ イル/フ ォルダー 説明

librsa.a イ ンプ リ メ ンテーシ ョ ンを含む

xilrsa.h API を含むヘッ ダー

Zynq-7000 AP SoC SWDG japan.xilinx.com 78UG821 (v10.0) 2015 年 3 月 10 日

Page 79: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 C : Zynq-7000 AP SoC デバイス向け LibXil RSA (v1.1)

SHA2 の例sha2_context ctx; sha2_starts(&ctx); sha2_update(&ctx, (unsigned char *)in, size); sha2_finish(&ctx, out);

ク ラ ス

struct sha2_context

マク ロ

RSA の定義

#define RSA_DIGIT unsigned long#define RSA_NUMBER1 RSA_DIGIT

1. RSA_DIGIT RSA_NUMBER は、 RSA_DIGIT を示すポ イ ン ターです。

LibXil RSA の API およびその説明

void rsa2048_exp (const unsigned char *base, const unsigned char *modular, const unsigned char * modular_ext, const unsigned char *exponent, unsigned char *result)

パラ メ ーター modular : キーの係数 (modulus) を含む char ポイ ン ター

modular_ext : キーの係数の拡張を含む char ポイ ン ター

exponent : プラ イベー ト キーの指数を含む char ポイ ン ター

result : 暗号化されたデータ を含む char ポイ ン ター

戻 り 値 な し

説明 この関数は、2048 ビ ッ ト のプラ イベー ト キーを使用し てデータ を暗号化する 場合に使用し ます。

イ ン クルード xilrsa.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 79UG821 (v10.0) 2015 年 3 月 10 日

Page 80: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 C : Zynq-7000 AP SoC デバイス向け LibXil RSA (v1.1)

void rsa2048_pubexp (RSA_NUMBER a, RSA_NUMBER x, unsigned long e, RSA_NUMBER m, RSA_NUMBER rrm )

void sha2_finish (sha2_context * ctx, unsigned char * output )

void sha2_starts (sha2_context * ctx)

パラ メ ーター a : 復号化されたデータ を含む RSA_NUMBER

x : 入力データ を含む RSA_NUMBER

e : 公開キーの指数を含む符号な しの値

m : 公開キーの係数を含む RSA_NUMBER

rrm : 公開キーの係数の拡張を含む RSA_NUMBER

戻 り 値 な し

説明 この関数は、 2048 ビ ッ ト の公開キーを使用し てデータ を復号化する場合に使 用し ます。

イ ン クルード xilrsa.h

パラ メ ーター ctx : sha2_context 構造体を示すポイ ン ター

output : 計算されたハッ シュ データ を示す char ポイ ン ター

戻 り 値 な し

説明 この関数で SHA 計算を終了し ます。

イ ン クルード xilsha.h

パラ メ ーター ctx : ス テー タ ス と バ ッ フ ァ ーを格納する sha2_context 構造体を示すポ イ ン ター

戻 り 値 な し

説明 この関数は sha2 コ ンテキス ト を初期化し ます。

イ ン クルード xilsha.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 80UG821 (v10.0) 2015 年 3 月 10 日

Page 81: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 C : Zynq-7000 AP SoC デバイス向け LibXil RSA (v1.1)

void sha2_update (sha2_context * ctx, unsigned char * input, unsigned int ilen )

void sha_256 (const unsigned char * in, const unsigned int size, unsigned char * out)

パラ メ ーター ctx : sha2_context 構造体を示すポイ ン ター

input : 追加するデータ を示す char ポイ ン ター

ilen : データの長さ

戻 り 値 な し

説明 この関数は SHA-256 計算に入力データ を追加し ます。

イ ン クルード xilsha.h

パラ メ ーター in : 入力データ を含む char ポイ ン ター

size : 入力データの長さ を含む符号な し整数型

out : 入力のハッ シュ を含む出力バッ フ ァー

戻 り 値 な し

説明 こ の関数は、 SHA-256 アルゴ リ ズムを使用し て入力データのハッ シ ュ を計算 し ます。 こ の関数は、 内部で sha2_init を呼び出し て、 関数をア ッ プデー ト し て終了し、 結果をア ッ プデー ト し ます。

イ ン クルード xilrsa.h

Zynq-7000 AP SoC SWDG japan.xilinx.com 81UG821 (v10.0) 2015 年 3 月 10 日

Page 82: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 D

その他のリ ソースおよび法的通知

ソ リ ューシ ョ ン セン ターデバイ ス、 ツール、 IP のサポー ト については、 ザイ リ ン ク ス ソ リ ューシ ョ ン セン ターを参照し て く ださい。 デザイ ン アシス タ ン ト 、 デザイ ン ア ド バイザ リ 、 ト ラブルシュー ト の ヒ ン ト などが含まれます。

ザイ リ ン クス リ ソース

製品サポー ト および資料

japan.xilinx.com/support

デバイス ユーザー ガイ ド

http://japan.xilinx.com/support/index.htm

Zynq-7000 AP SoC 製品ページ

http://japan.xilinx.com/products/silicon-devices/soc/zynq-7000/index.htm

ザイ リ ン クスのフ ォーラム Wiki リ ン ク

• http://forums.xilinx.com

• http://wiki.xilinx.com

• http://wiki.xilinx.com/zynq-linux

• http://wiki.xilinx.com/zynq-uboot

• 組み込み Linux フ ォーラ ム

ザイ リ ン クス Git のウ ェ ブサイ ト

https://github.com/xilinx

Zynq-7000 AP SoC SWDG japan.xilinx.com 82UG821 (v10.0) 2015 年 3 月 10 日

Page 83: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 D : その他のリ ソースおよび法的通知

Vivado の資料

1. ザイ リ ン ク ス Zynq-7000 AP SoC ソ リ ューシ ョ ン セン ター

2. 『Vivado Design Suite ユーザー ガイ ド : リ リ ース ノー ト 、 イ ン ス ト ール、 およびラ イセン ス』 (UG973)

3. 『OS およびラ イブラ リ 資料コ レ ク シ ョ ン』 (UG643)

4. 『プラ ッ ト フ ォーム仕様フ ォーマ ッ ト の リ フ ァ レン ス マニュ アル』 (UG642)

5. 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド ハード ウ ェア デザイ ン』 (UG898)

6. 『Vivado Design Suite チュー ト リ アル : エンベデッ ド ハード ウ ェ ア デザイ ン』 (UG940)

7. 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893)

8. 『Vivado Design Suite チュー ト リ アル : IP イ ンテグレーターを使用し て IP サブシステムを設計』 (UG995)

9. 『Vivado Design Suite ユーザー ガイ ド : IP イ ンテグレーターを使用し た IP サブシステムの設計』 (UG994)

10. 『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 (UG1043)

11. 『Vivado Design Suite ユーザー ガイ ド : プロ グ ラ ムおよびデバッ グ』 (UG908)

12. 『Zynq-7000 All Programmable SoC のセキ ュ ア ブー ト 』 (XAPP1175 : 英語版、 日本語版)

13. 『Zynq-7000 All Programmable SoC テ ク ニカル リ フ ァ レ ン ス マニュ アル』 (UG585 : 英語版、 日本語版)

14. 『ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト のヘルプ』 (UG782)

15. 『ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト (SDK) ユーザー ガイ ド : システム性能解析』 (UG1145)

16. 『Zynq-7000 All Programmable SoC : エンベデッ ド デザイ ン チュー ト リ アル』 (UG1165)

Vivado Design Suite QuickTake ビデオ チュー ト リ アル

Vivado Design Suite の資料

ザイ リ ン クスのアプ リ ケーシ ョ ン ノ ー ト

17. 『All Programmable SoC のシステム性能解析』 (XAPP11219 : 英語版、 日本語版)

Zynq-7000 AP SoC SWDG japan.xilinx.com 83UG821 (v10.0) 2015 年 3 月 10 日

Page 84: Zynq-7000 All Programmable SoC ソフトウェア開 …...Zynq-7000 All Programmable SoC ソフトウェア開発者向け ガイド UG821 (v10.0) 2015 年 3 月 10 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応し

付録 D : その他のリ ソースおよび法的通知

法的通知The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.

Certain products are subject to the terms and conditions of Xilinx’s limited warranty, please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.

© Copyright 2012-2015 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, UltraScale, and other designated brands included herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.

AMBA, AMBA Designer, ARM, ARM1176JZ-S, CoreSight, Cortex, and PrimeCell are trademarks of ARM in the EU and other countries.

こ の資料に関する フ ィ ード バッ クおよび リ ン ク などの問題につき ま し ては、 [email protected] まで、 または各ページの

右下にあ る [フ ィ ー ド バッ ク送信] ボ タ ンを ク リ ッ クする と 表示される フ ォームからお知らせ く だ さ い。 フ ィ ー ド バッ ク は日本語で

入力可能です。 いただき ま し たご意見を参考に早急に対応させていただき ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受

け付けてお り ません。 あ らかじめご了承 く ださい

Zynq-7000 AP SoC SWDG japan.xilinx.com 84UG821 (v10.0) 2015 年 3 月 10 日