131
Zynq-7000 SoC: エンベデッド デザイン チュートリアル 効果的なシステム構築をサポートする ハンディ ガイド UG1165 (v2019.2) 2019 10 30 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。

Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル

効果的なシステム構築をサポートするハンディ ガイド

UG1165 (v2019.2) 2019 年 10 月 30 日

すべてのバージョンを表示

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

Page 2: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 2UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

改訂履歴

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

日付 バージョ ン 改訂内容

2019 年 10 月 20 日 2019.2 Vitis™ ソフ ト ウェア プラ ッ ト フォームのサポート を追加。

2017 年 11 月 23 日 2017.3 2017.3 バージ ョ ンの Vivado® Design Suite、 ザイ リ ンクス SDK、 および PetaLinux で検証。

Page 3: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

目次

改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

第 1 章: 概要このガイ ドについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Zynq デバイスによるエンベデッ ド プロセッサ デザインの簡略化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Vivado ツールでデザイン プロセスを加速. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

必要なセッ ト アップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

第 2 章: Zynq SoC プロセッシング システムの使用エンベデッ ド システムのコンフ ィギュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

サンプル プロジェク ト : Zynq SoC の新規エンベデッ ド プロジェク トの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

その他の情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

第 3 章: Zynq デバイスでの GP ポートの使用Zynq SoC プロセッシング システムへのファブリ ッ クに IP を追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

デザイン用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

第 4 章: Vitis ソフ トウェア プラッ ト フォームでのデバッグザイ リ ンクス システム デバッガー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Vitis ソフ ト ウェア プラ ッ ト フォームでのソフ ト ウェアのデバッグ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用AXI CDMA を Zynq SoC PS の HP スレーブ ポートに接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

デザイン用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

CDMA システム用の Linux OS ベースのアプリ ケーシ ョ ン ソフ ト ウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Vitis ソフ ト ウェア プラ ッ ト フォームを使用した Linux CDMA アプリ ケーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . 65

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック必要な環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Zynq SoC ボード上での Linux のブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

ペリ フェラル IP の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

PS の GP マスター ポート を使用したペリ フェラル IP の統合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Linux ベースのデバイス ド ラ イバーの開発. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

実行中のカーネルへのモジュールのロード とアプリ ケーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

第 8 章: Vitis ソフ トウェア プラッ ト フォームでのソフ トウェアのプロファイルVitis ソフ ト ウェア プラ ッ ト フォームでのシステム デバッガーを使用したアプリ ケーシ ョ ンのプロファ イル . 113

追加のデザイン サポート オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 3UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 4: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグLinux OS 認識デバッグの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

OS 認識デバッグを使用した Linux プロセスおよびスレッ ドのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

付録 A: その他のリソースおよび法的通知ザイ リ ンクス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

ソ リ ューシ ョ ン センター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Documentation Navigator およびデザイン ハブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

このチュート リ アルのデザイン ファ イル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

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

ト レーニング リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

お読みください: 重要な法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 4UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 5: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章

概要

このガイドについて

このガイ ドでは、 Zynq®-7000 SoC を使用するザイ リ ンクス Vivado® Design Suite フローについて説明します。 こ こに

示すサンプル プロジェク トは、ザイ リ ンクス ZC702 Rev 1.0 評価ボードをターゲッ ト と しており、使用するツールは

Vivado® Design Suite および Vitis™ 統合ソフ ト ウェア プラ ッ ト フォームです。

このガイ ドのサンプル プロジェク トは、64 ビッ トの Windows 7 オペレーティング システムで実行するザイ リ ンクス

ツール、 および 64 ビッ トの Linux オペレーティング システムで実行する PetaLinux を使用して作成されています。

ほかの Windows インス トールで別バージ ョ ンのツールを実行した場合、 結果が異なるこ とがあ り ます。 サンプル プ

ロジェク トは、 エンベデッ ド デザインの次の項目について紹介するこ とに重点を置いています。

注記: チュート リ アルで説明されている、 ハード ウェア上で Linux をブートする各手順は、 2019.2 リ リースの

PetaLinux ツールに固有のものです。 PetaLinux ツールは、 このガイ ドの Linux 部分の演習を実行するため、 Linux ホ

ス ト マシンにインス トールする必要があ り ます。

対象者および内容

このガイ ドは、 ソフ ト ウェア アプリ ケーシ ョ ン開発者、 システム ソフ ト ウェア開発者、 およびシステム ハードウェ

ア設計者を対象に、 次の情報を提供します。

• Zynq -7000SoC プロセッシング システム (PS) およびプログラマブル ロジッ ク (PL) を使用するシステム作成の

チュート リ アル

• Zynq SoC ボードにおける Linux OS のブートおよび PetaLinux ツールでのアプリ ケーシ ョ ン開発に関するチュー

ト リ アル

• Vitis 統合設計環境 (IDE) でのデバッグに関するチュート リ アル

• システム デザイン例

サンプル プロジェク ト

ツールを習得するための 良の方法は、 使用してみるこ とです。 このガイ ドでは、 説明に従ってツールを操作して

いきます。 サンプル プロジェク トのセクシ ョ ンでは、 サンプル プロジェク トの仕様のほかに、 背景で何が起こって

いるかも説明しています。 各章およびサンプル プロジェク トは、 エンベデッ ド デザインのさまざまな側面を紹介す

るこ とを目的と しています。 サンプル プロジェク ト を通して、 各項目の学習を完了して次に進む形でフロー全体が

説明されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 5UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 6: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

その他の資料

Vivado Design Suite: System Edition

ザイ リ ンクスでは、 さまざまな開発システム ツールを Vivado Design Suite にまとめて提供しています。Vivado Design

Suite の異なるエディシ ョ ンをエンベデッ ドシステム開発に使用できます。 このガイ ドでは、 System Edition を使用し

ます。 次の図に Vivado Design Suite の各エディシ ョ ンの機能を示します。

その他の Vivado コンポーネン ト

Vivado のその他のコンポーネン トは次のとおりです。

• ザイ リ ンクス エンベデッ ド プロセッサ用のエンベデッ ド /ソフ ト IP

• 資料

• サンプル プロジェク ト

X-Ref Target - Figure 1-1

図 1-1: Vivado Design Suite のエディシ ョ ン

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 6UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 7: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

Vitis 統合ソフ トウェア プラッ ト フォーム

Vitis 統合ソフ ト ウェア プラ ッ ト フォームは、ザイ リ ンクス エンベデッ ド プロセッサをターゲッ ト とするエンベデッ

ド ソフ ト ウェア アプリ ケーシ ョ ン開発用の統合開発環境 (IDE) です。 Vitis ソフ ト ウェア プラ ッ ト フォームは、

Vivado Design Suite で作成されたハード ウェア デザインに使用できます。Eclipse オープンソースをベースにしていま

す。 Eclipse 開発環境の詳細は、 http://www.eclipse.org を参照してください。

PetaLinux ツール

詳細は、 エンベデッ ド デザイン ツール ウェブ ページを参照してください。

PetaLinux ツールのデザイン ハブは、 PetaLinux ツールの情報および資料へのリ ンクを提供します。 詳細は、 エンベ

デッ ド デザイン ハブ - PetaLinux ツールを参照してください。

Zynq デバイスによるエンベデッ ド プロセッサ デザインの簡略化

エンベデッ ド システムは複雑です。 エンベデッ ド デザインのハード ウェア部分と ソフ ト ウェア部分は、 それぞれが

プロジェク トです。 これら 2 つのデザイン コンポーネン ト を 1 つのシステムと して機能するよ うに統合する と、 そ

れに伴う課題が出てきます。 FPGA デザイン プロジェク ト を追加する と、 デザインはさらに複雑になり ます。

Zynq SoC ソ リ ューシ ョ ンでは、1 つの SoC でプログラマブル ロジッ ク と共に Arm® Cortex®-A9 デュアル コアが提供

されているので、 この複雑性が軽減されます。

設計プロセスを単純にするため、 ザイ リ ンクスでは Vivado Design Suite および Vitis ソフ ト ウェア プラ ッ ト フォーム

を提供しています。 これらのツールは、 FPGA を結合した SoC デバイス向けのエンベデッ ド システム デザインを容

易にするために必要なものをすべて提供します。 これらのツールを組み合わせるこ とで、 ハード ウェアと ソフ ト

ウェアのアプリ ケーシ ョ ンの設計、 デバッグ、 コードの実行が可能になり、 デザインを実際のボードに移行して検

証および評価を実行できます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 7UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 8: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

Vivado ツールでデザイン プロセスを加速

Vivado Design Suite ツールを使用してハード ウェアにデザイン ソースを追加できます。 ツールには、 既存のプロジェ

ク トに IP を追加したり、 ク ロ ッ クやリセッ ト などのポートの接続を作成したりするプロセスを簡単に実行できる IP

インテグレーターが含まれます。

Vivado ツールと IP インテグレーターは、 一連のハードウェア システム開発を完了までサポート します。 これには、

マイ クロプロセッサの仕様、 ペリ フェラル、 各コンポーネン トの接続、 それらの詳細な設定などが含まれます。

Vitis ソフ ト ウェア プラ ッ ト フォームはソフ ト ウェア開発に使用し、 ほかのザイ リ ンクス ツールをインス トールせず

にインス トールして使用できます。 Vitis ソフ ト ウェア プラ ッ ト フォームは、 ソフ ト ウェア アプリ ケーシ ョ ンのデ

バッグにも使用できます。

Zynq SoC プロセッシング システム (PS) は、 FPGA (プログラマブル ロジッ ク (PL)) をプログラムしなくても、 ブート

して動作させるこ とができます。 ただし、 ファブ リ ッ クでソフ ト IP を使用したり、 EMIO を用いて PS ペリ フェラル

を接続するには、 PL をプログラムする必要があ り ます。 PL は、 Vitis ソフ ト ウェア プラ ッ ト フォームでプログラム

できます。

エンベデッ ド デザイン プロセスの詳細は、 『Vivado Design Suite チュート リ アル: エンベデッ ド プロセッサ ハード

ウェア デザイン』 (UG940) [参照 5] を参照してください。

必要なセッ トアップ

ツールについて詳し く説明する前に、 ツールが適切にインス トールされ、 使用する環境がこのガイ ドのサンプル プ

ロジェク ト セクシ ョ ンに記載されている要件に一致するかを確認します。

ハードウェア要件

このチュート リ アルは、 Zynq ZC702 Rev 1.0 評価ボードをターゲッ ト と しており、 Rev 1.0 ボードにも使用できます。

このガイ ドを活用するにあたって、 評価ボードに同梱されている次のものを用意してください。

• ZC702 評価ボード

• AC 電源アダプター (12 VDC)

• USB Type-A/Mini-B ケーブル (UART 通信用)

• USB-Micro JTAG 接続を介するプログラムおよびデバッグ用の USB Type-A/USB Micro ケーブル

• Linux ブート用の SD-MMC フラ ッシュ カード

• ターゲッ ト ボード とホス ト マシンの接続用のイーサネッ ト ケーブル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 8UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 9: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

インストール要件

Vitis ソフ トウェア プラッ ト フォームおよび Vivado Design Suite

Vitis ソフ ト ウェア プラ ッ ト フォームおよび Vivado Design Suite の両方がインス トールされているこ とを確認します。

ザイ リ ンクス サポート ページにアクセスし、 ツール バージ ョ ンが 新であるこ とを確認して ください。 Vitis ソフ ト

ウェア プラ ッ ト フォームをインス トールについては、 『Vitis 統合ソフ ト ウェア プラ ッ ト フォームの資料: エンベデッ

ド ソフ ト ウェア開発』 (UG1400) [参照 10] を参照して ください。Vitis ソフ ト ウェア プラ ッ ト フォームをインス トール

する と、 Vivado Design Suite も自動的にインス トールされます。

Vivado のみをインス トールする場合は、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート 、 インス トール、 お

よびライセンス』 (UG973) [参照 6] を参照してください。

X-Ref Target - Figure 1-2

図 1-2: Vitis ソフ トウェア プラッ ト フォーム 2019.2 インストーラー - 開発環境の選択

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 9UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 10: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

PetaLinux ツール

PetaLinux ツールは、 Linux OS と、 ザイ リ ンクス シ リ コン デバイス用の完全なコンフ ィギュレーシ ョ ン、 ビルド、 お

よび運用環境を含む、 Linux ディ ス ト リ ビューシ ョ ンです。

このチュート リ アルの Linux 部分の演習で実行する PetaLinux ツールをインス トールします。 PetaLinux ツールは、 次

のいずれかが稼働している Linux ホス ト システムで実行します。

• Red Hat Enterprise Workstation/Server 7.2、 7.3、 7.4、 7.5 (64 ビッ ト )

• CentOS 7.2、 7.3、 7.4、 7.5 (64 ビッ ト )

• Ubuntu Linux 16.04.3、 16.04.4 (64 ビッ ト )

このツールは、 専用 Linux ホス ト システム、 または Windows 開発プラ ッ ト フォーム上でこれらの Linux オペレー

ティング システムのいずれかが稼働している仮想マシンを使用できます。

PetaLinux ツールを選択したシステムにインス トールするには、 次を実行する必要があ り ます。

• ザイ リ ンクス ウェブサイ トから PetaLinux ソフ ト ウェア バージ ョ ン 2019.2 をダウンロード します。

• PetaLinux バージ ョ ン 2019.2 リ リース パッケージをインス トールします。

• ワークステーシ ョ ンまたは仮想マシンに共通のシステム パッケージおよびライブラ リ を追加します。 詳細は、

『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 8] の 「インス トール要件」 を参照して ください。

必要な環境

• 8 GB RAM (ザイ リ ンクス ツールで推奨される 小サイズ)

• 2 GHz CPU ク ロ ッ クまたは同等の CPU (少なく と も 8 つのコア)

• 100 GB のハードディ スク空き容量

PetaLinux パッケージの展開

デフォルトでは、 パッケージが現在のディ レク ト リのサブディ レク ト リ と してインス トールされます。 インス トー

ル パスを指定するこ と もできます。 ダウンロード した PetaLinux インス トーラーを実行します。

注記: PetaLinux のインス トール パスは短く して ください。 パスが 255 文字を超える と、 PetaLinux のビルドがエラー

になり ます。

bash> ./petalinux-v2019.2-final-installer.run

PetaLinux は、 このコマンドの作業ディ レク ト リの直下にある petalinux-v2019.2-final ディレク ト リにインス

トールされます。 インス トーラーをホーム ディレク ト リ (/home/user) に置いた場合、 PetaLinux は

/home/user/petalinux-v2019.2-final にインス トールされます。

PetaLinux 環境のセッ ト アップ、 プロジェク トの作成、 およびプロジェク トの使用例の詳細は、 第 6 章 「Linux のブー

トおよび Vitis ソフ ト ウェア プラ ッ ト フォームでのデバッ ク」 を参照してください。 PetaLinux のインス トールおよび

使用方法に関する詳細は、 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 8] に記載されています。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 10UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 11: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 1 章: 概要

ソフ トウェアのライセンス

ザイ リ ンクスのソフ ト ウェアには FLEXnet ラ イセンスが使用されています。 ソフ ト ウェアを初めて起動する際、 ラ

イセンスの検証プロセスが実行されます。 ライセンス検証で有効なライセンスが検出されない場合、 ライセンス

ウ ィザードに従ってライセンスを取得し、 インス トールしたツールでそのライセンスを使用できるよ うにします。

ソフ ト ウェアのフル バージ ョ ンが不要な場合は、 評価版ライセンスを使用できます。 インス トールの手順と詳細は、

『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス トール、 およびライセンス』 (UG973) [参照 6] を参照

してください。

チュート リアルのデザイン ファイル

このチュート リ アルのデザイン ファ イルのダウンロードについては、 129 ページの 「このチュート リ アルのデザイ

ン ファ イル」 を参照してください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 11UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 12: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章

Zynq SoC プロセッシング システムの使用ザイ リ ンクスの Vivado® Design Suite の概要に引き続き、 このツールを活用して Zynq®-7000 SoC プロセッシング シ

ステム (PS) を使用するエンベデッ ド システムを開発する方法を説明します。

Zynq SoC は、 Arm® Cortex®-A9 コア、 多数のハード IP コンポーネン ト、 およびプログラマブル ロジッ ク (PL) で構

成されています。 これらは次の 2 つの方法で使用できます。

• Zynq SoC PS は、 ファブリ ッ ク IP を追加せずに、 スタンドアロン モードで使用できます。

• IP コアをファブリ ッ クでインスタンシエート し、 PS と PL の組み合わせと して Zynq PS に接続できます。

エンベデッ ド システムのコンフ ィギュレーシ ョ ン

Zynq デバイス システム デザインの作成には、 ブート デバイスおよびペリ フェラルを適切に選択する PS のコンフ ィ

ギュレーシ ョ ンが含まれます。 PS ペリ フェラルと利用可能な MIO の接続がデザイン要件を満たしていれば、 ビッ ト

ス ト リームは必要あ り ません。 この章では、 ビッ ト ス ト リームを必要と しない簡単な PS ベースのデザインの作成手

順を説明します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 12UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 13: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

サンプル プロジェク ト : Zynq SoC の新規エンベデッ ド プロジェク トの作成

この例では、 Vivado Design Suite を起動し、エンベデッ ド プロセッシング システムのプロジェク ト を 上位と して作

成します。

デザインの開始

1. Vivado Design Suite を起動します。

2. [Quick Start] セクシ ョ ンの [Create Project] をク リ ッ ク し、 New Project ウ ィザードを開きます。

3. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

4. [Finish] をク リ ッ ク します。 New Project ウ ィザードが閉じ、 作成したプロジェク トが Vivado デザイン ツールで

開きます。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Project Name Project name edt_tutorial

Project location C:/designs

Create project subdirectory オン

Project Type デザインのソース タイプを指定。

RTL または合成済み EDIF から開始

可能。

RTL Project

Do not specify sources at this time オフ

Add Sources 変更なし。

Add Constraints 変更なし。

Default Part Select Boards

Board ZYNQ-7 ZC702 Evaluation Board

New Project Summary Project Summary プロジェク ト サマリ を確認。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 13UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 14: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

エンベデッ ド プロセッサ プロジェク トの作成

次の手順に従って、 エンベデッ ド プロセッサ プロジェク ト を作成します。

1. Flow Navigator の [IP Integrator] → [Create Block Design] をク リ ッ ク します。

[Create Block Design] ダイアログ ボッ クスが開きます。

2. [Create Block Design] ダイアログ ボッ クスで次のよ うに選択します。

3. [OK] をク リ ッ ク します。

[Diagram] ウ ィンド ウがこのデザインが空であるこ とを示すメ ッセージと共に表示されます。 デザインを開始す

るには、 カタログから IP を追加します。

4. [Add IP] をク リ ッ ク します。

5. [Search] フ ィールドに 「zynq」 と入力して Zynq デバイス IP を検索します。

X-Ref Target - Figure 2-1

図 2-1: [Create Block Design]

ウィザード ページ システム プロパティ 設定または使用するコマンド

Create Block Design Design name tutorial_bd

Directory <Local to Project>

Specify source set Design Sources

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 14UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 15: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

6. ZYNQ7 プロセッシング システム IP をダブルク リ ッ ク し、 ブロ ッ ク デザインに追加します。

図 2-2 に示すよ うに、 Zynq SoC プロセッシング システム IP ブロ ッ クが [Diagram] ウ ィンド ウに表示されます。

X-Ref Target - Figure 2-2

図 2-2: Zynq SoC プロセッシング システム IP ブロック

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 15UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 16: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

Vivado での Zynq7 プロセッシング システムの管理

Zynq SoC プロセッシング システムをデザインに追加したので、 オプシ ョ ンを設定します。

1. [Diagram] ウ ィンド ウで、 ZYNQ7 Processing System ブロ ッ クをダブルク リ ッ ク します。

図 2-3 に示す [Re-customize IP] ダイアログ ボッ クスが開きます。 デフォルトでは、 プロセッシング システムに

ペリ フェラルは接続されていません。

2. ZC702 ボード用に作成されたテンプレート を使用します。 [Re-customize IP] ウ ィンド ウで [Presets] をク リ ッ ク

し、 [ZC702] をク リ ッ ク します。

このコンフ ィギュレーシ ョ ン ウ ィザードによ り、 ZC702 のボード レイアウ トに従って MIO (Multiplexed I/O) ピ

ンが割り当てられた複数のペリ フェラルがプロセッシング システムで有効になり ます。 たとえば、 UART1 は有

効で、 UART0 は無効です。 これは、 UART1 が ZC702 ボード上の UART/USB コンバーター チップを介して

USB-UART コネクタに接続されているからです。

Zynq デバイスのブロ ッ ク図で各ペリ フェラル名の横に表示されているチェッ ク マークは、 それらの I/O ペリ

フェラルがアクティブであるこ とを示します。

X-Ref Target - Figure 2-3

図 2-3: [Re-customize IP] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 16UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 17: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

3. ブロ ッ ク図で緑色で示されている I/O ペリ フェラルの 1 つをク リ ッ ク します。 選択したペリ フェラルが [MIO

Configuration] ページに表示されます。

X-Ref Target - Figure 2-4

図 2-4: アクテ ィブなペリフェラルが示された I/O Peripherals

X-Ref Target - Figure 2-5

図 2-5: [MIO Configuration] ページ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 17UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 18: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

4. [OK] をク リ ッ ク して [Re-customize IP] ダイアログ ボッ クス閉じます。 ZC702 ボードのプ リセッ トが適用され

ます。

[Diagram] ウ ィンド ウに、 次の図のよ うなデザイン アシスタン トが使用可能であるこ とを示すメ ッセージが表示

されます。

5. [Run Block Automation] リ ンクをク リ ッ ク します。

[Run Block Automation] ダイアログ ボッ クスが開きます。

[Cross Trigger In] および [Cross Trigger Out] が [Disable] に設定されているこ とに注意してください。 ク ロス ト リ

ガーの設定に関する詳細なチュート リ アルは、 『Vivado Design Suite チュート リ アル: エンベデッ ド プロセッサ

ハードウェア デザイン』 (UG940) [参照 5] を参照してください。

6. [OK] をク リ ッ ク してデフォルトのプロセッシング システム オプシ ョ ンを選択し、 デフォルトのピン接続を作成

します。

デザインおよび接続ポートの検証

次に、 デザインを検証します。

1. [Diagram] ウ ィンド ウの空白部分を右ク リ ッ ク して、 [Validate Design] をク リ ッ ク します。 または、 F6 キーを押

します。

2. M_AXI_GP0_ACLK を接続する必要があるこ とを示すク リティカル エラー メ ッセージが表示されます。

3. [OK] をク リ ッ ク してメ ッセージを閉じます。

4. [Diagram] ウ ィンド ウで、 ZYNQ7 Processing System の M_AXI_GP0_ACLK ポート を見つけます。 コネクタ ポート

の上にマウス ポインターを置き、 鉛筆アイコンを表示させます。

X-Ref Target - Figure 2-6

図 2-6: [Run Block Automation] リンク

X-Ref Target - Figure 2-7

図 2-7: [Critical Messages] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 18UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 19: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

5. M_AXI_GP0_ACLK ポート をク リ ッ ク して FCLK_CLK0 入力ポート までド ラ ッグし、 2 つのポート を接続します。

6. デザインを再び検証し、 ほかにエラーがないこ とを確認します。 これには、 [Diagram] ウ ィンド ウの空白部分を

右ク リ ッ ク して [Validate Design] をク リ ッ ク します。

検証が成功し、 デザインにエラーや重大な警告がないこ とを示すメ ッセージ ダイアログ ボッ クスが表示され

ます。

7. [OK] をク リ ッ ク してメ ッセージを閉じます。

8. [Block Design] 環境の [Sources] ウ ィンド ウをク リ ッ ク します。

9. [Hierarchy] タブをク リ ッ ク します。

10. [Design Sources] の下の [tutorial_bd] を右ク リ ッ ク し、 [Create HDL Wrapper] をク リ ッ ク します。

[Create HDL Wrapper] ダイアログ ボッ クスが開きます。 このダイアログ ボッ クスを使用して、 プロセッサ サブ

システム用の HDL ラ ッパー ファ イルを作成します。

ヒン ト : HDL ラ ッパーは、 デザイン ツールに必要な 上位エンティティです。

11. [Let Vivado manage wrapper and auto-update] をオンにし、 [OK] をク リ ッ ク します。

12. [Sources] ウ ィンド ウで、 [Design Sources] の下にある [tutorial_bd_wrapper] を展開します。

X-Ref Target - Figure 2-8

図 2-8: 接続された ZYNQ7 Processing System

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 19UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 20: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

13. [tutorial_bd_i - tutorial_bd (tutorial_bd.bd)] という 上位ブロ ッ クを右ク リ ッ ク し、 [Generate Output Products] をク

リ ッ ク します。

次に示す [Generate Output Products] ダイアログ ボッ クスが開きます。

Linux ホス トマシンで Vivado Design Suite を実行している場合は、 [Run Settings] の下に追加オプシ ョ ンが表示さ

れるこ とがあ り ます。 その場合は、 デフォルト設定で続行します。

14. [Generate] をク リ ッ ク します。

この手順では、 選択したソースに必要なすべての出力ファイルを作成します。 たとえば、 IP プロセッサ システ

ムに対する制約を手動で作成する必要はあ り ません。 [Generate Output Products] を実行する と、 Vivado ツールで

プロセッサ サブシステム用の XDC ファ イルが自動的に生成されます。

15. [Generate Output Products] の処理が完了したら、 [OK] をク リ ッ ク します。

X-Ref Target - Figure 2-9

図 2-9: [Generate Output Products] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 20UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 21: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

16. [Block Design] の [Sources] ウ ィンド ウで、 [IP Sources] タブをク リ ッ ク します。 次の図に示すよ うに、 生成した出

力ファイルが表示されます。

デザインの合成、 インプリ メンテーシ ョ ンの実行、 およびビッ トス トリームの生成

1. デザインを合成します。 Flow Navigator で [Synthesis] → [Run Synthesis] をク リ ッ ク します。

2. 合成の開始前にプロジェク ト を保存するよ う メ ッセージが表示された場合は、 [Save] をク リ ッ ク します。

合成の実行中、 ウ ィンド ウの右上にステータスを示す円が表示されます。 このステータスを示す円は、 デザイ

ン プロセスを通してさまざまな理由によ り表示され、 プロセスがバッ クグランドで実行されているこ とを示し

ます。

合成が完了する と、 [Synthesis Completed] ダイアログ ボッ クスが開きます。

X-Ref Target - Figure 2-10

図 2-10: [IP Sources] の下に生成された出力

X-Ref Target - Figure 2-11

図 2-11: Run Synthesis

X-Ref Target - Figure 2-12

図 2-12: ステータスを示す円

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 21UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 22: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

3. [Run Implementation] をク リ ッ ク して [OK] をク リ ッ ク します。

この場合も、 プロセスがバッ クグラウンドで実行されているこ とが、 ステータス バーによって示されます。 イ

ンプ リ メンテーシ ョ ンが完了する と、 [Implementation Completed] ダイアログ ボッ クスが開きます。

4. [Generate Bitstream] をク リ ッ ク して [OK] をク リ ッ ク します。

ビッ ト ス ト リームの生成が完了する と、 [Bitstream Generation Completed] ダイアログ ボッ クスが開きます。

5. [Cancel] をク リ ッ ク してウ ィンド ウを閉じます。

6. ビッ ト ス ト リームの生成が完了したら、 ハード ウェアをエクスポート して Vitis™ 統合ソフ ト ウェア プラ ッ ト

フォームを起動します。

Vitis ソフ トウェア プラッ ト フォームへのハードウェアのエクスポート

1. [File] → [Export] → [Export Hardware] をク リ ッ ク します。

[Export Hardware] ダイアログ ボッ クスが開きます。 [Export to] フ ィールドはデフォルト オプシ ョ ンの

C:/designs/edt_tutorial/ のままにします。

注記: [Include bitstream] は、 デザインにプログラマブル ロジッ ク デザインが含まれ、 ビッ ト ス ト リームが生成されて

いる場合にのみオンにします。 それ以外の場合はオフにします。

2. [OK] をク リ ッ ク します。

ヒン ト : ハードウェアは ZIP ファ イル (<project wrapper>.xsa) でエクスポート されます。

3. Vitis IDE のデスク ト ップ シ ョート カッ ト または C:\Xilinx\Vitis\2019.2\bin\vitis.bat ファ イルをダ

ブルク リ ッ ク し、 Vitis IDE を起動します。 [Eclipse Launcher] ダイアログ ボッ クスが表示されます。

4. [Workspace] を C:\designs\workspace に設定します。 ワークスペース フォルダーが存在しない場合は作成

します。

X-Ref Target - Figure 2-13

図 2-13: ハードウェアのエクスポート

X-Ref Target - Figure 2-14

図 2-14: [Eclipse Launcher] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 22UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 23: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

5. [Launch] をク リ ッ ク します。Vitis 統合設計環境 (IDE) が開きます。 [File] → [New] → [Platform Project] をク リ ッ ク

し、 ザイ リ ンクス シェル アーカイブ (XSA) の出力からプラ ッ ト フォーム プロジェク ト を作成します。

6. New Platform Project ウ ィザードが開いたら、 プロジェク ト名 ([Project name]) を hw_platform に設定します。 [Use

default location] はオンのままにします。 [Next] をク リ ッ ク します。

7. [Create from hardware specification (XSA/DSA)] を選択します。 [Next] をク リ ッ ク します。

X-Ref Target - Figure 2-15

図 2-15: 新規プラッ ト フォーム プロジェク トの作成

X-Ref Target - Figure 2-16

図 2-16: プロジェク ト名の入力

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 23UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 24: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

8. [Platform Project Specification] ページで、 ハード ウェア仕様ファイル

C:\designs\edt_tutorial\tutorial_bd_wrapper.xsa を選択します。 XSA ファ イルを選択する と、

[Software Specification] エリアの [Operating system] が [standalone]、 [Processor] が [ps7_cortexa9_0] にアップデート

されます。 [Finish] をク リ ッ ク します。

X-Ref Target - Figure 2-17

図 2-17: ソフ トウェア仕様

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 24UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 25: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

9. プラ ッ ト フォーム プロジェク トが作成さます。 [Project Explorer] → [platform.spr] をダブルク リ ッ ク し、 次の図に

示すプラ ッ ト フォーム ビューを表示します。

.X-Ref Target - Figure 2-18

図 2-18: プラッ ト フォーム ビュー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 25UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 26: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

10. 次の図に示すよ うに、 [tutorial_bd_wrapper.xsa] ビューにプロセッシング システム全体のアドレス マッ

プが表示されます。

X-Ref Target - Figure 2-19

図 2-19: プロセッシング システムのアドレス マップ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 26UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 27: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

11. ハンマー アイコンをク リ ッ クするか、 プラ ッ ト フォーム プロジェク ト を右ク リ ッ ク して [Build] → [Project] をク

リ ッ ク し、 プラ ッ ト フォーム プロジェク ト をビルド します。

12. プロジェク トのビルド中、 [Console] ビューで出力を確認できます。 ビルドが完了する と、 次の図に示すよ うに、

上位プラ ッ ト フォーム XML ファ イル hw_platform.xpfm が生成され、 [Console] ビューに 「Build Finished」

と表示されます。

.

13. Vitis IDE を閉じます。

X-Ref Target - Figure 2-20

図 2-20: プロジェク トのビルド

X-Ref Target - Figure 2-21

図 2-21: ビルドが終了したことを示すログ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 27UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 28: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

ここまでの結果

Vivado からハード ウェア デザインがハード ウェア仕様ファイル (XSA) にエクスポート されました。 Vitis IDE を使用

して、 プラ ッ ト フォーム プロジェク ト を作成し、 XSA ファ イルを C:\designs\workspace のワークスペースに

エクスポート しました。エクスポートによ り ps7_cortexa9_0 プロセッサおよび FSBL アプリ ケーシ ョ ン プロジェク ト

を含むスタンドアロン ド メ インが生成されました。 プラ ッ ト フォーム プロジェク ト をビルド し、 Vitis IDE で作成す

るアプリ ケーシ ョ ンのプラ ッ ト フォームと して使用可能なザイ リ ンクス プラ ッ ト フォーム定義ファイル

(hw_platform.xpfm) を生成しました。

次の手順

これで、 Vitis ソフ ト ウェア プラ ッ ト フォームを使用してプロジェク トのソフ ト ウェア開発を開始できます。 次のセク

シ ョ ンでは、 ハードウェア プラ ッ ト フォーム用のソフ ト ウェア アプリケーシ ョ ンの作成に役立つ情報を提供します。

サンプル プロジェク ト : Hello World アプリケーシ ョ ンの実行

この例では、 Vitis IDE のシステム デバッガーを使用して、 ボード設定を管理、 ケーブルを接続、 PC を介してボード

に接続、 および JTAG モードで簡単な hello world ソフ ト ウェア アプリ ケーシ ョ ンを実行する方法を説明します。

注記: ボードが既にセッ ト アップされている場合は、 手順 5 に進みます。

1. 電源ケーブルをボードに接続します。

2. USB Micro ケーブルで Windows ホス ト マシンと ターゲッ ト ボードを次の SW10 スイ ッチ設定を使用して接続し

ます。

Bit-1 は 0

Bit-2 は 1

注記: 0 は開、 1 は閉です。

3. USB ケーブルで Windows ホス ト マシンと ターゲッ ト ボードのコネクタ J17 を接続します。 これは、 USB からシ

リアルへの転送に使用されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 28UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 29: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

4. 次の図に示すスイ ッチを使用して ZC702 ボードに電源を投入します。

重要: ジャンパー J27 および J28 は SD カード スロ ッ トから離れた側に設定し、 SW16 スイ ッチは図 2-22 に示すよ う

に設定します。

5. Vitis ソフ ト ウェア プラ ッ ト フォームを開き、 プロジェク ト ファ イルへのワークスペース パス (この例では

C:\designs\workspace) を設定します。

または、 デフォルトのワークスペースを使用して Vitis ソフ ト ウェア プラ ッ ト フォームを開き、 後で [File] →

[Switch Workspace] をク リ ッ ク して正しいワークスペースに切り替えるこ と もできます。

6. システムで割り当てられている COM ポートのシ リ アル通信ユーティ リ ティ を開きます。 Vitis ソフ ト ウェア プ

ラ ッ ト フォームではシ リ アル ターミナル ユーティ リ ティが提供されており、 これをチュート リ アルを通して使

用します。 [Window] → [Show View] → [Terminal] をク リ ッ ク してこのユーティ リ ティ を開きます。

X-Ref Target - Figure 2-22

図 2-22: ZC702 ボードの電源スイッチ

X-Ref Target - Figure 2-23

図 2-23: [Terminal] ウィンドウのヘッダー バー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 29UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 30: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

7. [Launch Terminal] ボタン をク リ ッ ク して [Launch Terminal] ダイアログ ボッ クスを開きます。

[Choose terminal] で [Serial Terminal] を選択し、 [OK] をク リ ッ ク します。 次の図に、 Zynq SoC プロセッシング シ

ステム用の標準的な設定を示します。

8. [File] → [New] → [Application Project] をク リ ッ ク します。

New Application Project ウ ィザードが開きます。

9. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

hello_world アプリケーシ ョ ン プロジェク トが [Project Explorer] ビューに作成されます。hello_world アプリ

ケーシ ョ ンを右ク リ ッ ク して [Build Project] をク リ ッ ク し、 hello_world.elf バイナリ ファイルを生成します。

10. [hello_world] を右ク リ ッ ク して [Run as] → [Run Configurations] をク リ ッ ク します。

11. [Single Application Debug] を右ク リ ッ ク し、 [New Configuration] をク リ ッ ク します。

Debugger_hello_world-Default という名前の新しい実行コンフ ィギュレーシ ョ ンが作成されます。

アプ リ ケーシ ョ ンに関連するコンフ ィギュレーシ ョ ンは、 起動コンフ ィギュレーシ ョ ンの [Main] タブに自動入

力されます。

X-Ref Target - Figure 2-24

図 2-24: [Launch Terminal] ダイアログ ボックス

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project

Project name hello_world

Use default location オン

System project hello_world_system

Platform hw_platform

Domain standalone_domain(1)

Language C

Templates Available Templates Hello World

注記:1. デフォルトでは、 この手順によ り [CPU] が [ps7_cortexa9_0] に、 [OS] が [standalone] に設定されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 30UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 31: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 2 章: Zynq SoC プロセッシング システムの使用

12. [Target Setup] タブをク リ ッ ク し、 設定を確認します。 デフォルトは Tcl スク リプ トです。

13. [Run] をク リ ッ ク します。

次の図に示すよ うに、 [Terminal] ビューのシ リアル通信ユーティ リ ティに 「Hello World」 と表示されます。

注記: Zynq SoC 評価ボードで上記のソフ ト ウェア アプリ ケーシ ョ ンを実行するのに、 ビッ ト ス ト リームをダウン

ロードする必要はあ り ませんでした。 Arm Cortex-A9 クワ ッ ド コアは既にボードに実装されています。 単純なアプリ

ケーシ ョ ンを実行するこのシステムの基本的な初期化は、 デバイス初期化 Tcl スク リプ トで実行されます。

ここまでの結果

アプ リ ケーシ ョ ン ソフ ト ウェアによって、 「Hello World」 の文字列が PS の UART1 ペリ フェラルに送信されま

した。

UART1 から Hello World の文字列がホス ト マシンで動作しているシ リ アル ターミナル アプリ ケーシ ョ ンにバイ

ト ごとに送信され、 文字列と して表示されます。

その他の情報

ド メイン (ボード サポート パッケージ)ド メ イン (ボード サポート パッケージ (BSP)) は、 アプリ ケーシ ョ ンをビルドするためのソフ ト ウェア ド ラ イバーお

よびオプシ ョ ンで OS をま とめたものです。 ハード ウェア プラ ッ ト フォームまたはボードのサポート コードで、 電

源投入時の基本的な初期化およびソフ ト ウェア アプリ ケーシ ョ ンのハード ウェア プラ ッ ト フォームまたはボード上

での実行をサポート します。 ド メ インで実行するアプリ ケーシ ョ ンを複数作成できます。 ド メ インは、 プラ ッ ト

フォーム上の 1 つのプロセッサに関連付けられます。

スタンドアロン OSスタンドアロンはシンプルな下位ソフ ト ウェア層です。 キャ ッシュ、 割り込み、 例外などの基本的なプロセッサ機

能、 およびホス ト環境の基本的なプロセッサ機能へのアクセスを提供します。 これらの機能には、 標準の入力/出力、

プロファ イル、 停止、 終了が含まれます。 これはセミ ホス ト型のシングル スレッ ド環境です。

T

重要: この章で実行したアプリケーシ ョ ンは、 スタンドアロン OS 上に作成されています。 ソフ ト ウェア アプリケー

シ ョ ンがターゲッ トにする ド メ イン/BSP は、 新規アプリケーシ ョ ン プロジェク ト を作成するプロセスで選択します。

X-Ref Target - Figure 2-25

図 2-25: シリアル ターミナルへの出力

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 31UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 32: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章

Zynq デバイスでの GP ポートの使用ザイ リ ンクス Zynq®-7000 SoC をエンベデッ ド デザインのプラ ッ ト フォームと して使用する特徴の 1 つは、 Arm®

Cortex®-A9 デュアル コア プロセッシング システムに Zynq SoC のプロセッシング システム (PS) を使用できるだけで

なく、 プログラマブル ロジッ ク (PL) も使用できるこ とです。

この章では、 次を含むデザインを作成します。

• ファブ リ ッ ク (PL) にファブリ ッ クから PS への割り込みを持つ AXI GPIO および AXI Timer

• EMIO インターフェイスを介してファブリ ッ ク (PL) 側のピンに接続される Zynq SoC PS GPIO ピン

この章のフローは第 2 章のものと似ており、 Zynq デバイスをベースのハード ウェア デザインと して使用します。 こ

こでは、 第 2 章で説明されている Zynq デバイスの Vivado® IP インテグレーター ブロ ッ ク デザインへの追加に関す

る概念を理解しているこ とを前提と しています。 この章全体を通して第 2 章の内容について言及しているため、 前

章を飛ばした場合は必要に応じて内容を確認してください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 32UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 33: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

Zynq SoC プロセッシング システムへのファブリ ックに IP を追加

ファブ リ ッ クで追加可能な Zynq SoC PS と密結合される IP は、 その複雑さに制限はあ り ません。 このセクシ ョ ンで

は、 AXI GPIO、 割り込みを持つ AXI Timer、 および EMIO インターフェイスを介して PL 側のピンに接続される PS

の GPIO ピンを含む簡単な例を説明します。

デザインを作成して、 ファブ リ ッ クにインスタンシエート された AXI GPIO および割り込み付き AXI Timer、 および

EMIO インターフェイスを使用する PS の GPIO の機能を確認します。 図 3-1 にシステムのブロ ッ ク図を示します。

第 2 章で作成したシステムを使用して、 14 ページの 「エンベデッ ド プロセッサ プロジェク トの作成」 の後から続行

できます。

この章の例では、 第 2 章のデザインを拡張します。 次のデザイン変更を加えます。

• ファブ リ ッ ク側の AXI GPIO は、 1 ビッ トのチャネル幅が割り当てられ、 ZC702 ボード上の SW5 プッシュボタ

ン スイ ッチに接続されます。

• PS の GPIO ポートは、ファブ リ ッ ク ピンを (EMIO インターフェイスを介して) ボード上の SW7 プッシュボタン

スイ ッチに配線する 1 ビッ ト幅のインターフェイスを含むよ うに変更されます。

X-Ref Target - Figure 3-1

図 3-1: ブロック図

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 33UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 34: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

• PS では、 別の 1 ビッ ト GPIO が MIO ポートにあるボード上の DS23 LED に接続されます。

• AXI Timer の割り込みは、 ファブ リ ッ クから PS の割り込みコン ト ローラーに接続されます。 このタイマーは、

ボード上の指定されたプッシュボタンを押すと開始します。 タイマーが終了する と、 その割り込みが ト リガー

されます。

• 上記のハードウェアの変更に加え、 アプリ ケーシ ョ ン ソフ ト ウェア コードを記述します。 このコードは、 次の

よ うに機能します。

° シ リアル ターミナルにメ ッセージを表示し、 ボードで使用するプッシュボタン スイ ッチ (SW7 または

SW5) の選択をユーザーに求めます。

° ユーザーが適切なボタンを押すと、 タイマーが自動的に開始し、 LED DS23 をオフにして、 タイマーの割り

込みが発生するのを待機します。

° タイマーの割り込みが発生したら、 LED DS23 をオンにし、 タイマーを再開して、 シ リ アル ターミナルで

ユーザーがプッシュボタン スイ ッチを再度選択するのを待機します。

サンプル プロジェク ト : インスタンシエート されたファブリ ック IP の機能の検証

この例では、 ファブ リ ッ クに AXI GPIO、 AXI Timer、 割り込み、 および EMIO インターフェイスを追加します。 そ

の後、 ファブ リ ッ クの追加機能を検証します。

1. Vivado® Design Suite を起動します。

2. [Recent Projects] で、 第 2 章で作成した [edt_tutorial] デザインをク リ ッ ク します。

3. [IP Integrator] の下の [Open Block Design] をク リ ッ ク します。

4. [Diagram] ウ ィンド ウの空白部分を右ク リ ッ ク し、 [Add IP] をク リ ッ ク します。

5. 検索ボッ クスに 「AXI GPIO」 と入力し、 [AXI GPIO] IP をダブルク リ ッ ク してブロッ ク図に追加します。

AXI GPIO IP ブロッ クが [Diagram] ウ ィンド ウに表示されます。

6. [Diagram] ウ ィンド ウの空白部分を右ク リ ッ ク し、 [Add IP] をク リ ッ ク します。

7. 検索ボッ クスに 「AXI Timer」 と入力し、 [AXI Timer] IP をダブルク リ ッ ク してブロ ッ ク図に追加します。 AXI

Timer IP ブロ ッ クが [Diagram] ウ ィンド ウに表示されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 34UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 35: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

8. ZYNQ7 SoC Processing System の EMIO コンフ ィギュレーシ ョ ンを編集して、割り込みを有効にします。 [ZYNQ7

Processing System] IP ブロ ッ クを右ク リ ッ ク し、 [Customize Block] をク リ ッ ク します。

注記: IP ブロ ッ クをダブルク リ ッ ク してカスタマイズするこ と もできます。

図 3-2 に示す [Re-customize IP] ダイアログ ボッ クスが開きます。

9. [MIO Configuration] をク リ ッ ク します。

10. [I/O Peripherals] → [GPIO] を展開して [EMIO GPIO (Width)] をオンにします。

11. [EMIO GPIO (Width)] を 1 に変更します。

12. ZYNQ7 Processing System のコンフ ィギュレーシ ョ ン オプシ ョ ンを開いた状態で、[Interrupts] → [Fabric Interrupts]

→ [PL-PS Interrupt Ports] を展開します。

13. [Fabric Interrupts] をオンにし、 [IRQ_F2P[15:0]] もオンにして IP コアでの PL-PS 割り込みを有効にします。

X-Ref Target - Figure 3-2

図 3-2: [Re-customize IP] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 35UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 36: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

14. [OK] をク リ ッ ク して ZYNQ7 Processing System IP の変更を確定します。 ブロ ッ ク図は図 3-3 のよ うになり ます。

15. ページの上部に表示される [Run Connection Automation] リ ンクをク リ ッ ク し、 新し く追加した IP ブロ ッ クを自

動接続します。

16. [Run Connection Automation] ダイアログ ボッ クスで、 図 3-4 に示すよ うに [All Automation] の横にあるチェッ ク

ボッ クスをオンにします。

X-Ref Target - Figure 3-3

図 3-3: ZYNQ7 Processing System IP

X-Ref Target - Figure 3-4

図 3-4: [Run Connection Automation] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 36UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 37: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

17. [OK] をク リ ッ ク します。

完了する と、 更新されたブロ ッ ク図は図 3-5 のよ うになり ます。

18. [AXI GPIO] IP ブロ ッ クを右ク リ ッ ク し、 [Customize Block] をク リ ッ ク します。

注記: IP ブロ ッ クをダブルク リ ッ ク してカスタマイズするこ と もできます。

19. [Board] タブで、 [GPIO] および [GPIO2] が [Custom] に設定されているこ とを確認します。

20. [IP Configuration] タブをク リ ッ ク します。必要な GPIO ポートは 1 つだけであるため、 [GPIO] で [GPIO Width] を

1 に変更します。 [All Inputs] と [All Outputs] が両方と もオフになっているこ と も確認します。

21. [OK] をク リ ッ ク して変更を確定します。

22. 割り込みポートは自動的には AXI Timer IP コアに接続されないこ とに注意してください。 [Diagram] ウ ィンド ウ

で、 ZYNQ7 Processing System の IRQ_F2P[0:0] ポート を見つけます。

23. コネクタ ポートの上にマウス ポインターを置いて鉛筆アイコンを表示させ、 IRQ_F2P[0:0] ポート をク リ ッ ク し

て AXI Timer IP コアの interrupt 出力ポートにド ラ ッグし、 これら 2 つのポート を接続します。

24. ZYNQ7 Processing System の GPIO_0 ポートが接続されていないこ とに注意して ください。 ZYNQ7 Processing

System の GPIO_0 出力ポート を右ク リ ッ ク し、 [Make External] をク リ ッ ク します。

これらのピンは外部ピンですが、 このボードでは必要な制約はあ り ません。 ハード ウェア ピンを特定のデバイ

ス位置に制約するには、 次の手順に従います。 この手順は、 ピンを手動で配置する際にいつでも使用できます。

X-Ref Target - Figure 3-5

図 3-5: 自動接続を実行した後のブロック図

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 37UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 38: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

25. Flow Navigator で [RTL Analysis] の下にある [Open Elaborated Design] をク リ ッ ク します。

26. 次のに示す [Elaborate Design] メ ッセージ ボッ クスが開いたら、 [OK] をク リ ッ ク します。

ヒン ト : デザインのエラボレートには数分かかり ます。デザインのエラボレートが進行中に Vivado でほかの作業を実

行するには、 [Background] をク リ ッ ク します。 これによ り、 エラボレート プロセスがバッ クグラウンドで続行され

ます。

27. 次の図に示すよ うに、 メ イン ウ ィンド ウの右上にあるレイアウ ト セレク ターで [I/O Planning] を選択し、 [I/O

Ports] ウ ィンド ウを表示します。

X-Ref Target - Figure 3-6

図 3-6: [Open Elaborated Design]

X-Ref Target - Figure 3-7

図 3-7: [Elaborate Design] メ ッセージ ボックス

X-Ref Target - Figure 3-8

図 3-8: [I/O Planning] レイアウト を選択

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 38UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 39: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

28. 次の図に示す [I/O Ports] ウ ィンド ウで、 [GPIO_0_0_18048] ポートおよび [gpio_sw_18048] ポート を展開し、 サイ

ト (ピン) マップを確認します。

29. [GPIO_0_0_tri_io[0]] を見つけ、 図 3-10 に示すよ うに次のプロパティを設定します。

° [Package Pin]: [F19]

° [I/O Std]: [LVCMOS25]

30. [gpio_sw_tri_io[0]] を見つけ、 図 3-10 に示すよ うに次のプロパティを設定します。

° [Package Pin}: [G19]

° [I/O Std]: [LVCMOS25]

注記: その他のデザイン制約の作成に関する詳細は、 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903)

[参照 3] を参照して ください。

31. Flow Navigator で [Program and Debug] → [Generate Bitstream] をク リ ッ ク します。

[Save Project] ダイアログ ボッ クスが開きます。 [Elaborated Design - constrs_1] がオンになっているこ とを確認し、

[Save] をク リ ッ ク します。

X-Ref Target - Figure 3-9

図 3-9: [I/O Ports] ウィンドウのサイ ト マップ

X-Ref Target - Figure 3-10

図 3-10: [I/O Ports] のプロパティ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 39UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 40: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

32. 次の図に示す [Save Constraints] ダイアログ ボッ クスが表示されます。 ファ イル名 (GPIO_Constraints) を指定

して [OK] をク リ ッ ク します。 [Synthesis is Out-of-date] ダイアログ ボッ クスが開きます。 [Yes] をク リ ッ ク して再

合成します。 [Launch Runs] ダイアログ ボッ クスが開きます。 [OK] をク リ ッ ク して合成を実行します。

制約ファイルが作成されて保存され、次の図に示すよ うに [Sources] ウ ィンド ウの [Hierarchy] タブの [Constraints]

フォルダーに表示されます。

X-Ref Target - Figure 3-11

図 3-11: [Save Constraints] ダイアログ ボックス

X-Ref Target - Figure 3-12

図 3-12: [Sources] ウィンドウに表示された新しい制約ファイル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 40UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 41: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

33. ビッ ト ス ト リームの生成が完了したら、 22 ページの 「Vitis ソフ ト ウェア プラ ッ ト フォームへのハードウェアの

エクスポート 」 の説明に従ってハード ウェアをエクスポート して Vitis™ IDE を起動します。

注記: デザインにはプログラマブル ロジッ ク IP が含まれるので、 ハード ウェアをエクスポートする際に [Include

bitstream] がオンになっているこ とを確認してください。 次の図に示すよ うに、 [Export to] を

C:/designs/edt_tutorial に設定します。

Vitis ソフ トウェア プラッ ト フォームでの操作

Vitis IDE を開き、 Vivado からエクスポート されたハード ウェアを手動でアップデート します。 [Project Explorer]

ビューで [hw_platform] プラ ッ ト フォーム プロジェク ト を右ク リ ッ ク し、[Update Hardware Specification] をク リ ッ ク し

ます。

X-Ref Target - Figure 3-13

図 3-13: [Export Hardware] ダイアログ ボックスで [Include bitstream] チェ ック ボックスをオン

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 41UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 43: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

1. [Update Hardware Specification] ダイアログ ボッ クスで Vivado からエクスポート した XSA ファ イルを選択し、

[OK] をク リ ッ ク します。 次の図に示すよ うに、 プラ ッ ト フォーム プロジェク トのハード ウェア仕様がアップ

デート されたこ とを示すダイアログ ボッ クスが表示されます。

2. アップデートが必要なプラ ッ ト フォーム プロジェク ト を再ビルド します。 [hw_platform] プロジェク ト を右ク

リ ッ ク します。 [Clean Project] をク リ ッ ク し、 その後 [Build Project] をク リ ッ ク します。

X-Ref Target - Figure 3-15

図 3-15: ハードウェア仕様がアップデート されたことを示すダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 43UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 44: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

3. hw_platform プロジェク トのビルドが完了する と、 hw_platform.xpfm ファ イルが生成されます。

4. 第 2 章でスタンドアロン PS で作成した hello_world プロジェク トの helloworld.c ファ イルを開き、

48 ページの 「デザイン用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア」 の説明に従ってアプリ ケーシ ョ ン

ソフ ト ウェア コードを変更します。

5. ファ イルを保存し、 プロジェク ト を再ビルド します。

6. シ リアル通信ユーティ リ ティ をボー レート を 115200 に設定して開きます。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

7. ボードに接続します。

PL ファブリ ッ クのビッ ト ス ト リームがあるので、 これをダウンロードする必要があ り ます。

X-Ref Target - Figure 3-16

図 3-16: XPFM ファイル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 44UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 45: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

8. [Xilinx] → [Program FPGA] をク リ ッ ク します。 図 3-17 に示す [Program FPGA] ダイアログ ボッ クスが開きます。

Vivado からエクスポート されたビッ ト ス ト リームを選択します。

9. [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード して PL ファブリ ッ クをプログラムします。 FPGA の

プログラムが終了する と、 次の図に示すよ うに、 [Progress Information] ダイアログ ボッ クスに 「FPGA

configuration complete」 と表示されます。

X-Ref Target - Figure 3-17

図 3-17: [Program FPGA] ダイアログ ボックス

X-Ref Target - Figure 3-18

図 3-18: FPGA コンフ ィギュレーシ ョ ン完了

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 45UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 46: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

10. 28 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の手順と同じよ うにプロジェク ト

を実行します。手順 9 と 10 を正常に実行できなかった場合は、 [Run Configurations] ダイアログ ボッ クスを開き、

Vivado からエクスポート されたビッ ト ス ト リームを選択し、 [Run] をク リ ッ ク します。 この手順によ り、 FPGA

がプログラムされ、 アプ リ ケーシ ョ ンが実行されます。

11. システムでは、 AXI GPIO ピンがボード上のプッシュボタン SW5 に接続され、 PS の GPIO ピンが EMIO イン

ターフェイスを介してボード上のプッシュボタン SW7 に接続されます。

X-Ref Target - Figure 3-19

図 3-19: [Run Configuration] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 46UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 47: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

12. シ リアル ターミナルに表示される手順に従ってアプリ ケーシ ョ ンを実行します。 次の図のシ リ アル出力ログを

参照してください。

X-Ref Target - Figure 3-20

図 3-20: シリアル出力ログ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 47UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 48: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

デザイン用のスタンドアロン アプリケーシ ョ ン ソフ トウェア

この章で設計したシステムをボードで実行するには、 アプリ ケーシ ョ ン ソフ ト ウェアが必要です。 このセクシ ョ ン

では、 アプ リ ケーシ ョ ン ソフ ト ウェアの詳細を説明します。

アプ リ ケーシ ョ ン ソフ ト ウェアの main() 関数は、 実行のエン ト リ ポイン トです。 この関数は、 初期化およびシス

テムで接続されるすべてのペリ フェラルに必要な設定を含みます。 さ らに、 AXI GPIO や EMIO インターフェイスを

使用する PS GPIO などのユース ケースを実行するための手順も含まれます。 シ リ アル ターミナルの手順に従ってさ

まざまなユース ケースを選択できます。

アプリケーシ ョ ン ソフ トウェアの構成手順

アプリ ケーシ ョ ン ソフ ト ウェアは次の手順で構成されます。

1. AXI GPIO モジュールを初期化します。

2. AXI GPIO ピンが入力ピンとなるよ うに方向を設定します。 このピンは、 ボード上の SW5 プッシュボタンに接

続されます。 このピンの位置は、 システムの構築中にユーザー制約ファイル (XDC) の LOC 制約によ り固定され

ます。

3. AXI Timer モジュールをデバイス ID 0 で初期化します。

4. タイマー コールバッ ク関数を AXI timer ISR と関連付けます。

この関数は、 タイマーの割り込みが発生するたびに呼び出されます。 このコールバッ クによ り、 ボード上の

LED DS23 がオンになり、 割り込みフラグがセッ ト されます。

main() 関数は割り込みフラグを使用して実行を停止し、 タイマー割り込みの発生を待機した後に実行を再開

します。

5. タイマーのリセッ ト値を設定します。 この値は、 リセッ トおよびタイマーの開始時にタイマーに読み込まれます。

6. 割り込みモードや自動再読み込みモードなどのタイマー オプシ ョ ンを設定します。

7. PS の GPIO を初期化します。

8. PS の GPIO (チャネル 0、 ピン番号 10) を出力ピンに設定します。 このピンは MIO ピンにマップされ、 ボード上

の LED DS23 に物理的に接続されます。

9. PS の GPIO (チャネル 2、 ピン番号 0) を入力ピンに設定します。 このピンは、 EMIO インターフェイスを介して

PL 側のピンにマップされ、 SW7 プッシュボタン スイ ッチに物理的に接続されます。

10. スヌープ制御ユニッ トであるグローバル割り込みコン ト ローラーを初期化します。 タイマー割り込みルーチン

を割り込み ID 91 に設定し、 例外ハンド ラーを登録して割り込みを有効にします。

11. ループのシーケンスを実行し、 シ リ アル ターミナルで AXI GPIO または PS GPIO いずれかのユース ケースを選

択します。

ソフ ト ウェアは、 選択したユース ケースをシ リ アル ターミナルから受信し、 それに応じた手順を実行します。

シ リ アル ターミナルでユース ケースを選択した後、 ターミナルの手順に従ってボード上のプッシュボタンを押

します。 LED DS23 をオフにする と、 タイマーが開始し、 タイマー割り込みが発生するまで関数を待機させま

す。 タイマーの割り込みが発生する と、 LED DS23 がオンになって実行が再開します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 48UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 49: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 3 章: Zynq デバイスでの GP ポートの使用

アプリケーシ ョ ン ソフ トウェアのコード

システムのアプリ ケーシ ョ ン ソフ ト ウェアは、 このガイ ドに付属の ZIP ファ イルにある helloworld.c に含まれま

す。 詳細は、 129 ページの 「このチュート リ アルのデザイン ファ イル」 を参照して ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 49UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 50: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 4 章

Vitis ソフ トウェア プラッ ト フォームでのデバッグ

この章では、 これまで説明してきたデザイン フローで可能なデバッグについて説明します。 初のオプシ ョ ンは、

ザイ リ ンクス Vitis™ 統合ソフ ト ウェア プラ ッ ト フォームを使用したソフ ト ウェアでのデバッグです。

Vitis ソフ ト ウェア プラ ッ ト フォーム デバッガーには、 次のデバッグ機能があ り ます。

• MicroBlaze™ および Arm® Cortex®-A9 プロセッサ アーキテクチャ上のプログラムのデバッグをサポート (ヘテ

ロジニアス マルチプロセッサ ハードウェア システムのデバッグ)

• ハードウェア ボード上のプログラムのデバッグをサポート

• リモート ハードウェア システムでのデバッグ

• プログラムをデバッグするための豊富な機能を備えた統合デザイン環境 (IDE) を提供

• テス ト スク リプ トの実行および自動化のためのツール コマンド言語 (Tcl) インターフェイスを提供

Vitis デバッガーを使用する と、 プログラムの実行中に何が起こっているかを確認できます。 プロセッサを停止する

ブレークポイン ト またはウォッチポイン トの設定、 プログラムのステップ実行、 プログラム変数およびスタ ッ クの

確認、 システム内のメモ リ内容の確認などを実行できます。

Vitis ソフ ト ウェア プラ ッ ト フォームでは、 ザイ リ ンクス システム デバッガーおよび GNU デバッガー (GDB) を使用

したデバッグがサポート されます。

注記: GDB フローは廃止予定となっており、 今後のデバイスでは使用できな くなる予定です。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 50UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 51: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 4 章: Vitis ソフ トウェア プラッ ト フォームでのデバッグ

ザイリンクス システム デバッガー

ザイ リ ンクス システム デバッガーでは、 ザイ リ ンクスの hw_server が基本のデバッグ エンジンと して使用されます。

Vitis ソフ ト ウェア プラ ッ ト フォームは、 各ユーザー インターフェイス操作を一連の TCF (Target Communication

Framework) コマンドに変換し、 システム デバッガーからの出力を処理して、 デバッグされているプログラムの現在の

ステート を表示します。 SDK は、 ザイ リ ンクスの hw_server を使用してハードウェア上のプロセッサと通信します。

次の図に、 このデバッグ ワークフローを示します。

ワークフローは、 次の要素で構成されます。

• 実行可能な ELF ファ イル: ユーザー アプリ ケーシ ョ ンをデバッグするには、 デバッグ用にコンパイルされた

ELF (Executable and Linkable Format) ファ イルを使用する必要があ り ます。 デバッグ ELF ファ イルには、 デバッ

ガーへの追加のデバッグ情報が含まれ、 ソース コード とその元のソースから生成された 2 進数間が直接関連付

けられます。 ビルド コンフ ィギュレーシ ョ ンを管理するには、 ソフ ト ウェア アプリ ケーシ ョ ンを右ク リ ッ ク し

て [Build Configurations] → [Manage] をク リ ッ ク します。

• デバッグ コンフ ィギュレーシ ョ ン: デバッグ セッシ ョ ンを開始するには、 Vitis ソフ ト ウェア プラ ッ ト フォーム

でデバッグ コンフ ィギュレーシ ョ ンを作成する必要があ り ます。 このコンフ ィギュレーシ ョ ンには、 実行ファ

イル名、 デバッグするプロセッサ ターゲッ ト など、 デバッグ セッシ ョ ンを開始するのに必要な情報が含まれま

す。 デバッグ コンフ ィギュレーシ ョ ンを作成するには、 ソフ ト ウェア アプリ ケーシ ョ ンを右ク リ ッ ク して

[Debug As] → [Debug Configurations] をク リ ッ ク します。

• [Debug] パースペクティブ: [Debug] パースペクティブを使用する と、 ワークベンチでプログラムのデバッグまた

は実行を管理できます。 ブレークポイン ト を設定、 実行中のプログラムを一時停止、 コードをステップ実行、

変数の内容を確認するなど、 プログラムの実行を制御できます。 [Debug] ウ ィンド ウを表示するには、 [Window]

→ [Open Perspective] → [Debug] をク リ ッ ク します。

X-Ref Target - Figure 4-1

図 4-1: システム デバッガーのフロー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 51UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 52: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 4 章: Vitis ソフ トウェア プラッ ト フォームでのデバッグ

Vitis ソフ ト ウェア プラ ッ ト フォームで、 コードの修正、 実行ファイルの構築、 プログラムのデバッグというサ

イ クルを繰り返すこ とができます。

注記: コンパイル後にソースを編集する と、 デバッグ情報がそのソースに直接関連付けられているため、 その行

番号はステップ実行されなくな り ます。 同様に、 適化されたバイナリ をデバッグする と、 実行ト レース中に

予期しないジャンプが発生するこ とがあ り ます。

Vitis ソフ トウェア プラッ ト フォームでのソフ トウェアのデバッグ

この例では、 hello world アプリ ケーシ ョ ンをデバッグします。

前の章で hello world アプリ ケーシ ョ ンを変更した場合は、 デバッグの実行前に新しい hello world アプリ ケーシ ョ ン

を作成する必要があ り ます。 新しい hello world アプリ ケーシ ョ ンを作成するには、 28 ページの 「サンプル プロジェ

ク ト : Hello World アプリ ケーシ ョ ンの実行」 の手順に従います。

hello world アプリ ケーシ ョ ンを作成したら、 Vitis ソフ ト ウェア プラ ッ ト フォームで次の例を実行してソフ ト ウェア

をデバッグします。

1. [C/C++] パースペクティブで、 Hello_world プロジェク ト を右ク リ ッ ク して [Debug As] → [Debug

Configurations] をク リ ッ ク します。

[Target Setup] タブで、 [Hardware Platform] に Vivado® Design Suite からエクスポート されたものを選択して

[Debug] をク リ ッ ク します。

[Debug] パースペクティブが開きます。

注記: [Debug] パースペクティブが自動的に開かない場合は、 [Window] → [Open perspective] をク リ ッ ク し、 Open

Perspective ウ ィザードで [Debug] を選択します。

X-Ref Target - Figure 4-2

図 4-2: [Debug Configurations] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 52UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 53: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 4 章: Vitis ソフ トウェア プラッ ト フォームでのデバッグ

注記: このページに示されているアドレスは、 システムで表示されているものと若干異なる場合があ り ます。

プロセッサが main() の冒頭にあ り、 プログラム実行が 0x0010058c で停止しているこ とがわかり ます。 この

情報は [Disassembly] ビューで確認できます。 このビューに、 アセンブリ レベルのプログラム実行が

0x0010058c で一時停止しているこ とが示されています。

注記: [Disassembly] ビューが表示されていない場合は、 [Window] → [Show View] → [Debug] → [Disassembly] をク

リ ッ ク します。

2. helloworld.c ウ ィンド ウにも、 C コードの 初の実行可能な行で実行が一時停止しているこ とが表示されま

す。 [Registers] ビューを選択し、 プログラム カウンターである pc レジスタに 0x0010058c が含まれているこ と

を確認します。

注記: [Registers] ウ ィンド ウが表示されていない場合は、 [Window] → [Show View] → [Debug] → [Registers] をク

リ ッ ク します。

3. init_platform () および print () を読み出すコードの行の横にある、helloworld.c ウ ィンド ウの空白

をダブルク リ ッ ク します。 これによ り、 init_platform () および print () にブレークポイン トが設定さ

れます。 ブレークポイン ト を確認するには、 [Breakpoints] ウ ィンド ウを使用します。

注記: [Breakpoints] ウ ィンド ウが表示されていない場合は、[Window] → [Show View] → [Debug] → [Breakpoints] を

ク リ ッ ク します。

4. [Run] → [Step Into] をク リ ッ ク し、 init_platform () ルーチンにステップインします。

プログラムの実行が 0x001005fc の位置で一時停止します。 コール スタ ッ クの深さは 2 レベルになり ます。

X-Ref Target - Figure 4-3

図 4-3: アプリケーシ ョ ン デバッグ用の [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 53UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 54: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 4 章: Vitis ソフ トウェア プラッ ト フォームでのデバッグ

5. [Run] → [Resume] をク リ ッ ク し、 プログラムをブレークポイン ト まで実行します。

プログラムの実行は、 print コマンドを含むコードの行で停止します。 [Disassembly] および [Debug] ウ ィンド

ウに、 プログラムの実行が 0x00100590 で停止しているこ とが示されます。

注記: hello world のソース コードを変更した場合、 ウ ィ ンド ウに表示される実行アドレスは異なる場合があ り

ます。

6. [Run] → [Resume] をク リ ッ ク し、 プログラムを 後まで実行します。

プログラムの実行が完了する と、 [Terminal] ビューに 「Hallo World」 と表示され、 [Debug] ビューにプログラム

が exit というルーチンで一時停止しているこ とが示されます。 これは、 デバッガーの制御下で実行している

と きに発生します。

7. コードを複数回再実行します。 シングル ステップ、 メモ リの検査、 ブレークポイン ト、 コードの変更、 および

print 文の追加を試してみます。 ビューの追加および移動を試します。

ヒン ト : Vitis ツール デバッグ シ ョート カッ ト (ステップ イン (F5)、 ステップ リ ターン (F7)、 ステップ オーバー (F6)、

および再開 (F8)) を使用できます。

8. Vitis ソフ ト ウェア プラ ッ ト フォームを終了します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 54UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 55: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章

AXI CDMA IP での HP スレーブ ポートの使用この章では、 AXI CDMA IP をファブリ ッ クにインスタンシエート し、 プロセッシング システムの HP (High

Performance) 64 ビッ ト スレーブ ポートに接続します。 このシステムでは、 AXI CDMA はマスター デバイスと して機

能し、 データの配列をソース バッファーから DDR システム メモ リのデスティネーシ ョ ン バッファーにコピーしま

す。 AXI CDMA は、 プロセッシング システムの HP スレーブ ポート を使用して DDR システム メモ リに対する読み

出し /書き込みアクセスを実行します。

こ こでは、 mmap() を使用してスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェアおよび Linux OS ベースのアプリ ケー

シ ョ ン ソフ ト ウェアを記述し、 AXI CDMA ブロ ッ クを使用したデータ転送を実現します。 また、 スタンドアロンお

よび Linux ベースの両アプリ ケーシ ョ ン ソフ ト ウェアを ZC702 ボードで個別に実行します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 55UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 56: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

AXI CDMA を Zynq SoC PS の HP スレーブ ポートに接続

ザイ リ ンクス Zynq®-7000 SoC デバイスは、 プログラマブル ロジッ ク (PL) をプロセッシング システム (PS) 内の非同

期 FIFO インターフェイス (AFI) に接続する 4 つの HP (High Performance) AXI スレーブ インターフェイス ポート を備

えています。 HP ポートは、 プログラマブル ロジッ クの AXI マスターと PS のメモ リ システム (DDR およびオンチッ

プ メモ リ ) 間での高スループッ トのデータパスを可能にします。 HP スレーブ ポートは、 64 ビッ ト または 32 ビッ ト

のインターフェイスに設定可能です。

こ こでは、 AXI CDMA IP をファブリ ッ クのマスターと して使用してデザインを作成し、 これを PS の HP 64 ビッ ト

スレーブ ポートに接続します。 次の図にシステムのブロ ッ ク図を示します。

このシステムにおける接続は次のとおりです。

• AXI CDMA スレーブ ポートは、 PS の汎用マスター ポート 1 (M_AXI_GP1) に接続されます。 これは、 データ転

送用の AXI CDMA レジスタ セッ ト を設定し、 そのステータスを確認するために PS CPU によ り使用されます。

• AXI CDMA マスター ポートは、 PS の HP (High Performance) スレーブ ポート 0 (S_AXI_HP0) に接続されます。

これは、 AXI CDMA で DDR システム メモ リからデータを読み出すために使用され、 データ転送中の CDMA の

ソース バッファー位置とな り ます。

• AXI CDMA マスター ポートは、 PS の HP (High Performance) スレーブ ポート 2 (S_AXI_HP2) に接続されます。

これは、 AXI CDMA で DDR システム メモ リにデータを書き込むために使用され、 データ転送中の CDMA のデ

スティネーシ ョ ン バッファー位置とな り ます。

• AXI CDMA の割り込みは、 ファブリ ッ クから PS の割り込みコン ト ローラーに接続されます。 データの転送後、

またはデータ ト ランザクシ ョ ン中にエラーが発生したと きに、 AXI CDMA の割り込みが開始します。

X-Ref Target - Figure 5-1

図 5-1: ブロック図

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 56UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 57: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

このシステムでは、 HP のスレーブ ポート 0 を 0x20000000 ~ 0x2fffffff 範囲の DDR メモ リ位置にアクセスす

るよ うに設定します。 DDR システム メモ リのこの位置は、 CDMA がデータを読み出すソース バッファー位置とな

り ます。

また、 HP スレーブ ポート 2 を 0x30000000 ~ 0x3fffffff 範囲の DDR メモ リ位置にアクセスするよ うに設定し

ます。 DDR システム メモ リのこの位置は、 CDMA がデータを書き込むデスティネーシ ョ ン位置となり ます。

データ転送チャネルの AXI CDMA IP データ幅を、 大バース ト長 32 の 1024 ビッ トに設定します。 この設定によ り、

CDMA の各ト ランザクシ ョ ンの 大転送サイズは 1024x32 ビッ ト とな り ます。

上記のシステム用にアプリ ケーシ ョ ン ソフ ト ウェア コードを記述します。 このコードは、 指定したデータ パターン

でソース バッファー メモ リ を初期化し、デスティネーシ ョ ン バッファー メモ リにすべて 0 を書き込んでク リ アしま

す。 その後、 DMA 転送用の CDMA レジスタ設定を開始します。 ソース バッファー位置、 デスティネーシ ョ ン バッ

ファー位置、 および CDMA レジスタに転送されるバイ トの数を書き込み、 CDMA 割り込みを待機します。 割り込み

が発生する と、 DMA 転送のステータスを確認します。

データ転送のステータスが正常の場合、 ソース バッファー データ とデスティネーシ ョ ン バッファー データを比較

して、 シ リ アル ターミナルにその結果を表示します。

データ転送のステータスがエラーの場合、 シ リ アル ターミナルにエラー ステータスを表示して実行を停止します。

サンプル プロジェク ト : AXI CDMA を PS の HP スレーブ ポートに接続

1. 次のいずれかから開始します。

° 34 ページの 「サンプル プロジェク ト : インスタンシエート されたファブ リ ッ ク IP の機能の検証」 で作成し

たシステムを使用します。

° 14 ページの 「エンベデッ ド プロセッサ プロジェク トの作成」 の説明に従って新しいプロジェク ト を作成し

ます。

2. 第 3 章の edt_tutorial とい う名前の Vivado® デザインを開き、 Flow Navegator で [IP Integrator] の下にある [Open

Block Design] をク リ ッ ク します。

3. [Diagram] ウ ィンド ウの空白部分を右ク リ ッ ク し、 [Add IP] をク リ ッ ク します。

4. 検索ボッ クスに 「CDMA」 と入力し、 [AXI Central Direct Memory Access] IP をダブルク リ ッ ク してブロ ッ ク図に

追加します。 AXI Central Direct Memory Access IP ブロ ッ クが [Diagram] ウ ィンド ウに表示されます。

5. [Diagram] ウ ィンド ウの空白部分を右ク リ ッ ク し、 [Add IP] をク リ ッ ク します。

6. 検索ボッ クスに 「concat」 と入力し、 [Concat] IP をダブルク リ ッ ク してブロ ッ ク図に追加します。 Concat IP ブ

ロ ッ クが [Diagram] ウ ィンド ウに表示されます。 AXI Timer を含む前のデザインを使用している場合、 このブ

ロ ッ クを使用して 2 つの割り込み信号を連結します。

7. [interrupt] → [IRQ_F2P[0:0]] ネッ ト を右ク リ ッ ク して [delete] をク リ ッ ク します。

8. IRQ_F2P[0:0] ポート をク リ ッ ク して Concat IP コアの dout[1:0] 出力ポートにド ラ ッグし、 これら 2 つのポート間

を接続します。

9. AXI Timer IP コアの interrupt ポート をク リ ッ ク して Concat IP コアの In0[0:0] 入力ポートにド ラ ッグし、 これら 2

つのポート間を接続します。

10. AXI CDMA IP コアの cdma_introut ポート をク リ ッ ク して Concat IP コアの In1[0:0] 入力ポートにド ラ ッグし、 こ

れら 2 つのポート間を接続します。

11. [ZYNQ7 Processing System] コアを右ク リ ッ ク して [Customize Block] をク リ ッ ク します。

12. [PS-PL Configuration] をク リ ッ ク し、 [HP Slave AXI Interface] を展開します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 57UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 58: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

13. [S AXI HP0 Interface] および [S AXI HP2 Interface] をオンにします。

14. [OK] をク リ ッ ク して変更を確定します。

15. [AXI CDMA IP] コアを右ク リ ッ ク して [Customize Block] をク リ ッ ク します。

16. [Re-customize IP] ダイアログ ボッ クスで、 次のよ うに設定します。

17. [OK] をク リ ッ ク して変更を確定します。

18. [Diagram] ウ ィンド ウ上部の [Run Connection Automation] リ ンクをク リ ッ ク し、残りの接続を自動的に実行します。

19. [Run Connection Automation] ダイアログ ボッ クスで [All Automation] がオンになっているこ とを確認し、 [OK] を

ク リ ッ ク してデフォルトの接続を選択します。 ブロ ッ ク図は次のよ うになり ます。

注記: ネッ トが競合するアドレスに強制的にマップされる という ク リ ティカル メ ッセージが表示されるこ とがあ

り ます。 次の手順でメモ リにマップされたアドレスを更新し、 このエラーに対処します。 このエラー メ ッセー

ジが表示された場合は、 [OK] をク リ ッ ク します。

システム プロパティ 設定または使用するコマンド

Enable Scatter Gather オフ

Disable 4K Boundary Checks オフ

Allow Unaligned Transfers オフ

Write/Read Data Width 1024

Write/Read Burst Size 32

Enable Asynchronous Mode (Auto) オフ

Enable CDMA Store and Forward オフ

Address Width 32

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 58UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 59: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

20. [Address Editor] ウ ィンド ウをク リ ッ ク します。

21. [Address Editor] ウ ィンド ウで、 [axi_cdma_0] → [Data] を展開します。 HP2_DDR_LOWOCM を右ク リ ッ ク し、

[Unmap Segment] をク リ ッ ク します。

22. [S_AXI_HP0] の [Range] 列で [256M] を選択します。

23. [S_AXI_HP0] の [Offset Address] で値を x2000_0000 に設定します。

24. [Address Editor] ウ ィンド ウで、 [axi_cdma_0] → [Data] → [Unmapped Slaves] を展開します。 HP2_DDR_LOWOCM

を右ク リ ッ ク し、 [Assign Address] をク リ ッ ク します。

25. [S_AXI_HP2] の [Range] 列で [256M] を選択します。

X-Ref Target - Figure 5-2

図 5-2: 更新されたブロック図

X-Ref Target - Figure 5-3

図 5-3: [Address Editor] ウィンドウ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 59UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 60: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

26. [S_AXI_HP2] の [Offset Address] で値を 0x3000_0000 に設定します。

27. Flow Navigator で [Program and Debug] → [Generate Bitstream] をク リ ッ ク します。

[Save Project] ダイアログ ボッ クスが開きます。

28. [Block Design - tutorial_bd] がオンになっているこ とを確認し、 [Save] をク リ ッ ク します。

29. 合成を更新する必要があるこ とを示すメ ッセージが表示されるこ とがあ り ます。 その場合、 [Yes] をク リ ッ ク し

ます。

30. ビッ ト ス ト リームの生成が完了したら、 22 ページの 「Vitis ソフ ト ウェア プラ ッ ト フォームへのハードウェアの

エクスポート 」 の説明に従って、 ハード ウェアをエクスポート して Vitis™ 統合ソフ ト ウェア プラ ッ ト フォーム

を起動します。

デザイン用のスタンドアロン アプリケーシ ョ ン ソフ トウェア

この章で設計した CDMA ベースのシステムをボードで実行するには、 アプリ ケーシ ョ ン ソフ ト ウェアが必要です。

こ こでは、 CDMA ベースのスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェアについて詳細に説明します。

アプ リ ケーシ ョ ン ソフ ト ウェアの main() 関数は、 実行のエン ト リ ポイン トです。 指定したテス ト パターンでソー

ス メモ リ バッファーを初期化し、 デスティネーシ ョ ン メモ リ バッファーにすべて 0 を書き込んでク リ アします。

その後、 アプ リ ケーシ ョ ン ソフ ト ウェアがソース バッファーおよびデスティネーシ ョ ン バッファーの開始位置を供

給して CDMA レジスタ セッ ト を設定します。 DMA 転送を開始するために、 CDMA レジスタで転送されるバイ ト数

を書き込み、 CDMA の割り込みが発生するのを待機します。 割り込み後、 DMA 転送のステータスを確認し、 ソース

バッファーをデスティネーシ ョ ン バッファーと比較します。 後に、 シ リ アル ターミナルにその比較結果を出力

し、 実行を停止します。

X-Ref Target - Figure 5-4

図 5-4: processing_system7_0 のアドレスの変更

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 60UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 61: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

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

アプリ ケーシ ョ ン ソフ ト ウェアは次を実行します。

1. ソース バッファーを指定したテス ト パターンで初期化します。 ソース バッファー位置は 0x20000000 ~

0x2fffffff の範囲です。

デスティネーシ ョ ン アドレス範囲すべてに 0 を書き込んで、 デスティネーシ ョ ン バッファーをク リ アします。

デスティネーシ ョ ン バッファー位置は、 0x30000000 ~ 0x3fffffff の範囲です。

2. AXI CDMA IP を初期化して次を実行します。

a. CDMA コールバッ ク関数を AXI CDMA ISR と関連付け、 割り込みを有効にします。

このコールバッ ク関数は CDMA の割り込み中に実行され、 DMA 転送のステータスに応じて割り込み

Done/Error フラグを設定します。

アプ リ ケーシ ョ ン ソフ ト ウェアは、 コールバッ ク関数がこれらのフラグを設定するまで待機し、 そのス

テータス フラグに応じて実行します。

b. CDMA をシンプル モードに設定します。

c. CDMA IP のステータス レジスタを確認して CDMA アイ ドル ステータスを検証します。

d. ソース バッファーの開始位置 0x20000000 を CDMA レジスタに設定します。

e. デスティネーシ ョ ン バッファーの開始位置 0x30000000 を CDMA レジスタに設定します。

f. CDMA レジスタに転送するバイ ト数を設定します。 DMA 転送を開始します。

3. CDMA 割り込みがト リガーされた後、 DMA 転送のステータスを確認します。

転送のステータスが正常の場合、 ソース バッファー位置とデスティネーシ ョ ン バッファー位置を比較し、 シ リ

アル ターミナルにその結果を表示して実行を終了します。

転送のステータスがエラーの場合、 シ リ アル ターミナルにエラー ステータスを出力し、 実行を停止します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 61UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 62: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

Vitis ソフ トウェア プラッ ト フォームを使用したスタンドアロン CDMA アプリケーシ ョ ンの実行

1. Vitis ソフ ト ウェア プラ ッ ト フォームを開きます。

2. TCF (Target Communication Frame) (hw_server.exe) エージェン トが Windows マシンで実行中であるこ とを確認

します。 実行されていない場合は、 Vitis ソフ ト ウェア プラ ッ ト フォームで [Xilinx] → [XSDB Console] をク リ ッ

ク します。

3. [XSDB Console] ウ ィンド ウに 「Connect」 と入力します。 hw_server アプリ ケーシ ョ ンが開始したこ とを示す

メ ッセージが表示されるか、 または開始して実行中の場合は次の図に示すよ うに tcfchan# が表示されます。

4. Vitis ソフ ト ウェア プラ ッ ト フォームで [File] → [New] → [Application Project] をク リ ッ ク します。

X-Ref Target - Figure 5-5

図 5-5: [XSDB Process] ウィンドウのハードウェア サーバー メ ッセージ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 62UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 63: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

5. New Application Project ウ ィザードが開きます。

ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

6. [Finish] をク リ ッ ク します。

New Project ウ ィザードが閉じ、 cdma_app プロジェク トが作成されて [Project Explorer] ビューに表示されます。

7. [Project Explorer] ビューで [cdma_app] プロジェク ト を展開して [src] ディ レク ト リ を右ク リ ッ ク し、 [Import] をク

リ ッ ク して [Import] ダイアログ ボッ クスを開きます。

8. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] をク リ ッ ク します。

9. [Next] をク リ ッ ク します。

10. [Browse] をク リ ッ ク します。

11. 前に保存したデザイン ファ イル フォルダー (129 ページの 「このチュート リ アルのデザイン ファ イル」 を参照)

に移動し、 [OK] をク リ ッ ク します。

12. cdma_app.c ファ イルを追加して [Finish] をク リ ッ ク します。

ビルドが正し く実行される と、 cdma_app.elf が生成されます。 ハンマー アイコンをク リ ッ クするか、

cdma_app project を右ク リ ッ ク して [Build Project] をク リ ッ ク し、 アプリ ケーシ ョ ンをビルド します。

注記: システムのアプリ ケーシ ョ ン ソフ ト ウェアのファイル名は cdma_app.c です。 このファイルは、 このガ

イ ドに付属の ZIP ファ イルから入手できます。 129 ページの 「このチュート リ アルのデザイン ファ イル」 を参

照してください。

13. シ リアル通信ユーティ リ ティ をボー レート を 115200 に設定して開きます。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

14. ハードウェア ボードがセッ ト アップされ、 オンになっているこ とを確認します。

注記: ボードのセッ ト アップについては、 28 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの

実行」 を参照してください。

15. [Xilinx Tools] → [Program FPGA] をク リ ッ ク し、 [Program FPGA] ダイアログ ボッ クスを開きます。 ダイアログ

ボッ クスにビッ ト ス ト リーム パスが表示されます。

16. [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード して PL ファブ リ ッ クをプログラムします。

17. 28 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の手順と同じよ うにプロジェク ト

を実行します。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name cdma_app

Use Default Locations オン

System project cdma_app_system

Platform hw_platform

Processor PS7_cortexa9_0

Domain ps7_cortexa9_0

OS standalone

Language C

Templates Available Templates Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 63UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 64: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

18. シ リアル ターミナルで CDMA 転送のステータスを確認します。 転送が正常の場合、 「DMA Transfer is

Successful」 とい う メ ッセージが表示されます。 エラーの場合、 シ リ アル ターミナルにエラー メ ッセージが表示

されます。

CDMA システム用の Linux OS ベースのアプリケーシ ョン ソフ トウェア

このセクシ ョ ンでは、 Linux で提供される mmap() システム コールを使用して CDMA 用の Linux ベース アプリ ケー

シ ョ ン ソフ ト ウェアを作成し、 ハード ウェアで実行して CDMA IP の機能を確認します。

mmap() システム コールは、 メモ リのマップ中に提供される属性に応じて読み出しまたは書き込みを実行できるよ

うに、 指定したカーネル メモ リ エリアをユーザー層に割り当てるのに使用されます。

注記: mmap() システム コールの詳細は、 このガイ ドでは説明しません。

注意: mmap() の呼び出しによ り、 カーネルの制限領域または共有リ ソースが誤ってアクセスされる と、 カーネルが

ク ラ ッシュする可能性があ り ます。

アプ リ ケーシ ョ ン ソフ ト ウェアの main() 関数は、 実行のエン ト リ ポイン トです。 指定したテス ト パターンでソー

ス配列を初期化し、 デスティネーシ ョ ン メモ リ バッファーにすべて 0 を書き込んでク リ アします。 その後、 ソース

配列の内容を DDR メモ リに 0x20000000 からコピーし、 デスティネーシ ョ ンへの DMA 転送を開始するよ うに

DMA レジスタを設定します。 DMA 転送後、 アプ リ ケーシ ョ ンは転送のステータスを読み出し、 その結果をシ リ ア

ル ターミナルに表示します。

アプリケーシ ョ ン ソフ トウェアの作成手順

アプリ ケーシ ョ ン ソフ ト ウェアを作成する手順は次のとおりです。

1. ユーザー層にあるソース配列全体を 0xa5a5a5a5 値に初期化します。

2. ユーザー層にあるデスティネーシ ョ ン バッファー全体に 0 を書き込み、 ク リ アします。

3. mmap() システム コールを使用して、 0x20000000 から開始するカーネルのメモ リ位置を書き込み権限のある

ユーザー層にマップします。

このよ うにマップするこ とで、 指定したカーネル メモ リへの書き込みが可能になり ます。

4. ソース配列の内容をマップ済みのカーネル メモ リにコピーします。

5. ユーザー層のカーネル メモ リへのマップを解除します。

6. mmap() システム コールを使用して、 AXI CDMA レジスタのメモ リ位置を読み出し権限および書き込み権限の

あるユーザー層にマップします。 ユーザー層から CDMA レジスタを次のよ うに設定します。

a. DMA を リセッ ト して前の通信を停止します。

b. 割り込みを有効にして DMA 転送のステータスを取得します。

c. CDMA をシンプル モードに設定します。

d. CDMA がアイ ドル状態であるこ とを確認します。

e. ソース バッファーの開始位置 0x20000000 を CDMA レジスタに設定します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 64UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 65: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

f. デスティネーシ ョ ン バッファーの開始位置 0x30000000 を CDMA レジスタに設定します。

g. CDMA レジスタで転送されるバイ ト数を設定します。 このレジスタへの書き込みによ り DMA 転送が開始

します。

7. DMA 転送のステータスを、 転送が終了するまで継続して読み出します。

8. CDMA 転送の終了後、 mmap() システム コールを使用して、 ユーザー層から変更するため CDMA レジスタ メ

モ リのマップを解除します。

9. 0x30000000 から開始するカーネル メモ リ位置を、 読み出しおよび書き込み権限を持つユーザー層にマップし

ます。

10. カーネル メモ リの 0x30000000 からの内容をユーザー層のデスティネーシ ョ ン配列にコピーします。

11. ユーザー層のカーネル メモ リへのマップを解除します。

12. ソース配列をデスティネーシ ョ ン配列と比較します。

13. シ リアル ターミナルに比較結果が表示されます。 比較結果が正常の場合、 「DATA Transfer is Successful」 とい う

メ ッセージが表示されます。 エラーの場合、 シ リ アル ターミナルにエラー メ ッセージが表示されます。

Vitis ソフ トウェア プラッ ト フォームを使用した Linux CDMA アプリケーシ ョ ンの実行

ターゲッ ト ボード上で Linux を実行する詳細な手順は、 第 6 章に説明されています。 Linux の実行に慣れていない場

合は、 この例を実行する前に第 6 章の例を実行してください。 Linux OS ベースのアプリ ケーシ ョ ンを実行する手順

は次のとおりです。

1. 66 ページの 「ターゲッ ト ボートでの Linux のブート 」

2. 73 ページの 「Linux アプリ ケーシ ョ ン用の Linux ド メ インの作成」

3. 75 ページの 「Vitis ソフ ト ウェア プラ ッ ト フォームを使用したアプリ ケーシ ョ ンのビルド と ターゲッ ト ボードで

の実行」

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 65UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 66: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

ターゲッ ト ボートでの Linux のブート

JTAG モードを使用して、 Zynq-7000 SoC ZC702 ターゲッ ト ボード上で Linux をブート します。

注記: その他のブート オプシ ョ ンは、第 6 章 「Linux のブートおよび Vitis ソフ ト ウェア プラ ッ ト フォームでのデバッ

ク」 を参照してください。

1. JTAG モードを使用して Linux をブートする際の次のボード接続および設定を確認します。

a. 28 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の説明に従って、 ジャンパー

J27 および J28 が設定されているこ とを確認します。

b. SW16 スイ ッチが次の図に示すよ うに設定されているこ とを確認します。

c. イーサネッ ト ケーブルを Zynq SoC ボードからネッ ト ワークに接続します。

d. Windows ホス ト マシンをネッ ト ワークに接続します。

e. 電源ケーブルをボードに接続します。

X-Ref Target - Figure 5-6

図 5-6: SW16 スイッチの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 66UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 67: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

2. ターゲッ ト ボードの SW10 スイ ッチを図 5-7 に示すよ うに設定し、 USB Micro ケーブルを使用して Windows ホ

ス ト マシンと ターゲッ ト ボードを接続します。

° Bit-1 は 0

° Bit-2 は 1

注記: 0 は開、 1 は閉です。 ユーザー インターフェイスに応じて、 正しい JTAG モードを選択する必要があ り ま

す。 JTAG モードは、 ZC702 ではスイ ッチ SW10、 ZC706 ではスイ ッチ SW4 で設定します。

3. USB ケーブルを使用して Windows ホス ト マシンと ターゲッ ト ボードのコネクタ J17 を接続します。 これは、

USB からシ リ アルへの転送に使用されます。

X-Ref Target - Figure 5-7

図 5-7: Digilent 社製 USB JTAG を使用するように設定された ZC702 の SW10

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 67UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 68: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

4. イーサネッ ト ジャンパー J30 および J43 を次の図に示すよ うに変更します。

5. ターゲッ ト ボードに電源を投入します。

6. Vitis ソフ ト ウェア プラ ッ ト フォームを起動し、 第 2 章および第 3 章で使用したワークスペースを開きます。

7. シ リアル ターミナルが開いていない場合は、ボー レート を 115200 に設定してシ リ アル通信ユーティ リ ティ を開

きます。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

8. [Xilinx Tools] → [Program FPGA] → [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード します。

9. [Xilinx Tools] → [XSCT console] をク リ ッ ク して Xilinx System Debugger (XSCT) ツールを開きます。

10. XSCT プロンプ トで次を実行します。

a. 「connect」 と入力して PS に接続します。

b. 「targets」 と入力してターゲッ ト プロセッサのリ ス ト を取得します。

c. 「targets 2」 と入力してプロセッサ CPU1 を選択します。

xsct% targets 1 APU 2 Arm Cortex-A9 MPCore #0 (Running) 3 Arm Cortex-A9 MPCore #1 (Running) 4 xc7z020xsct% targets 2xsct% targets 1 APU 2* Arm Cortex-A9 MPCore #0 (Running) 3 Arm Cortex-A9 MPCore #1 (Running) 4 xc7z020

X-Ref Target - Figure 5-8

図 5-8: ジャンパー J30 および J43 の変更

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 68UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 69: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

d. 「dow <tutorial_download_path>/zynq_fsbl.elf」 と入力して PetaLinux FSBL をダウンロードします。

e. 「con」 と入力して FSBL を実行し、 「stop」 と入力して停止します。

f. 「dow <tutorial_download_path>/u-boot.elf」 と入力して PetaLinux U-Boot.elf をダウンロード

します。

g. 「con」 と入力して U-Boot を実行します。

シ リ アル ターミナルに、 次のよ うな自動ブート カウン ト ダウン メ ッセージが表示されます。

Hit any key to stop autoboot: 3

h. Enter キーを押します。

X-Ref Target - Figure 5-9

図 5-9: XSCT コンソール

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 69UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 70: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

U-Boot からの自動ブートが停止し、 シ リ アル ターミナルにコマンド プロンプ トが表示されます。

.

i. XSCT プロンプ トに 「stop」 と入力します。

U-Boot の実行が停止します。

j. 「dow -data <tutorial_download_path>/image.ub 0x30000000」 と入力し、 Linux カーネル イ

メージを 0x3000000 にダウンロード します。

k. 「con」 と入力して U-Boot を実行します。

11. シ リアル ターミナルのコマンド プロンプ トに 「bootm 0x30000000」 と入力します。

Linux OS が起動します。

X-Ref Target - Figure 5-10

図 5-10: シリアル ターミナル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 70UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 71: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

12. 必要に応じてシ リ アル ターミナルに Zynq のユーザー名 root とパスワード root を入力し、プロセッサのブート を

完了させます。

ブートが完了する と、 シ リ アル ターミナルに # prompt プロンプ トが表示されます。

13. root@Xilinx-ZC702-2019_2:~# プロンプ トで、 ボードのイーサネッ ト接続が設定されているこ とを確認し

ます。

a. Zynq> プロンプ トに 「ifconfig eth0」 と入力し、 ボードの IP アドレスを確認します。

このコマンドは、 現時点でアクティブなすべてのインターフェイスの詳細を表示します。 表示される メ ッ

セージで、 inet addr 値は Zynq SoC ボードに割り当てられている IP アドレスを示します。

b. inet addr と netmask の値が存在しない場合、 次のコマンドを使用してそれらを割り当てるこ とができ

ます。

root@Xilinx-ZC702-2019_2:~# ifconfig eth0 inet 192.168.1.10root@Xilinx-ZC702-2019_2:~# ifconfig eth0 netmask 255.255.255.0

14. Windows マシンの IP アドレス設定がボードの設定に一致しているこ とを確認します。 ネッ ト ワーク接続を開い

て、 ローカル エリ ア接続のプロパティを調整します。

a. XC702 ボードに接続されているローカル エリ ア接続を右ク リ ッ ク して、 [Properties] をク リ ッ ク します。

b. [Local Area Connection Properties] ダイアログ ボッ クスで、 リ ス トから [Internet Protocol Version 4 (TCP/IPv4)]

を選択し、 [Properties] をク リ ッ ク します。

c. [Use the following IP address] をオンにし、 次のよ うに設定します。

[IP address]: 192.168.1.11

[Subnet mask]: 255.255.255.0

d. [OK] をク リ ッ ク して値を確定します。

15. Windows マシンのコマンド プロンプ トに 「ping」 と入力し、 それに続いてボードの IP アドレスを入力して、

ボード との接続を確認します。 ping 応答がループ内に表示されます。

この応答は、 Windows ホス ト マシンと ターゲッ ト ボード間の接続が確立されているこ とを意味します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 71UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 72: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

16. Ctrl + C キーを押して、 Windows ホス ト マシンのコマンド プロンプ トでの ping 応答の表示を停止します。

ターゲッ ト ボードでの Linux のブートが終了し、 ホス ト マシンと ターゲッ ト ボード間の接続が完了します。

X-Ref Target - Figure 5-11

図 5-11: Windows ホスト マシンのコマンド プロンプ ト

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 72UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 73: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

Linux アプリケーシ ョ ン用の Linux ド メインの作成

これで Linux がボード上で稼働するよ うにな り ました。 次に Linux ド メ インを作成し、 その後 Linux アプリ ケーシ ョ

ンを作成します。 Linux ド メ インの作成手順は、 次のとおりです。

1. Vitis ソフ ト ウェア プラ ッ ト フォームの [Project Explorer] で、 hw_platform platform project プラ ッ ト フォーム プロ

ジェク ト を展開します。

2. platform.spr をダブルク リ ッ ク してハード ウェアを開きます。

3. プラ ッ ト フォーム ビューが開きます。 右上の + ボタンをク リ ッ ク し、 ド メ インを追加します。

.

4. [New Domain] ダイアログ ボッ クスが開いたら、 次のよ うに設定します。

a. [Name]: linux_domain

b. [Display Name]: linux_application_domain

c. [OS]: [linux]

d. [Processor]: [ps7_cortexa9]

e. [Supported Runtimes]: [C/C++]

f. [Use pre-built software components]: オンにして次のよ うに設定

- C:\designs フォルダーに boot ディレク ト リ を作成し、 ブート コンポーネン ト (FSBL、 Vitis ソフ ト

ウェア プラ ッ ト フォームからの PMUFW、 ATF、 PetaLinux からの u-boot.elf および image.ub) を

コピーします。

- BIF ファ イルを生成します。

X-Ref Target - Figure 5-12

図 5-12: ド メインの追加

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 73UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 74: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

g. OK をク リ ッ ク します。 Linux ド メ インが hw_platform に追加されます。

h. image ファ イル パスに image.ub ファ イルを追加します。

これで、 Linux ド メ インに Linux アプリ ケーシ ョ ンを作成する準備が整いました。

X-Ref Target - Figure 5-13

図 5-13: BIF ファイルの作成

X-Ref Target - Figure 5-14

図 5-14: hw_platform に追加された Linux ド メイン

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 74UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 75: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

Vitis ソフ トウェア プラッ ト フォームを使用したアプリケーシ ョ ンのビルド と ターゲッ ト ボードでの実行

1. これで Linux がボード上で稼働するよ うになり ました。 次に CDMA を利用する Linux アプリ ケーシ ョ ンを作成

します。 [File] → [New] → [Application Project] をク リ ッ ク します。

2. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

3. [Finish] をク リ ッ ク します。

New Project ウ ィザードが閉じ、 linux_cdma_app プロジェク トが作成されて [Project Explorer] ビューに表示さ

れます。

4. [Project Explorer] ビューで [linux_cdma_app] プロジェク ト を展開して [src] ディレク ト リ を右ク リ ッ ク し、

[Import] をク リ ッ ク して [Import] ダイアログ ボッ クスを開きます。

5. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] をク リ ッ ク します。

6. [Next] をク リ ッ ク します。

7. linux_cdma_app.c ファ イルを追加して [Finish] をク リ ッ ク します。

ハンマー アイコンをク リ ッ クするか、 linux_cdma_app project を右ク リ ッ ク して [Build Project] をク リ ッ ク し、 ア

プ リ ケーシ ョ ンをビルド します。 バイナリ ファ イル linux_cdma_app.elf が生成されます。

注記: システムのサンプル アプリ ケーシ ョ ン ソフ ト ウェア ファ イルは linux_cdma_app.c です。 このファイ

ルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 129 ページの 「このチュート リ アルのデザイン

ファ イル」 を参照してください。

8. [linux_cdma_app] を右ク リ ッ ク し、 [Run As] → [Run Configurations] をク リ ッ ク して Run Configurations ウ ィ

ザードを開きます。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name linux_cdma_app

System project linux_cdma_app_system

Platform <hw_platform>

CPU cortex-a9

Domain linux_application_domain

OS linux

Language C

Templates Available Templates Linux Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 75UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 76: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

9. [Xilinx C/C++ application (Application Debugger)] を右ク リ ッ ク して [New] をク リ ッ ク します。

10. [Connection] タブで [New] を選択し、 New Connection ウ ィザードを開きます。

11. [New Target Connection] ページで次のよ うに設定します。

a. [Target Name] フ ィールドで名前を指定します。 こ こでは、 「CDMALinux」 を使用します。

b. [Host] フ ィールドにターゲッ ト ボードの IP アドレスを入力します。

ターゲッ ト ボードの IP アドレスを確認するには、 シ リ アル ターミナルの Zynq> プロンプ トに

「ifconfig eth0」 と入力します。 ターミナルにボードに割り当てられているターゲッ ト IP アドレスが表

示されます。

c. [Port] フ ィールドに 「1534」 と入力します。

12. [OK] をク リ ッ ク して接続を作成します。

X-Ref Target - Figure 5-15

図 5-15: Run Configurations ウィザード

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 76UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 77: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 5 章: AXI CDMA IP での HP スレーブ ポートの使用

13. [Application] タブでアプリ ケーシ ョ ン データを次よ うに設定します。

a. [Project Name]: linux_cdma_app

b. [Local File Path]: Debug/linux_cdma_app.elf

c. [Remote File Path]: /tmp/cdma.elf

14. [Run] をク リ ッ ク します。 アプ リ ケーシ ョ ンが実行され、 コンソール ウ ィンド ウに次の図に示すよ うに 「DATA

Transfer is Successful」 とい う メ ッセージが表示されます。

X-Ref Target - Figure 5-16

図 5-16: [Application] タブでのデバッグ コンフ ィギュレーシ ョ ン設定

X-Ref Target - Figure 5-17

図 5-17: データ転送メ ッセージ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 77UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 78: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章

Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

この章では、 PetaLinux ツールを使用して Zynq®-7000 SoC ボード上で Linux OS を設定およびビルドする手順を説明

します。 JTAG インターフェイスを使用して Linux でコンパイル済みのイ メージをターゲッ ト メモ リにダウンロード

する方法も示します。

この章の後半では、 コンパイル済みのイ メージで次の不揮発性メモ リ をプログラムする方法について説明します。

これらのイ メージは、 ボードをオンにした後に Linux の自動ブートに使用されます。

• オンボード QSPI フラ ッシュ

• SD カード

この章では、 ザイ リ ンクス Vitis™ 統合ソフ ト ウェア プラ ッ ト フォームのリモート デバッグ機能を使用して、 ター

ゲッ ト ボード上で実行している Linux アプリ ケーシ ョ ンをデバッグする方法についても説明します。 Vitis ソフ ト

ウェア プラ ッ ト フォームは、 Windows ホス ト マシンで実行します。 アプリ ケーシ ョ ンのデバッグでは、 プラ ッ ト

フォームで Linux OS を実行中のターゲッ ト ボードへのイーサネッ ト接続が確立されます。

詳細は、 エンベデッ ド デザイン ツール ウェブ ページ [参照 12] を参照してください。

必要な環境

この章では、 ターゲッ ト プラッ ト フォームと して Zynq ボードを使用します。 ホス ト プラッ ト フォームは、 Vivado®

ツールを実行する Windows マシンと Linux マシン (物理マシンまたは仮想マシン) にインス トールされた PetaLinux です。

注記: この章のチュート リ アルには、 一般的なブート ローダーである Das U-Boot が必要です。 これは、 次にダウン

ロードするコンパイル済みのイ メージに含まれます。

ザイ リ ンクスの資料サイ トから、 このガイ ドに関連する ZIP ファ イルをダウンロード して ください。 129 ページの

「このチュート リ アルのデザイン ファ イル」 を参照してください。 この ZIP ファ イルには、 次のファイルが含まれて

います。

• BOOT.bin: bootgen で生成された FSBL および U-Boot イ メージを含むバイナリ イ メージ。

• cdma_app.c: この章で作成するシステム用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア。

• helloworld.c: 第 3 章で作成したシステム用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア。

• linux_cdma_app: この章で作成するシステム用の Linux OS ベースのアプリ ケーシ ョ ン ソフ ト ウェア。

• README.txt: ZIP ファ イルに関する著作権およびリ リースの情報。

• u-boot.elf: BOOT.BIN イ メージの作成に使用する U-Boot ファ イル。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 78UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 79: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

• Image.ub: PetaLinux ビルド イ メージ (カーネル イ メージ、 Ramdisk、 および dtb を含む)。

• fsbl.elf: BOOT.BIN イ メージの作成に使用する FSBL イ メージ。

Zynq SoC ボード上での Linux のブート

このセクシ ョ ンでは、 78 ページの 「必要な環境」 でダウンロード したコンパイル済みのイ メージを使用して、 ター

ゲッ ト ボード上で Linux をブートするフローを説明します。

注記: カーネル イ メージ、 U-Boot、 デバイス ツ リー、 ルート ファ イルなどのさまざまなイ メージのコンパイルにつ

いては、 このガイ ドでは説明しません。

ブート方法

次のブート方法があ り ます。

• マスター ブート方法

• スレーブ ブート方法

マスター ブート方法

マスター ブート方法では、 QSPI、 NAND、 NOR フラ ッシュ、 および SD カードなどのさまざまな不揮発性メモ リに

ブート イ メージを保存します。 この方法では、 CPU で外部のブート イ メージを不揮発性メモ リからプロセッシング

システム (PS) にロード して実行します。マスター ブート方法は、 さ らにセキュア モード と非セキュア モードに分類

されます。 詳細は、 『Zynq-7000 SoC テクニカル リ ファレンス マニュアル』 (UG585) [参照 1] を参照してください。

ブート プロセスは、プロセッシング システム (PS) にある Arm Cortex-A9 CPU の 1 つによって開始され、オンチップ

ROM コードを実行します。 このオンチップ ROM コードが第 1 段階ブート ローダー (FSBL) をロード します。 FSBL

は次を実行します。

• ハードウェア ビッ ト ス ト リームがある場合は、 これで FPGA をコンフ ィギュレーシ ョ ンします。

• MIO インターフェイスをコンフ ィギュレーシ ョ ンします。

• DDR コン ト ローラーを初期化します。

• ク ロ ッ ク PLL を初期化します。

• Linux の U-Boot イ メージを不揮発性メモ リから DDR にロード して実行します。

U-Boot は、 カーネル イ メージ、 ルート ファ イル システムおよびデバイス ツ リーを不揮発性 RAM から DDR にロー

ド し、 これらの実行を開始します。 ターゲッ ト プラ ッ ト フォームでの Linux のブート を終了させます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 79UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 80: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

スレーブ ブート方法

JTAG は、 スレーブ ブート モードでのみ使用可能です。 外部ホス ト コンピューターがマスターと して機能し、 JTAG

接続を使用してブート イ メージを OCM にロード します。

注記: ブート イ メージをロードする間、 PS の CPU はアイ ドル モードにな り ます。 スレーブ ブート方法でのブートは

常に非セキュア モードです。

JTAG ブート モードでは、 CPU はセキュ リ ティ関連のすべてのアイテムへのアクセスを無効にし、 JTAG ポート を有

効にした直後に停止モードに遷移します。 CPU の実行を再開させる前に、 ブート イ メージを DDR メモ リにダウン

ロードする必要があ り ます。

JTAG からの Linux のブート

次のフロー図に、 ターゲッ ト プラ ッ ト フォームで Linux をブートするプロセスを示します。

デバッグ用の PetaLinux ビルドの準備 tcf-agent を使用して Linux アプリ ケーシ ョ ンをデバッグするには、 PetaLinux RootFS で tcf-agent を手動で有効にする

必要があ り ます。

PetaLinux RootFS で dropbear-openssh-sftp サーバーが無効になっているこ とを確認します。

注記: Vitis デバッガーでは、 tcf-agent (TCF - Target Communication Framework) を使用した Linux アプリ ケーシ ョ ンのデ

バッグがサポート されます。 TCF エージェン トは PetaLinux roofts パッケージの一部と して提供されていますが、 必

要に応じて有効にする必要があ り ます。

これらのコンポーネン ト を有効にする方法は、 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 8] の

「TCF エージェン トによるアプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-1

図 6-1: ターゲッ ト プラッ ト フォームでの Linux のブート プロセス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 80UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 81: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

JTAG モードを使用した Linux のブート

1. JTAG モードを使用して Linux をブートする際の次のボード接続および設定を確認します。

a. 28 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の説明に従って、 ジャンパー

J27 および J28 が設定されているこ とを確認します。

b. SW16 スイ ッチが次の図に示すよ うに設定されているこ とを確認します。

c. イーサネッ ト ケーブルを Zynq®-7000 SoC からネッ ト ワークに接続するか、 またはホス ト マシンに直接接

続します。

d. Windows ホス ト マシンをネッ ト ワークに接続します。

e. 電源ケーブルをボードに接続します。

X-Ref Target - Figure 6-2

図 6-2: SW16 スイッチの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 81UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 82: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

2. ターゲッ ト ボードの SW10 スイ ッチを次の図に示すよ うに設定し、 USB Micro ケーブルを使用して Windows ホ

ス ト マシンと ターゲッ ト ボードを接続します。

° Bit-1 は 0

° Bit-2 は 1

注記: 0 は開、 1 は閉です。 ユーザー インターフェイスに応じて、 正しい JTAG モードを選択する必要があ り ま

す。 JTAG モードは、 zc702 ではスイ ッチ SW10、 zc706 ではスイ ッチ SW4 で設定します。

3. USB ケーブルを使用して Windows ホス ト マシンと ターゲッ ト ボードのコネクタ J17 を接続します。 これは、

USB からシ リ アルへの転送に使用されます。

4. イーサネッ ト ジャンパー J30 および J43 を次の図に示すよ うに変更します。

5. ターゲッ ト ボードに電源を投入します。

X-Ref Target - Figure 6-3

図 6-3: Digilent 社製 USB JTAG を使用するように設定された ZC706 の SW4

X-Ref Target - Figure 6-4

図 6-4: ジャンパー J30 および J43 の変更

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 82UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 83: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

6. Vitis ソフ ト ウェア プラ ッ ト フォームを起動し、 第 2 章および第 3 章で使用したワークスペースを開きます。

7. シ リアル ターミナルが開いていない場合は、ボー レート を 115200 に設定してシ リ アル通信ユーティ リ ティ を開

きます。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

8. [Xilinx Tools] → [Program FPGA] → [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード します。

9. [Xilinx Tools] → [XSCT console] をク リ ッ ク して Xilinx System Debugger (XSCT) ツールを開きます。

10. XSCT プロンプ トで次を実行します。

a. 「connect」 と入力して PS に接続します。

b. 「targets」 と入力してターゲッ ト プロセッサのリ ス ト を取得します。

c. 「ta 2」 と入力してプロセッサ CPU1 を選択します。

xsct% targets 1 APU 2 Arm Cortex-A9 MPCore #0 (Running) 3 Arm Cortex-A9 MPCore #1 (Running) 4 xc7z020xsct% ta 2xsct% targets 1 APU 2* Arm Cortex-A9 MPCore #0 (Running) 3 Arm Cortex-A9 MPCore #1 (Running) 4 xc7z020

d. 「dow <tutorial_download_path>zynq_fsbl.elf」 と入力して PetaLinux FSBL をダウンロード します。

e. 「con」 と入力して FSBL を実行し、 「stop」 と入力して停止します。

f. 「dow <tutorial_download_path>/u-boot.elf」 と入力して PetaLinux U-Boot.elf をダウン

ロード します。

g. 「con」 と入力して U-Boot を実行します。

シ リ アル ターミナルに、 次のよ うな自動ブート カウン ト ダウン メ ッセージが表示されます。

Hit any key to stop autoboot: 3

h. Enter キーを押します。

U-Boot からの自動ブートが停止し、 シ リ アル ターミナルにコマンド プロンプ トが表示されます。

i. XSCT プロンプ トに 「stop」 と入力します。

U-Boot の実行が停止します。

j. 「dow -data image.ub 0x30000000」 と入力し、 Linux カーネル イ メージを

<tutorial_download_path>/image.ub にダウンロード します。

k. 「con」 と入力して U-Boot を実行します。

11. シ リアル ターミナルのコマンド プロンプ トに 「bootm 0x30000000」 と入力します。

Linux OS が起動します。

12. 必要に応じてシ リ アル ターミナルに Zynq のユーザー名 root とパスワード root を入力し、プロセッサのブート を

完了させます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 83UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 84: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

ブートが完了する と、 シ リ アル ターミナルに # prompt プロンプ トが表示されます。

13. root@xilinx-zc702-2019_2:~# プロンプ トで、 ボードのイーサネッ ト接続が設定されているこ とを確認し

ます。

a. Zynq> プロンプ トに 「ifconfig eth0」 と入力し、 ボードの IP アドレスを確認します。

このコマンドは、 現時点でアクティブなすべてのインターフェイスの詳細を表示します。 表示される メ ッ

セージで、 inet addr 値は Zynq SoC ボードに割り当てられている IP アドレスを示します。

b. inet addr と netmask の値が存在しない場合、 次のコマンドを使用してそれらを割り当てるこ とができ

ます。

root@xilinx-zc702-2019_2:~# ifconfig eth0 inet 192.168.1.10

root@xilinx-zc702-2019_2:~# ifconfig eth0 netmask 255.255.255.0

重要: ターゲッ ト とホス ト を直接接続している場合は、 IP アドレスを設定する必要があ り ます。 ターゲッ ト とホス ト

を LAN を介して接続している場合は、 DHCP によ り ターゲッ トの IP アドレスが取得されます。 ifconfig eth0 を

使用して IP アドレスを表示してください。

Windows マシンの IP アドレス設定がボードの設定に一致しているこ とを確認します。 ネッ ト ワーク接続を

開いて、 ローカル エリ ア接続のプロパティを調整します。

i XC702 ボードに接続されているローカル エリ ア接続を右ク リ ッ ク して、 [Properties] をク リ ッ ク します。

ii [Local Area Connection Properties] ダイアログ ボッ クスで、 リ ス トから [Internet Protocol Version 4

(TCP/IPv4)] を選択し、 [Properties] をク リ ッ ク します。

iii [Use the following IP address] をオンにし、 次のよ うに設定します。

[IP address]: 192.168.1.11 (直接接続されている場合は、 ターゲッ ト とホス トが同じサブネッ トに存在す

る必要あ り )

[Subnet mask]: 255.255.255.0

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 84UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 85: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

c. [OK] をク リ ッ ク して値を確定し、 ウ ィンド ウを閉じます。

14. Windows マシンのコマンド プロンプ トに 「ping」 と入力し、 それに続いてボードの IP アドレスを入力して、

ボード との接続を確認します。 ping 応答がループ内に表示されます。

この応答は、 Windows ホス ト マシンと ターゲッ ト ボード間の接続が確立されているこ とを意味します。

15. Ctrl + C キーを押して、 Windows ホス ト マシンのコマンド プロンプ トでの ping 応答の表示を停止します。

ターゲッ ト ボードでの Linux のブートが終了し、 ホス ト マシンと ターゲッ ト ボード間の接続が完了します。 次

のサンプル デザインでは、 Vitis ソフ ト ウェア プラ ッ ト フォームを使用して Linux アプリ ケーシ ョ ンをデバッグ

する方法を説明します。

X-Ref Target - Figure 6-5

図 6-5: IP アドレスの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 85UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 86: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

サンプル デザイン: Vitis ソフ トウェア プラッ ト フォームを使用した Linux アプリケーシ ョ ンのデバッグ

このセクシ ョ ンでは、 デフォルトの Linux hello world アプリ ケーシ ョ ンを作成し、 Windows ホス ト マシンから

Linux アプリ ケーシ ョ ンをデバッグする手順を実行します。

1. Vitis ソフ ト ウェア プラ ッ ト フォームを開きます。

2. [File] → [New] → [Application Project] をク リ ッ ク します。

New Application Project ウ ィザードが開きます。

3. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

4. [Finish] をク リ ッ ク します。

New Application Project ウ ィザードが閉じ、 HelloLinux プロジェク トが作成されて [Project Explorer] ビューに

表示されます。 ハンマー アイコンをク リ ッ クするか、 linux_cdma_app project を右ク リ ッ ク して [Build Project] を

ク リ ッ ク し、 アプ リ ケーシ ョ ンをビルド します。 バイナリ ファ イル linux_cdma_app.elf が生成されます。

5. [HelloLinux] を右ク リ ッ ク し、 [Debug as] → [Debug Configurations] をク リ ッ ク して Debug Configurations ウ ィザー

ドを開きます。

表 6-1: Vitis ソフ トウェア プラッ ト フォームでデバッグする場合の New Application Project ウィザードの設定

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name HelloLinux

Use default location オン

System project HelloLinux_system

Platform <platform>

CPU cortex-a9

OS linux

Language C

Sysroot path オフ

Templates Available Templates Linux Hello World

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 86UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 87: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

6. 次の図に示すよ うに、 [Debug Type] に [Linux Application Debug] を選択します。

7. [Target Setup] タブで、 [Connection] フ ィールドの横にある [New] をク リ ッ ク します。

8. [Target Connection Details] ダイアログ ボッ クスで次のよ うに設定します。

a. [Target Name] を選択します。

b. [Host] フ ィールドにターゲッ トの IP アドレスを入力します。

c. [Port] フ ィールドに 「1534」 と入力します。

X-Ref Target - Figure 6-6

図 6-6: デバッグ タイプの選択

X-Ref Target - Figure 6-7

図 6-7: デバッグのターゲッ ト接続設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 87UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 88: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

9. アプリ ケーシ ョ ン コンフ ィギュレーシ ョ ンの詳細を次のよ うに設定します。

a. [Application] タブをク リ ッ ク します。

b. [Remote File] パス (/tmp/hellolinux.elf など) を設定し、 [Apply] をク リ ッ ク します。

10. [Debug] をク リ ッ ク します。

[Debug] パースペクティブが開きます (図 6-9 を参照)。 このパースペクティブで、 次を実行できます。

- 実行が main() で停止しているこ とを確認します。

- アドレスへの逆アセンブリ ポイン ト を表示します。

- エディ ター ペインで関数の左側を右ク リ ッ ク してブレークポイン ト を設定します (下の図では

helloworld.c を表示)。

- ブレークポイン ト を設定する と、 ブレークポイン ト リ ス トに表示されます。 レジスタの内容を確認お

よび変更できます。 [Registers] ビューに表示されている PC レジスタのアドレス と [Disassembly] ビュー

に表示されているアドレスは同じです (次の図を参照)。

- 次の図で緑色で示されている [step-into] (F5)、 [step-return] (F7)、 [step-over] (F6)、 [Resume] (F8)、 および

[continue debugging] ボタンを使用します。

X-Ref Target - Figure 6-8

図 6-8: デバッグのターゲッ ト オプシ ョ ン

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 88UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 89: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

ヒン ト : Linux アプリ ケーシ ョ ンの出力は、 Linux を実行するために使用したターミナル ウ ィンド ウではなく、 Vitis

ソフ ト ウェア プラ ッ ト フォーム コンソールに表示されます。

11. Linux アプリ ケーシ ョ ンのデバッグが終了したら、 Vitis IDE を閉じます。

X-Ref Target - Figure 6-9

図 6-9: HelloLinux アプリケーシ ョ ンが表示された [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 89UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 90: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

サンプル プロジェク ト : QSPI フラッシュからの Linux のブート

このサンプル プロジェク トでは、 次を実行します。

1. 第 1 段階ブート ローダー (FSBL) の実行ファイルを作成します。

2. QSPI フラ ッシュ用に Linux のブータブル イ メージを作成します。

PetaLinux を QSPI フラ ッシュ ブート モードに設定して際ビルドする必要があ り ます。 デフォルトでは、 ブート

オプシ ョ ンは SD ブートに設定されています。

ヒン ト : この資料に付属の ZIP ファ イルに、 ビルド済みイ メージが含まれています。 これらのファイルを使用して、

95 ページの 「QSPI フラ ッシュからの Linux のブート 」 または 96 ページの 「SD カードからの Linux のブート 」 に進

むこ と もできます。

3. Linux マシンで次の手順を実行し、 ブート モードを QSPI に変更します。

a. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

b. 上位のシステム設定メニューを起動します。

$ petalinux-config

c. [Subsystem AUTO Hardware Settings] を選択します。

d. [Advanced Bootable Images Storage Settings] を選択します。

- [boot image settings] を選択します。

- [Image Storage Media] を選択します。

- [primary flash] と してブート デバイスを選択します。

e. [Advanced Bootable Images Storage Settings] サブメニューで、 次の操作を実行します。

- [kernel image settings] を選択します。

- [Image Storage Media] を選択します。

- [primary flash] と してス ト レージ デバイスを選択します。

f. 設定内容を保存し、 Configuration ウ ィザードを終了します。

g. Petalinux-build コマンドを使用して再構築します。

注記: 詳細は、 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 8] を参照して ください。

4. JTAG および U-Boot コマンドを使用して、 QSPI フラ ッシュをブート イ メージでプログラムします。

5. QSPI フラ ッシュから Linux をブート します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 90UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 91: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

第 1 段階ブート ローダー (FSBL) の実行ファイルの作成

1. Vitis ソフ ト ウェア プラ ッ ト フォームを開きます。

2. TCF (Target Communication Frame) (hw_server.exe) エージェン トが Windows マシンで実行中であるこ とを確認

します。 実行されていない場合は、 Vitis ソフ ト ウェア プラ ッ ト フォームで [Xilinx] → [XSDB Console] をク リ ッ

ク します。

3. [XSDB Console] ウ ィンド ウに 「Connect」 と入力します。 hw_server アプリ ケーシ ョ ンが開始したこ とを示す

メ ッセージが表示されるか、 または開始して実行中の場合は次の図に示すよ うに tcfchan# が表示されます。

4. Vitis ソフ ト ウェア プラ ッ ト フォームで [File] → [New] → [Application Project] をク リ ッ ク します。New Application

Project ウ ィザードが開きます。

X-Ref Target - Figure 6-10

図 6-10: XSCT コンソール: hw_server アプリケーシ ョ ンが開始したことを示すメ ッセージ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 91UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 92: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

5. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

6. [Finish] をク リ ッ ク します。「This application required xilffs library in Board Support Package」 (このアプ リ ケーシ ョ ン

にはボード サポート パッケージに xilffs ライブラ リが必要です) という メ ッセージが表示されたら、 上記の手順

を繰り返して FSBL スタンドアロン アプリ ケーシ ョ ンを作成します。

New Project ウ ィザードが閉じます。 fsbl アプリ ケーシ ョ ン プロジェク トが作成され、 [Project Explorer] ビュー

に表示されます。 fsbl.elf を生成するには、 fsbl プロジェク ト を右ク リ ッ ク して [Build Project] をク リ ッ ク し、

プロジェク ト をビルド します。

QSPI フラ ッシュ用の Linux ブータブル イメージの作成

1. Vitis ソフ ト ウェア プラ ッ ト フォームで [Xilinx] → [Create Boot Image] をク リ ッ ク し、 Create Boot Image ウ ィザー

ドを開きます。

2. [Architecture] ド ロ ップダウン リ ス トから [Zynq] を選択します。

3. [Output BIF file path] フ ィールドの横にある [Browse] をク リ ッ ク し、 output.bif ファ イルを選択します。

表 6-2: Linux プロジェク ト をブートする場合の New Project ウィザードの設定

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name fsbl

Use default location オン

System project [Create New] をオン

Platform hw_platform

CPU ps7_cortexa9_0

OS Platform standalone

Language C

Domain ps7_cortexa9_0

Templates Available Templates Zynq FSBL

X-Ref Target - Figure 6-11

図 6-11: Zynq デバイスのブート イメージの作成

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 92UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 93: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

4. [Output path] フ ィールドの横にある [Browse] をク リ ッ ク し、 BOOT.bin ファ イルを選択します。

注記: QSPI ブート ファ イル BOOT.bin は、 このガイ ドに付属の ZIP ファ イルに含まれています。 129 ページの

「このチュート リ アルのデザイン ファ イル」 を参照してください。

5. [Add] をク リ ッ ク して次のブート イ メージ パーティシ ョ ンを追加します。

° fsbl.elf (ブート ローダー )。

注記: fsbl.elf は <project dir>/fsbl/Debug にあ り ます。 78 ページの 「必要な環境」 でダウンロー

ド したファ イルに含まれる fsbl.elf を使用するこ と もできます。

° ビッ ト ス ト リーム ファ イル tutorial_bd_wrapper.bit を追加します。

° U-Boot image u-boot.elf を追加します。

° PetaLinux 出力イ メージ image.ub を追加し、 オフセッ ト 0x520000 を指定します。 image.ub は、 カー

ネル イ メージ、 デバイス ツ リー blob、 および 小 rootfs で構成されます。

6. [Create Image] をク リ ッ ク して指定した出力パス フォルダーに BOOT.bin ファイルを作成します。

JTAG を使用した QSPI フラ ッシュのブート イメージでのプログラム

JTAG を使用して、 QSPI フラ ッシュをブート イ メージでプログラムできます。

1. ZC702 ボードに電源を投入します。

2. シリアル ターミナルが開いていない場合は、 ボー レート を 115200 に設定してシリアル ターミナルに接続します。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

3. [Xilinx] → [XSCT Console] をク リ ッ ク して XSCT ツールを開きます。

4. XSCT プロンプ トで次を実行します。

a. 「connect」 と入力して PS に接続します。

b. 「targets」 と入力してターゲッ ト プロセッサのリ ス ト を取得します。

c. 「ta 2」 と入力してプロセッサ CPU1 を選択します。

d. 「dow fsbl.elf」 と入力して PetaLinux FSBL をダウンロード します。

e. 「con」 と入力し、 その後 「stop」 と入力します。

f. 「dow u-boot.elf」 と入力して Linux U-Boot を QSPI フラ ッシュにダウンロード します。

g. 「dow -data BOOT.bin 0x08000000」 と入力し、 Linux のブータブル イ メージをターゲッ ト メモ リのロ

ケーシ ョ ン 0x08000000 にダウンロード します。

注記: バイナリ実行ファイルを DDR メモ リにダウンロード しました。 バイナリ実行ファイルは DDR メモ リ

のどのアドレスにもダウンロードできます。

h. 「con」 と入力して U-Boot を実行します。

U-Boot がブート を開始します。 シ リ アル ターミナルに、 次のよ うな自動ブート カウン ト ダウン メ ッセー

ジが表示されます。

Hit any key to stop autoboot: 3

5. Enter キーを押します。

U-Boot からの自動ブートが停止し、 シ リ アル ターミナルに U-Boot コマンド プロンプ トが表示されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 93UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 94: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

6. 次の手順に従って U-Boot をブータブル イ メージでプログラムします。

a. プロンプ トに 「sf probe 0 0 0」 と入力して QSPI フラ ッシュを選択します。

b. 「sf erase 0 0x01000000」 と入力してフラ ッシュ データを消去します。

このコマンドによ り、 16 MB のオンボード QSPI フラ ッシュ メモ リが完全に消去されます。

c. 「sf write 0x08000000 0 0xffffff」 と入力して QSPI フラ ッシュにブート イ メージを書き込みます。

ブータブル イ メージは既に DDR の 0x08000000 にコピーされています。 このコマンドは、 ブータブル イ メージ

と同じサイズのデータを、 DDR から QSPI のロケーシ ョ ン 0x0 にコピーします。

この例では、 16 MB のフラ ッシュ メモ リ を使用しているので、 16 MB のデータがコピーされます。 ブータブル

イ メージのサイズは引数を変更して調整できます。

7. ボードの電源をオフにし、 次のセクシ ョ ンのブート手順に従います。

フラッシュ プログラム ツールを使用した QSPI フラ ッシュのプログラム

QSPI フラ ッシュをプログラムするには、 Vitis ソフ ト ウェア プラ ッ ト フォームのフラ ッシュ プログラム ツールを使

用できます。

1. ZC702 ボードに電源を投入します。

2. シリアル ターミナルが開いていない場合は、 ボー レート を 115200 に設定してシリアル ターミナルに接続します。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

3. [Xilinx] → [Program Flash] をク リ ッ ク します。

4. フラ ッシュにプログラムする BOOT.bin ファ イルを選択し、 [Program] をク リ ッ ク します (次の図を参照)。

正し くプログラムされる と、 コンソール ウ ィンド ウに 「Flash Operation Successful」 とい う メ ッセージが表示さ

れます。

X-Ref Target - Figure 6-12

図 6-12: フラ ッシュ ツールを使用した BOOT.bin ファイルのプログラム

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 94UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 95: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

5. ボードの電源をオフにし、 95 ページの 「QSPI フラ ッシュからの Linux のブート 」 または96 ページの 「SD カー

ドからの Linux のブート 」 のブート手順に従います。

QSPI フラ ッシュからの Linux のブート

1. QSPI フラ ッシュをプログラムしたら、 ボードの SW16 スイ ッチを次の図に示すよ うに設定します。

2. 115200 のボー レート設定を使用してシ リ アル ターミナルを接続します。

注記: これは Zynq デバイスで UART に設定されているボー レートです。

3. ボードに電源を投入します。

シ リ アル ターミナルに Linux ブート メ ッセージが表示されます。 ブートが完了する と、

root@xilinx-zc702-2019_2:~# プロンプ トが表示されます。 ルート権限のログインおよびパスワードを入

力します。

4. 81 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボード IP アドレスの接続を確認します。

Linux アプリ ケーシ ョ ンの作成およびデバッグについては、 86 ページの 「サンプル デザイン: Vitis ソフ ト ウェア

プラ ッ ト フォームを使用した Linux アプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-13

図 6-13: QSPI フラ ッシュから Linux をブートする際のジャンパー設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 95UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 96: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

SD カードからの Linux のブート

1. SW16 スイ ッチ設定を次の図に示すよ うに変更します。

2. 81 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボードを設定します。

3. 91 ページの 「第 1 段階ブート ローダー (FSBL) の実行ファイルの作成」 の説明に従ってデザインの第 1 段階ブー

ト ローダー (FSBL) を作成します。

注記: デフォルトの FSBL イ メージを変更する必要がない場合は、 このガイ ドの ZIP ファ イルに含まれる

fsbl.elf ファイルを使用できます。 129 ページの 「このチュート リ アルのデザイン ファ イル」 を参照してく

ださい。

4. Vitis IDE で [Xilinx] → [Create Boot Image] をク リ ッ ク し、 Create Boot Image ウ ィザードを開きます。

5. fsbl.elf、 BIT ファ イル (存在する場合)、 および u-boot.elf を追加します。

6. [Output folder] で出力フォルダーへのパスを指定します。

7. [Create Image] をク リ ッ ク します。 BOOT.bin ファ イルが指定のフォルダーに生成されます。

X-Ref Target - Figure 6-14

図 6-14: SD カードから Linux をブートする際のジャンパー設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 96UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 97: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 6 章: Linux のブートおよび Vitis ソフ トウェア プラッ ト フォームでのデバック

8. BOOT.bin および image.ub を SD カードにコピーします。

重要: ファ イル名は変更しないでください。 U-Boot は、 システムのブート中に SD カード内でこれらの名前でファイ

ルを検索します。

9. ボードに電源を投入し、 シ リ アル ターミナルに表示される メ ッセージを確認します。 ターゲッ ト ボードで

Linux のブートが完了する と、 root@plnx_arm:~# プロンプ トが表示されます。

10. 81 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボード IP アドレスを設定し、 接続を確

認します。

Linux アプリ ケーシ ョ ンの作成およびデバッグについては、 86 ページの 「サンプル デザイン: Vitis ソフ ト ウェア

プラ ッ ト フォームを使用した Linux アプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-15

図 6-15: Zynq ブート イメージの作成

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 97UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 98: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章

Linux 用のカスタム IP とデバイス ド ライバーの作成

この章では、Create and Package New IP ウ ィザードを使用して IP を作成します。また、ザイ リ ンクス Zynq®-7000 SoC

デバイス用に作成された IP を含むシステムを開発します。

この IP 用に、 実行中のカーネルに動的にロード可能なモジュールと して Linux ベースのデバイス ド ラ イバーを開発

します。

さ らに、 Zynq SoC ZC702 ボード上のシステムで実行する Linux ベースのアプリ ケーシ ョ ン ソフ ト ウェアを開発し

ます。

要件

この章では、 ターゲッ ト プラ ッ ト フォームと して ZC702 ボードを使用します。 ホス ト プラ ッ ト フォームは Vivado®

Design Suite ツールを実行する Windows マシンです。

Linux ベースのデバイス ド ラ イバーを開発し、 カーネルをコンパイルするための要件は次のとおりです。

• Linux ベースのワークステーシ ョ ン: このワークステーシ ョ ンを使用して IP 用にカーネルおよびデバイス ド ラ

イバーを構築します。

• ターゲッ ト アーキテクチャのクロス開発用に GNU ツールチェーンを導入した Eclipse ベースの統合開発環境

(IDE): ツールに関する情報およびインス トール方法は、 ザイ リ ンクスの Zynq ツール Wiki ページ [参照 13] を参

照してください。

• カーネル ソース コードおよびビルド環境: ザイ リ ンクスの Zynq Linux Wiki ページ [参照 14] を参照してくださ

い。 このページには、 Zynq SoC FPGA 特有の Linux カーネルに関する詳細が記載されています。 カーネル ソー

ス ファ イルをダウンロードするだけでなく、 Zynq SoC FPGA 用に Linux カーネルを構築するための情報も こ こ

から入手できます。

注記: カーネル ソース ファ イルおよび U-Boot ファ イルは、 ザイ リ ンクスの GitHub ウェブサイ ト [参照 18] から

ダウンロードできます。

• デバイス ド ラ イバー ソフ ト ウェア ファ イル (blink.c) および対応するヘッダー ファ イル (blink.h): これらの

ファイルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 129 ページの 「このチュート リ アルのデザイ

ン ファ イル」 を参照してください。

• アプリ ケーシ ョ ン ソフ ト ウェア (linux_blinkled_apps.c) および対応するヘッダー ファ イル (blink.h):

これらのファイルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 129 ページの 「このチュート リ アル

のデザイン ファ イル」 を参照してください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 98UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 99: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

• カーネルおよびデバイス ド ラ イバーのコンパイルをスキップする場合は、 このセクシ ョ ンで必要なコンパイル

済みイ メージを使用してください。 これらのイ メージは、 このガイ ドに付属の ZIP ファ イルに含まれています。

129 ページの 「このチュート リ アルのデザイン ファ イル」 を参照して ください。

注意: ペリ フェラル IP の LKM (Loadable Kernel Module) は、 ベース カーネル イ メージを生成する同じカーネル ビル

ド プロセスの一部と して構築する必要があ り ます。 カーネルまたは LKM のビルド プロセスをスキップする場合は、

このセクシ ョ ン用に既にコンパイルされているカーネルおよび LKM モジュールのイ メージを使用してください。 こ

れらのイ メージは、 このガイ ドに付属の ZIP ファ イルに含まれています。 129 ページの 「このチュート リ アルのデザ

イン ファ イル」 を参照してください。

ペリフェラル IP の作成

このセクシ ョ ンでは、 Create and Package New IP ウ ィザードを使用して AXI4-Lite 準拠のスレーブ ペリ フェラル IP フ

レームワークを作成します。 また、 このペリ フェラル IP フレームワークに機能を追加し、 ポート を割り当てます。

作成するペリ フェラル IP は AXI4-Lite 準拠のスレーブ IP です。 これには 28 ビッ ト カウンターが含まれます。 このカ

ウンターの 4 MSB ビッ トは、 ペリ フェラル IP の 4 つの出力ポート を駆動します。 次の図にブロッ ク図を示します。

上記のブロ ッ ク図に示されているコンフ ィギュレーシ ョ ン レジスタの詳細は、 次のとおりです。

X-Ref Target - Figure 7-1

図 7-1: ペリフェラル IP のブロック図

レジスタ名 制御レジスタ

相対アドレス 0x0000_0000

幅 1 ビッ ト

アクセス タイプ 読み出し /書き込み

説明 カウンターの開始/停止

フ ィールド名 ビッ ト データ型 リセッ ト値 説明

制御ビッ ト 0 R/W 0x0 1: カウンターを開始

2: カウンターを停止

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 99UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 100: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

サンプル プロジェク ト : ペリフェラル IP の作成

このセクシ ョ ンでは、 AXI4-Lite 準拠のスレーブ ペリ フェラル IP を作成します。

1. 13 ページの 「サンプル プロジェク ト : Zynq SoC の新規エンベデッ ド プロジェク トの作成」 の説明に従って新し

いプロジェク ト を作成します。

2. [Tools] → [Create and Package New IP] をク リ ッ ク します。 [Next] をク リ ッ ク します。

3. [Create a new AXI4 peripheral] をオンにし、 [Next] をク リ ッ ク します。

4. ペリ フェラルの詳細を次のよ うに入力します。

5. [Next] をク リ ッ ク します。

6. [Add Interfaces] ページで、 デフォルト設定のままにして [Next] をク リ ッ ク します。

7. [Create Peripheral] ページで [Edit IP] をオンにし、 [Finish] をク リ ッ ク します。 新規 IP の生成プロセスが完了する

と、 次の図に示す [Package IP] ウ ィンド ウが開きます。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Peripheral Details Name Blink

Version 1.0

Display Name Blink_v1.0

Description My new AXI IP

IP location C:/designs/ip_repro

Overwrite existing オフ

X-Ref Target - Figure 7-2

図 7-2: [Package IP] ウィンドウ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 100UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 101: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

8. [Sources] ウ ィンド ウの [Hierarchy] タブで [Design Sources] フォルダー内の [blink_v1_0] を右ク リ ッ ク し、[Open File]

をク リ ッ ク します。 ZC702 ボードの外部 LED にマップするため、 出力ポート を作成する Verilog コードを追加す

る必要があり ます。 //Users to add ports here の行に移動し、 その行の下に次のコードを追加します。

//Users to add ports hereoutput wire [3:0] leds,//User ports ends

9. AXI バス インターフェイスへのインスタンスのインスタンシエーシ ョ ンを見つけ、 次のコードを追加してポー

ト接続をマップします。

.S_AXI_RREADY(s00_axi_rready),

.leds(leds));

10. blink_v1_0.v を保存して閉じます。

11. [Sources] ウ ィンド ウの [Hierarchy] タブで、 [Design Sources] → [blink_v1_0] の下にある [blink_v1_0_S00_AXI_inst

- blink_v1_0_S00_AXI] を右ク リ ッ ク し、 [Open File] をク リ ッ ク します。

ZC702 ボードの外部 LED にマップするため、 出力ポート を作成する Verilog コードを追加し、 レジスタ 0 が書き

込まれたと きに LED を点滅させるロジッ ク コード も作成します。

12. //Users to add ports here の行に移動し、 その行の下に次のコードを追加します。

//Users to add ports hereoutput wire [3:0] leds,//User ports ends

13. AXI4Lite 信号のセクシ ョ ンを見つけ、 カウンターと して使用するカスタム レジスタを追加します。 次に赤で示

すコードを追加します。

// AXI4LITE signalsreg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_awaddr;reg axi_awready;reg axi_wready;reg [1 : 0] axi_bresp;reg axi_bvalid;reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_araddr;reg axi_arready;reg [C_S_AXI_DATA_WIDTH-1 : 0] axi_rdata;reg [1 : 0] axi_rresp;reg axi_rvalid;

// add 28-bit register to use as counterreg [27:0] count;

14. I/O 接続割り当てセクシ ョ ンを見つけます。 こ こで、 カウンターの下位 4 ビッ ト を LED に割り当てます。 次に赤

で示すコードを追加します。

// I/O Connections assignmentsassign S_AXI_AWREADY= axi_awready;assign S_AXI_WREADY= axi_wready;assign S_AXI_BRESP= axi_bresp;assign S_AXI_BVALID= axi_bvalid;assign S_AXI_ARREADY= axi_arready;assign S_AXI_RDATA= axi_rdata;assign S_AXI_RRESP= axi_rresp;assign S_AXI_RVALID= axi_rvalid;

// assign MSB of count to LEDsassign leds = count[27:24];

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 101UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 102: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

15. ファ イルの 後の方にある 「Add user logic here」 とい う行を見つけます。 この行の下に、 slv_reg0 が 0x1 に

設定されている と きにカウン ト をインク リ メン トする次のコードを追加します。 このレジスタが設定されてい

ない場合、 カウンターはインク リ メン ト しません。 次に赤で示すコードを追加します。

// Add user logic here// on positive edge of input clockalways @( posedge S_AXI_ACLK )begin//if reset is set, set count = 0x0if ( S_AXI_ARESETN == 1'b0 )begincount <= 28'b0;

end elsebegin //when slv_reg_0 is set to 0x1, increment countif (slv_reg0 == 2'h01)begincount <= count+1;

endelsebegincount <= count;

end end

end// User logic ends

16. blink_v1_0_S00_AXI.v を保存して閉じます。

17. [Package IP - blink] ウ ィンド ウを開きます。 [Packaging Steps] の下の [Ports and Interfaces] をク リ ッ ク します。

18. [Merge changes from Ports and Interfaces Wizard] リ ンクをク リ ッ ク します。

X-Ref Target - Figure 7-3

図 7-3: [Merge changes from Ports and Interfaces Wizard] リンク

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 102UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 103: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

19. ウ ィンド ウが更新されて、 LED 出力ポート を含まれているこ とを確認します。

20. [Packaging Steps] の下の [Review and Package] をク リ ッ ク します。 [Review and Package] ページの下部にある

[Re-Package IP] をク リ ッ ク します。

パッケージが完了したこ とを示すダイアログ ボッ クスが開き、プロジェク ト を閉じるかど うかを指定できます。

21. [Yes] をク リ ッ ク します。

注記: 実行したカスタム コア作成プロセスは、 IP 作成プロセスに含まれるサンプル Verilog を使用した単純なも

のです。 詳細は、 GitHub Zynq Cookbook: BFM シ ミ ュレーシ ョ ンの実行方法ウェブ ページ [参照 19] を参照して

ください。

X-Ref Target - Figure 7-4

図 7-4: [Package IP] ウィンドウ: [Ports and Interfaces] ページ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 103UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 104: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

PS の GP マスター ポート を使用したペリフェラル IP の統合

このセクシ ョ ンでは、 ペリ フェラル IP をスレーブと して Zynq SoC プロセッシング ロジッ ク (PL) にインスタンシ

エート して、 ZC702 ボード用のシステムを作成します。 その後、 それをプロセッシング システム (PS) の汎用 (GP) マ

スター ポート を介して PS プロセッサに接続します。 次の図にシステムのブロッ ク図を示します。

このシステムにおける接続は次のとおりです。

• ペリ フェラル IP は PS 汎用マスター ポート 0 (M_AXI_GP0) に接続します。 この接続は、 ペリ フェラル IP レジス

タをコンフ ィギュレーシ ョ ンするために PS CPU によ り使用されます。

• ペリ フェラル IP の 4 つの出力ポートはオンボード LED (DS15、 DS16、 DS17、 および DS18) に接続します。

このシステムでは、 アプリ ケーシ ョ ン コードを実行する と、 シ リ アル ターミナルに LED の点滅を開始するか停止す

るかを尋ねる メ ッセージが表示されます。

• 開始を選択する と、 4 つの LED すべてが点滅し始めます。

• 停止を選択する と、 4 つの LED すべてが点滅を停止して以前の状態を保持します。

このセクシ ョ ンでは、 100 ページの 「サンプル プロジェク ト : ペリ フェラル IP の作成」 で作成した AXI4-Lite 準拠の

カスタム スレーブ ペリ フェラル IP を接続します。

1. 13 ページの 「サンプル プロジェク ト : Zynq SoC の新規エンベデッ ド プロジェク トの作成」 で作成した Vivado プ

ロジェク ト を開きます。

2. 既存のデザインにカスタム IP を追加します。 [Diagram] ウ ィンドウを右ク リ ッ ク して [Add IP] をク リ ッ ク します。

3. 検索ボッ クスに 「blink」 と入力します。 Blink_v1.0 が表示されます。 その IP をダブルク リ ッ ク してデザイン

に追加します。

4. [Run Connection Automation] リ ンクをク リ ッ ク してポート を自動接続します。

X-Ref Target - Figure 7-5

図 7-5: ブロック図

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 104UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 105: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

5. [All Automation] がオンになっているこ とを確認し、 [OK] をク リ ッ ク して接続を実行します。

新しい IP は自動的に接続されますが、 LED 出力ポートは接続されません。

6. leds ポート を右ク リ ッ ク して [Make External] をク リ ッ ク します。

7. Flow Navigator で [RTL Analysis] → [Open Elaborated Design] をク リ ッ ク します。

8. [OK] をク リ ッ ク します。

9. エラボレート済みデザインを開いたら、[I/O Ports] ウ ィンド ウをク リ ッ ク して [All ports] → [led_0] を展開します。

X-Ref Target - Figure 7-6

図 7-6: LED ポートを外部に設定

X-Ref Target - Figure 7-7

図 7-7: I/O Ports

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 105UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 106: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

10. LED ポート を次のよ うに設定します。

次の図に、 [I/O Ports] ウ ィンド ウで完了した LED ポート設定を示します。

11. [Generate Bitstream] をク リ ッ ク します。

12. [Save Project] ダイアログ ボッ クスが開きます。 チェッ ク ボッ クスがオンになっているこ とを確認して、 [Save]

をク リ ッ ク します。

13. 合成を更新する必要があるこ とを示すメ ッセージが表示された場合は、 [Yes] をク リ ッ ク します。

14. ビッ ト ス ト リームの生成が完了したら、 22 ページの 「Vitis ソフ ト ウェア プラ ッ ト フォームへのハードウェアの

エクスポート 」 の説明に従って、 ハード ウェアをエクスポート して Vitis™ 統合ソフ ト ウェア プラ ッ ト フォーム

を起動します。

ポート名 I/O 規格 ([I/O Std]) パッケージ ピン ([Package Pin])

Leds[3] LVCMOS25 P17

Leds[2] LVCMOS25 P18

Leds[1] LVCMOS25 W10

Leds[0] LVCMOS25 V7

X-Ref Target - Figure 7-8

図 7-8: LED ポート設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 106UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 107: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

Linux ベースのデバイス ド ライバーの開発

Linux のモジュールは、 必要に応じてカーネルにロード /アンロードできます。 このよ うに追加するコードは、 LKM

(Loadable Kernel Module) と呼ばれます。 これらのモジュールを使用する と、 システムを リブートせずにカーネルの

機能を拡張できます。 これらのモジュールを使用しない場合は、 モノ リ シッ ク カーネルをビルド してカーネル イ

メージに直接新しい機能を追加する必要があ り ます。 この場合、 カーネルが大き くなるだけでなく、 新しい機能を

追加するたびにカーネルの再ビルド と リブートが必要となる という欠点もあ り ます。

LKM は一般的に次のいずれかを指します。

• デバイス ド ラ イバー : ハードウェア用に設計されます。 カーネルでデバイス ド ラ イバーを使用する と、 ハード

ウェアがどのよ うに機能するかを詳細に把握していなくてもそのハード ウェアと通信できます。

• ファ イルシステム ド ラ イバー : ファ イル システムの内容をファイルおよびディ レク ト リ と して解釈します。

• システム コール: ユーザー空間プログラムでカーネルにサービスを要求するために使用されます。

Linux では、 各ハード ウェアはデバイス ファ イルと して指定されているファイルで表され、 デバイス ファ イルは

ハードウェアとの通信手段を提供します。 ほとんどのハード ウェア デバイスは出力および入力の両方に使用される

ため、 デバイス ファ イルはハードウェアとデータを送受信するための入力/出力制御 (ioctl) を提供します。 各デバ

イスは、 次のタイプの独自の ioctl コマンドを持つこ とができます。

• 読み出し ioctl。 プロセスからカーネルに情報を送信します。

• 書き込み ioctl。 プロセスに情報を返します。

• 読み出しおよび書き込み両方の ioctl。

• 読み出しでも書き込みでもない ioctl。

LKM の詳細は、 『Linux Kernel Module Programming Guide』 [参照 20] を参照して ください。

このセクシ ョ ンでは、 ペリ フェラル IP のデバイス ド ラ イバーを、 実行中のカーネルに動的にロード可能な LKM と

して開発します。ペリ フェラル IP の LKM は、ベース カーネル イ メージを生成するのと同じカーネル ビルド プロセ

スの一部と してビルドする必要があ り ます。

注記: デバイス ド ラ イバーをコンパイルしない場合は、 このセクシ ョ ンの例をスキップして109 ページの 「実行中の

カーネルへのモジュールのロード とアプリ ケーシ ョ ンの実行」 に進むこ とができます。 そのセクシ ョ ンでは、

blink.ko (付属の ZIP ファ イルに含まれる image.ub) を含むカーネル イ メージを使用します。 129 ページの 「この

チュート リ アルのデザイン ファ イル」 を参照してください。

カーネルのコンパイルおよびデバイス ド ラ イバーの開発には、 Linux ワークステーシ ョ ンを使用する必要があ り ま

す。 デバイス ド ラ イバーの開発を開始する前に、 次を実行する必要があ り ます。

1. Linux ワークステーシ ョ ンでツールチェーン パスを設定します。

2. カーネル ソース コードをダウンロード してコンパイルします。 ダウンロード と コンパイルについては、 ザイ リ

ンクスの Zynq Linux Wiki ページ [参照 14] に記載されている手順を参照して ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 107UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 108: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

サンプル プロジェク ト : デバイス ド ライバーの開発

このサンプル プロジェク トでは、 Linux ワークステーシ ョ ンを使用します。 デバイス ド ラ イバー ソフ ト ウェアは、

このガイ ドに付属の ZIP ファ イルに含まれる LKM フォルダーにあ り ます。 129 ページの 「このチュート リ アルのデ

ザイン ファ イル」 を参照してください。

1. PetaLinux プロジェク トのディ レク ト リで、 次のコマンドを使用してモジュールを作成します。

petalinux-create -t modules --name mymodule --enable

モジュールが <plnx-project>/project-spec/meta-user/recipes-modules/ の下に作成されます。

次のコマンドを使用して blink モジュールを作成します。

petalinux-create -t modules --name blink --enable

デフォルトのド ライバー作成によ り、 makefile、 C ファ イル、 および Readme ファ イルが作成されます。 この演

習では、 blink.c、 Makefile、 および README ファ イルが作成されます。 ビッ ト ベーク レシピ blink.bb も含ま

れています。

2. ド ラ イバーに合わせて C ファ イル (ド ラ イバー ファ イル) および makefile を変更します。

3. LKM フォルダー ( リ ファレンス ファ イル) を選択し、blink.c および blink.h をこのディ レク ト リにコピーし

ます。

4. blink.bb レシピを開き、 SRC_URI に blink.h エン ト リ を追加します。

5. 次のコマンドを実行します。

petalinux-build

コンパイルが正常に完了する と、 .ko ファ イルが次のディ レク ト リに作成されます。

<petalinux-build_directory>/build/tmp/sysroots-components/zc702_zynq7/blink/lib/modules/4.19.0-xilinx-v2019.2/extra/blink.ko

6. modprobe コマンドを使用してド ラ イバーをインス トールできます。 このコマンドについては、 次のセクシ ョ

ンで詳細に説明します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 108UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 109: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

実行中のカーネルへのモジュールのロード とアプリケーシ ョ ンの実行

このセクシ ョ ンでは、 Zynq SoC ボードで Linux をブート し、 ペリ フェラル IP を LKM と してロード します。 システ

ム用のアプリ ケーシ ョ ンを開発し、 ハード ウェアで実行します。

モジュールのカーネル メモリへのロード

LKM を挿入する基本的なプログラムは、 modprobe です。 modprobe コマンドは、 init_module システム コールを

実行して LKM をカーネル メモ リにロード します。 init_module システム コールは、 LKM をロード した直後に

LKM の初期化ルーチンを開始します。 この初期化ルーチンの一部と して、 insmod は init_module にサブルーチ

ンのアドレスを渡します。

ペリ フェラル IP のデバイス ド ラ イバーでは、 init_module はサブルーチンを登録するカーネル関数を呼び出すよ

うに設定されています。 これは、 カーネルの register_chrdev サブルーチンを呼び出し、 駆動するデバイスのメ

ジャー番号とマイナー番号、 および独自のオープン ルーチンのアドレスを引数間で渡します。 register_chrdev

サブルーチンのカーネルのベース テーブルでは、 カーネルが特定デバイスを開く と きにユーザーの LKM のオープ

ン ルーチンを呼び出すよ うに指定されています。

アプリケーシ ョ ン ソフ トウェア

アプリ ケーシ ョ ン ソフ ト ウェアの main() 関数は、実行のエン ト リ ポイン トです。 この関数はペリ フェラル IP のデ

バイス ファ イルを開いた後、 シ リ アル ターミナルでのユーザーの選択を待ちます。

開始を選択する と、 4 つの LED すべてが点滅し始めます。 停止を選択する と、 4 つの LED すべてが点滅を停止して

以前の状態を保持します。

サンプル プロジェク ト : モジュールのカーネルへのロード とアプリケーシ ョ ンの実行

ターゲッ ト ボートの Linux のブート

79 ページの 「Zynq SoC ボード上での Linux のブート 」 の説明に従って、 Zynq SoC ZC702 ターゲッ ト ボードで Linux

をブート します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 109UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 110: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

モジュールのロードおよびアプリケーシ ョ ンの実行

このセクシ ョ ンでは、 Windows マシンにインス トールされている Vitis ソフ ト ウェア プラ ッ ト フォームを使用します。

1. Vitis ソフ ト ウェア プラ ッ ト フォームを開きます。

TCF (Target Communication Frame) エージェン ト をホス ト マシンで実行する必要があ り ます。

2. [XSCT] → [connect] をク リ ッ ク し、 ザイ リ ンクス ソフ ト ウェア コマンド ライン ツール (XSCT) に接続します。

3. Vitis ソフ ト ウェア プラ ッ ト フォームで [File] → [New] → [Application Project] をク リ ッ ク し、 New Application

Project ウ ィザードを開きます。

4. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

5. [Finish] をク リ ッ ク します。

New Application Project ウ ィザードが閉じ、linux_blinkled_app プロジェク トが作成されて [Project Explorer]

ビューに表示されます。

6. [Project Explorer] ビューで [linux_blinkled_app] プロジェク ト を展開し、 [src] ディ レク ト リ を右ク リ ッ ク して

[Import] をク リ ッ ク します。

[Import Sources] ダイアログ ボッ クスが開きます。

7. LKM_App フォルダーにある linux_blinkled_app.c および blink.h ファ イルを選択します。

注記: システム用のアプリ ケーシ ョ ン ソフ ト ウェア ファ イル名は linux_blinkled_app.c で、 ヘッダー ファ

イル名は blink.h です。 これらのファイルは、 このガイ ドに付属の ZIP ファ イルの LKM フォルダーに含まれて

います。 129 ページの 「このチュート リ アルのデザイン ファ イル」 を参照して ください。

linux_blinkled_app.c および blink.h ファ イルを追加します。

8. [Finish] をク リ ッ ク します。

linux_blinkled_app プロジェク ト を右ク リ ッ ク して [Build Project] をク リ ッ ク し、 バイナリ フォルダーに

linux_blinkled_app.elf を生成します。 コンソール ウ ィンド ウでこの処理のステータスを確認します。

9. ボードを接続します。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name linux_blinkled_app

Use default location オン

System project <linux_blinked_app_system>

Domain linux on ps7_cortexa9

CPU cortexa-a9

OS linux

Language C

Sysroot path ??

Templates Available Templates Linux Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 110UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 111: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

10. PL ファブリ ッ クのビッ ト ス ト リームがあるので、 これをダウンロードする必要があ り ます。 [Xilinx Tools] →

[Program FPGA] をク リ ッ ク します。

[Program FPGA] ダイアログ ボッ クスが開きます。 Vivado からエクスポート されたビッ ト ス ト リームが表示され

ます。

11. [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード して PL ファブ リ ッ クをプログラムします。

12. 第 6 章の手順に従って、 Linux イ メージを読み込んで起動します。

カーネルが正常にブート したら、 シ リ アル ターミナルで /lib/modules/<kernel-version>/extra に移動

し、 次のコマンドを実行します。

modprobe blink.ko

次のメ ッセージが表示されます。

<1>Hello module world.<1>Module parameters were (0xdeadbeef) and "default"blink_init: Registers mapped to mmio = 0xf09f4000Registration is a success the major device number is 244.

デバイス ド ラ イバーと通信する場合は、 次のコマンドを実行してデバイス ファ イルを作成します。

mknod /dev/blink_Dev c 244 0

ioctl プログラムはデバイス ファ イル名に基づいて使用するファイルを判断するので、 デバイス ファ イル名は重

要です。

13. デバイス ノードを作成します。

mknod コマンドを実行し、 表示されたメ ッセージから文字列を選択します。

たとえば、mknod /dev/blink_Dev c 244 0 という コマンドを実行すると、/dev/blink_Dev ノードが作成さ

れます。

14. [Windows] → [Open] → [Remote System Explorer] をク リ ッ ク して [Open] をク リ ッ ク します。

Remote Systems Explorer が開きます。

15. Remote Systems Explorer で次を実行します。

a. 右ク リ ッ ク して [New] → [Connection] をク リ ッ ク し、 New Connection ウ ィザードを開きます。

b. [SSH only] をク リ ッ ク し、 [Next] をク リ ッ ク します。

c. [Host Name] にターゲッ ト ボード IP を入力します。

注記: ターゲッ ト IP を確認するには、 シ リ アル ターミナルの Zynq> プロンプ トに 「ifconfig eth0」 と

入力します。 ボードに割り当てられているターゲッ ト IP が表示されます。

d. 接続名を blink にし、 説明を入力します。

e. [Finish] をク リ ッ ク して接続を作成します。

f. [blink] → [sftp Files] → [Root] を展開します。 Enter Password ウ ィザードが開きます。

g. ユーザー ID およびパスワード (root/root) を入力し、 [Save ID] および [Save Password] をオンにします。

h. [OK] をク リ ッ ク します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 111UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 112: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 7 章: Linux 用のカスタム IP とデバイス ド ライバーの作成

Windows ホス ト マシンと ターゲッ ト ボード間の接続が既に確立されているため、 ウ ィンド ウにルート ディ

レク ト リの内容が表示されます。

i. パス名の 「/」 を右ク リ ッ ク し、 Apps という名前の新しいディ レク ト リ を作成します。

j. Remote Systems Explorer を使用して、 <project-dir>linux_blinkled_app/Debug フォルダーから

linux_blinkled_app.elf ファ イルをコピーし、 [blink connection] の下の /Apps ディ レク ト リに貼り付

けます。

16. シ リアル ターミナルで、 Zynq> プロンプ トに 「cd Apps」 と入力し、 /Apps ディレク ト リ を開きます。

17. root@xilinx-zc702-2019_2: Linux プロンプ トで Apps ディ レク ト リに移動し、 「chmod 777

linux_blinkled_app.elf」 と入力して linux_blinkled_app.elf ファ イル モードを実行ファイル モー

ドに変更します。

18. root@xilinx-zc702-2019_2: プロンプ トに 「./Linux_blinkled_app.elf」 と入力してアプリ ケーシ ョ

ンを実行します。

19. シ リアル ターミナルに表示される手順に従ってアプリ ケーシ ョ ンを実行します。 アプリ ケーシ ョ ンによ り、 1

または 0 を入力するよ う指示が表示されます。

° 「1」 と入力し、 LED DS15、 DS16、 DS17、 および DS18 を観察します。 LED が点滅し始めます。

° 「0」 と入力し、 各 LED がそれぞれのステートで停止するのを観察します。 それ以上点滅しません。

入力を繰り返して LED を観察できます。

20. Linux アプリ ケーシ ョ ンのデバッグが終了したら、 Vitis ソフ ト ウェア プラ ッ ト フォームを閉じます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 112UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 113: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 8 章

Vitis ソフ トウェア プラッ ト フォームでのソフ トウェアのプロファイル

この章では、 第 6 章で作成したスタンドアロン ド メ インまたはボード サポート パッケージ (BSP) と AXI CDMA 関

連のアプリ ケーシ ョ ンに対してプロファ イル機能を有効にします。

Vitis ソフ トウェア プラッ ト フォームでのシステム デバッガーを使用したアプリケーシ ョ ンのプロファイル

プロファイルは、 各ルーチンのソフ ト ウェア実行時間を計測する方法です。 この情報を使用して、 コードの重要な

部分およびデザインでの 適なコード配置を判断できます。 頻繁に呼び出されるルーチンは、 キャ ッシュ メモ リ な

どの高速メモ リに配置するのが 適です。 プロファ イル情報を使用する と、 コードをハード ウェアに配置可能かど

うかも判断でき、 全体的なパフォーマンスを向上できます。

Vitis™ 統合ソフ ト ウェア プラ ッ ト フォームのシステム デバッガーを使用して、 アプリ ケーシ ョ ンをプロファ イルで

きます。

1. プロファイルするアプリ ケーシ ョ ンを選択します。

2. アプリ ケーシ ョ ンを右ク リ ッ ク し、 [Select] → [Debug As] [Launch on Hardware (Application Debugger)] をク リ ッ ク

します。

[Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

[Debug] パースペクティブが開きます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 113UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 114: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 8 章: Vitis ソフ トウェア プラッ ト フォームでのソフ トウェアのプロファイル

3. アプリ ケーシ ョ ンが main で停止したら、 [Window] → [Show View] → [Debug] → [TCF Profiler] をク リ ッ ク して

[TCF Profiler] ビューを開きます。

4. [Start] をク リ ッ ク してプロファ イルを開始します。 または、 [Profiler Configuration] ダイアログ ボッ クスで

[Aggregate Per Function] をオンにするこ と もできます。プロファ イル サンプル時間に応じて [View update interval]

(表示更新間隔) を設定します。 短時間は 100 msec です。

5. [Resume] ボタン をク リ ッ ク して、 アプリ ケーシ ョ ンの実行を再開します。

[TCF Profiler] ビューにプロファイル データを表示するには、 アプリ ケーシ ョ ンが停止する終了ブレークポイン ト を

追加します。

X-Ref Target - Figure 8-1

図 8-1: [TCF Profiler] ビュー

X-Ref Target - Figure 8-2

図 8-2: [Profiler Configuration] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 114UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 115: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 8 章: Vitis ソフ トウェア プラッ ト フォームでのソフ トウェアのプロファイル

追加のデザイン サポート オプシ ョ ン

デザインの目標を達成するため、 システム パフォーマンス解析 (SPA) ツールボッ クスについて学ぶと有益な場合が

あ り ます。

システム性能解析 (SPA) ツールボックス

パフォーマンス解析とベンチマークの必要性に対応して、 Vitis ソフ ト ウェア プラ ッ ト フォームにはハードウェアお

よびソフ ト ウェア システムを早期に検討するためのシステム パフォーマンス解析 (SPA) ツールボッ クスが含まれて

います。 このツールボッ クスは、 デザイン プロセスで一貫した予測可能なパフォーマンスが得られるよ うにするた

め、 パフォーマンスの検証に使用できます。

Vitis ソフ ト ウェア プラ ッ ト フォームを使用した SPA ツールボッ クスの使用に関する詳細は、 次の資料を参照してく

ださい。

• 『Vitis 統合ソフ ト ウェア プラ ッ ト フォームの資料: エンベデッ ド ソフ ト ウェア開発』 (UG1400) [参照 10]

• 『SoC のシステム性能解析』 (XAPP1219) [参照 9]

X-Ref Target - Figure 8-3

図 8-3: [TCF Profiler] ビュー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 115UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 116: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章

Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

OS 認識デバッグ機能を使用する と、 タスク リ ス ト 、 実行中のプロセス /スレッ ド、 プロセス /スレッ ド特定のスタ ッ

ク ト レース、 レジスタ、 および変数表示など、 OS 特定の情報を可視化できます。

これをサポートするには、 デバッガーがターゲッ ト上で実行中の OS を認識し、 OS の特徴を理解しているこ とが必

要です。

OS 認識デバッグでは、 プロセッサ コア上で実行中の OS と OS 上で実行中のプロセス /スレッ ドを同時にデバッグで

きます。

Vitis™ 統合ソフ ト ウェア プラ ッ ト フォームでは、 Zynq®-7000 SoC デバイス上で実行される Linux OS の OS 認識デ

バッグ機能がサポート されています。

Linux OS 認識デバッグの設定 このセクシ ョ ンでは、 Linux OS を実行する Zynq ボードで OS 認識デバッグを設定する方法を説明します。

Linux カーネルの設定

プロセス リ ス ト を読み出し、 プロセスまたはモジュールをデバッグできるよ うにするため、 Linux 認識ではカーネ

ル シンボルを使用して内部カーネル構造にアクセスします。 そのためカーネル シンボルが使用可能であるこ とが必

要です。 カーネル シンボルがないと、 Linux 認識デバッグは不可能です。 図 9-1 に示すよ うに、 vmlinux ファ イル

をデバッグ情報を有効にしてコンパイルする必要があ り ます。

注記: vmlinux ファイルは、 Linux カーネルと対応するデバッグ情報を含む、 静的にリ ンク された実行ファイルです。

PetaLinux では、 PetaLinux ツール ビルド コンフ ィギュレーシ ョ ン コマンドを使用して Linux カーネルをコンパイル

する前に、 次のコンフ ィギュレーシ ョ ン オプシ ョ ンを有効にする必要があ り ます。

CONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_INFO=y

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 116UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 117: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

次の手順に従って Linux カーネルを設定し、 デバッグ情報を含めてビルド します。

1. Linux マシンのターミナル ウ ィンド ウで、 PetaLinux プロジェク トのディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 設定メニューを起動し、 Linux カーネルを設定します。

$ petalinux-config -c kernel

3. [Kernel hacking] を選択します。

° [Compile-time checks and compiler options] を選択します。

° [Compile the kernel with debug info] を選択します。

4. 設定を保存します。

これによ り、 Linux カーネル設定ファイルのオプシ ョ ンが次のよ うに設定されます。 設定ファイルでこれらのオプ

シ ョ ンが有効になっているこ とを確認できます。

CONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_INFO=y

5. 設定メニューを起動し、 システム レベル オプシ ョ ンを設定します。

$ petalinux-config

6. [Image Packaging Configuration] を選択します。

7. [Root filesystem type] に [INITRD] を選択します。

8. 設定を保存します。

9. PetaLinux ビルド コマンド petalinux-build を使用して PetaLinux をビルド します。

10. PetaLinux が正常にビルド されたら、 vmlinux ファ イルをホス ト マシンにコピーします。

このファイルは、 デバッガーがすべての Linux カーネル シンボルを参照するために必要です。 vmlinux が

<petalinux project file>/images/linux/vmlinux に作成されます。

11. vmlinux をホス ト マシンにコピーし、 Vitis ソフ ト ウェア プラ ッ ト フォームと使用して Linux カーネルをデバッ

グします。

X-Ref Target - Figure 9-1

図 9-1: Linux カーネルでデバッグ情報コンフ ィギュレーシ ョ ン オプシ ョ ンを有効化

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 117UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 118: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

12. Linux カーネル ソース コードをデバッグ用にホス ト マシンにコピーします。 Linux カーネルは

<petalinux-project>/build/tmp/work-shared/zc702-zynq7/kernel-source にあ り ます。

注記: この資料は Windows ホス ト マシンを使用して書かれているので、 Linux ソース コードを Windows ホス ト

マシンで実行中の Vitis ツールでアクセス可能な場所にコピーする必要があ り ます。

Hello World Linux アプリケーシ ョ ンを作成して OS 認識デバッグを実行

1. Vitis ソフ ト ウェア プラ ッ ト フォームを開きます。

2. [File] → [New] → [Application Project] をク リ ッ ク します。

New Project ウ ィザードが開きます。

3. ウ ィザードの各ページで次の表の情報に基づいて設定を選択します。

4. [Finish] をク リ ッ ク します。

5. [Project Explorer] ビューで linux_hello プロジェク ト を展開して [src] ディ レク ト リ を右ク リ ッ ク し、[Import]

をク リ ッ ク して [Import] ダイアログ ボッ クスを開きます。

6. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] をク リ ッ ク します。

7. [Next] をク リ ッ ク します。

8. [Browse] をク リ ッ ク します。

9. デザイン ファイル フォルダーに移動し、 OSA フォルダーを選択して [OK] をク リ ッ ク します。

注記: このチュート リ アルのデザイン ファ イルのダウンロードについては、 129 ページの 「このチュート リ アル

のデザイン ファ イル」 を参照してください。

10. linux_hello.c ファ イルを追加して [Finish] をク リ ッ ク します。

アプ リ ケーシ ョ ンが自動的にビルド され、 コンソール ウ ィンド ウにステータスが表示されます。

11. linux_hello.elf を SD カードにコピーします。

ウィザード ページ システム プロパティ 設定または使用するコマンド

Application Project Project name linux_hello

Use default location オン

System project linux_hello_system

Platform <hw_platform>

Domain linux on ps7_cortexa9

CPU cortexa9

OS linux

Language C

Sysroot path オフ

Templates Available Templates Linux Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 118UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 119: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

OS 認識デバッグを使用した Linux プロセスおよびスレッ ドのデバッグ 1. 96 ページの 「SD カードからの Linux のブート 」 の説明に従って Linux をブート します。

2. デバッグ コンフ ィギュレーシ ョ ンを作成します。

3. [linux_hello] を右ク リ ッ ク して [Debug as] → [Debug Configurations] をク リ ッ ク します。

次の図に示す Debug Configurations ウ ィザードが開きます。

4. メ イン ウ ィンド ウの [Debug Type] ド ロ ップダウン リ ス トから [Attach to running target] を選択します。

5. [Connection] ド ロ ップダウン リ ス トから [Local] を選択します。

6. [Debug] をク リ ッ ク します。

7. [Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

次の図に示すよ うに、 [Debug] ビューに Debugger_linux_hello_Default が開きます。

X-Ref Target - Figure 9-2

図 9-2: Debug Configurations ウィザード

X-Ref Target - Figure 9-3

図 9-3: [Debug] ビュー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 119UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 120: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

8. Linux カーネル シンボル ファイルを設定し、 デバッグ コンフ ィギュレーシ ョ ンで Linux OS 認識を有効にします。

Vitis ソフ ト ウェア プラ ッ ト フォームで Linux OS 認識機能を有効にしてアプリ ケーシ ョ ンをデバッグするための

オプシ ョ ンは複数あ り ます。 [Symbol File] ダイアログ ボッ クスのオプシ ョ ンは、 次のとおりです。

° [Enable Linux OS awareness]

OS 認識を有効にします。

° [Auto refresh on exec]

オンにする と、 実行中のプロセスがすべて更新され、 [Debug] ビューに表示されます。

オフにする と、 新しいプロセスは [Debug] ビューに表示されません。

° [Auto refresh on suspend]

オンにする と、 プロセッサが停止するたびにすべてのプロセスが再同期化されます。

オフにする と、 現在のプロセスのみが再同期化されます。

9. [Debug] ビューで [Debugger_linux_hello-Default (Local)] を右ク リ ッ ク し、 [Edit Debugger_linux_hello-Default

(Local)] をク リ ッ ク します。

10. [Symbol Files] タブをク リ ッ ク します。

11. [Debug Context] ド ロ ップダウン リ ス トから [/APU/Arm_Cortex_A9MPCore #0] を選択し、 [Add] をク リ ッ ク します。

[Symbol File] ダイアログ ボッ クスが開きます。

12. 参照ボタン をク リ ッ ク します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 120UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 121: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

13. 前のセクシ ョ ンで Windows ホス ト マシン上に保存した vmlinux ファ イルのパスを指定し、 次の図に示すよ う

に [Enable OS awareness- the file is an OS kernel]、 [Auto refresh on exec]、および [Auto refresh on suspend] をオンにし

ます。

14. [Auto refresh on exec] および [Auto refresh on suspend] オプシ ョ ンをオンにして、現在のアプリ ケーシ ョ ンのデバッ

グ中にプロセス データを更新できます。

15. [OK] をク リ ッ ク します。

[Symbol File] ダイアログ ボッ クスが閉じます。

X-Ref Target - Figure 9-4

図 9-4: OS 認識の有効化

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 121UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 122: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

16. [Continue] をク リ ッ ク し、 [Save] をク リ ッ ク して設定の変更を保存します。

[Debug] ビューの表示は次の図のよ うにな り ます。

X-Ref Target - Figure 9-5

図 9-5: [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 122UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 123: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

Linux カーネルと ターゲッ ト上で実行中のプロセスが表示されます。

注記: Linux カーネルはホス ト マシン (Windows マシン) とは異なるシステム (Linux マシン) でビルド し、 そこで

Linux OS 認識アプリ ケーシ ョ ン デバッグを実行するので、 されるので、 シンボル ファ イルのパス マップ情報を

追加する必要があ り ます。

パス マップによ り ソース レベルのデバッグが可能になり、 スタ ッ ク ト レースや変数の表示、 ソース レベル ブ

レークポイン トの設定などを実行できます。

デバッガーはパス マップ設定を使用して、 システムに含まれるすべての実行ファイルおよび共有ライブラ リの

シンボル ファイルを検索およびロード します。

X-Ref Target - Figure 9-6

図 9-6: パス マップ規則の設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 123UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 124: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

17. パス マップを設定します。

a. [Path Map] タブをク リ ッ ク します。

b. [Add] をク リ ッ ク します。

c. カーネルのソース パスは、 前の図に示すよ うに、 Linux マシンからのコンパイル ディレク ト リ パスです。

たとえば <petalinux-project>/build/tmp/work-shared/zc702-zynq7/kernel-source です。

デスティネーシ ョ ン パスは、 前の手順でカーネルをコピーしたホス ト ロケーシ ョ ンです。 たとえば

<local directory>/linux-xlnx です。

d. [Apply] をク リ ッ ク して変更を適用します。

e. [Continue] をク リ ッ ク してデバッグを続けます。

X-Ref Target - Figure 9-7

図 9-7: デバッグ コンフ ィギュレーシ ョ ンのパス マップ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 124UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 125: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

18. Linux プロセスまたはスレッ ドをデバッグします。

図 9-5 に示すよ うに、 ターゲッ ト上で実行中のプロセスが表示されます。 いずれかのプロセスを右ク リ ッ ク し

て [Suspend] をク リ ッ ク します。 この方法を使用する と、 スタ ッ ク ト レースやレジスタの監視、 ブレークポイン

トの追加などを実行できます。

次の図では、 一時停止されているプロセスは 1 init です。

注記: このページに示されているアドレスは、 システムで表示されているものと若干異なる場合があ り ます。

OS 認識デバッグを使用した linux_hello アプリケーシ ョ ンのデバッグ 1. mount /dev/mmcblk0p1/mnt を使用して SD カードをマウン ト します。

2. 次の図に示すよ うに、 ターミナルから /mnt/linux_hello.elf アプリ ケーシ ョ ンを実行します。

X-Ref Target - Figure 9-8

図 9-8: プロセス/スレッ ド レベルのデバッグ

X-Ref Target - Figure 9-9

図 9-9: シリアル ターミナル: Linux_hello アプリケーシ ョ ンの実行

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 125UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 126: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

3. 前のセクシ ョ ンで作成した linux_hello アプリ ケーシ ョ ンを OS 認識デバッグ機能を使用してデバッグするには、

119 ページの 「OS 認識デバッグを使用した Linux プロセスおよびスレッ ドのデバッグ」 の手順に従い、 次の図

に示すよ うに linux_hello アプリ ケーシ ョ ンのパス マップを追加します。

ソース パスは /linux_hello.elf です。 デスティネーシ ョ ン パスは

<vitis-workspace>linux_hello/Debug/linux_hello.elf です。

4. [Debug] ビューで [Debugger_linux_hello-Default (Local)] を右ク リ ッ ク し、 [Relaunch] をク リ ッ ク します。

X-Ref Target - Figure 9-10

図 9-10: デバッグ コンフ ィギュレーシ ョ ンのパス マップ情報

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 126UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 127: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

第 9 章: Vitis ソフ トウェア プラッ ト フォームを使用した Linux OS 認識デバッグ

5. Vitis デバッガーで、 次を実行します。

a. カーネルのプロセス /スレッ ドの 1 つである実行中のアプリ ケーシ ョ ンを観察します。

b. linux_hello.elf スレッ ドを右ク リ ッ ク して [Suspend] をク リ ッ ク し、 アプリ ケーシ ョ ンを停止します。

c. ブレークポイン ト を追加します。

これらの操作を次の図に示します。

ブレークポイン トに達する と、 [Debug] ビューが linux_hello.elf プロセスの情報で更新されます。

[Debug] ビューには、 ファ イル、 関数、 およびブレークポイン トの行の情報が表示されます。 スレッ ドがコア上

で実行されている場合は、 スレッ ド ラベルに CPU コア名が含まれます。

ステップ イン、 ステップ アウ ト、 変数、 スタ ッ ク ト レース、 およびレジスタの監視など、 ソース レベルのデ

バッグを実行できます。

ブレークポイン トの挿入、 ステップ イン、 ステップ アウ ト、 変数、 スタ ッ ク ト レース、 およびレジスタの監視

など、 プロセス /スレッ ド レベルのデバッグを実行できます。

このプロセスに関して、 次の追加情報があ り ます。

• このプロセスの 1 つの制限は、 バイナリ パスのターゲッ ト側パスにマウン ト ポイン ト パスが含まれないこ とで

す。 たとえば、 linux_hello プロセスが /mnt にマウン ト されている SD カードに配置されている場合、 デ

バッガーに /mnt/linux_hello.elf ではなく /linux_hello.elf が表示されます。

• XSCT コマンド ライン コマンドを使用して Vitis ソフ ト ウェア プラ ッ ト フォームで Linux OS 認識を有効にする

方法もあ り ます。 このコマンドの詳細は、 XSCT の osa コマンド ヘルプまたは 『ザイ リ ンクス ソフ ト ウェア コ

マンド ライン ツール (XSCT) リ ファレンス ガイ ド』 (UG1208) [参照 11] を参照して ください。

X-Ref Target - Figure 9-11

図 9-11: main () からプロセスをデバッグ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 127UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 128: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

付録 A

その他のリソースおよび法的通知

ザイリンクス リソース

アンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 ザイ リ ンクス サポート サイ ト を参照して

ください。

ソリューシ ョ ン センター

デバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 デザイ

ン アシスタン ト 、 デザイン アドバイザリ、 ト ラブルシューティングのヒン ト などが含まれます。

Documentation Navigator およびデザイン ハブ

ザイ リ ンクス Documentation Navigator (DocNav) では、 ザイ リ ンクスの資料、 ビデオ、 サポート リ ソースにアクセス

でき、 特定の情報を取得するためにフ ィルター機能や検索機能を利用できます。 DocNav を開くには、 次のいずれか

を実行します。

• Vivado IDE で [Help] → [Documentation and Tutorials] をク リ ッ ク します。

• Windows で [スタート ] → [すべてのプログラム] → [Xilinx Design Tools] → [DocNav] をク リ ッ ク します。

• Linux コマンド プロンプ トに 「docnav」 と入力します。

ザイ リ ンクス デザイン ハブには、 資料やビデオへのリ ンクがデザイン タスクおよびト ピッ クごとにま とめられてお

り、 これらを参照するこ とでキー コンセプ ト を学び、 よ く ある質問 (FAQ) を参考に問題を解決できます。 デザイン

ハブにアクセスするには、 次のいずれかを実行します。

• DocNav で [Design Hubs View] タブをク リ ッ ク します。

• ザイ リ ンクス ウェブサイ トのデザイン ハブ ページを参照します。

注記: DocNav の詳細は、 ザイ リ ンクス ウェブサイ トの Documentation Navigator ページを参照してください。

注意: DocNav からは、 日本語版は参照できません。 ウェブサイ トのデザイン ハブ ページをご利用ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 128UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 129: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

付録 A: その他のリソースおよび法的通知

関連するデザイン ハブ

このガイ ドで説明されるエンベデッ ド開発および手法には、 次のデザイン ハブが該当します。

• エンベデッ ドデザイン ハブ - PetaLinux ツール

このチュート リアルのデザイン ファイル

この資料に関連する ZIP ファ イルには、 チュート リ アルのデザイン ファ イルが含まれます。 このファイルは、 この

リ ンクからダウンロードできます。

デザイン ファ イルには、 各セクシ ョ ンの HDF ファ イルおよびすべてのセクシ ョ ンのソース コード とビルド済みイ

メージが含まれています。

ザイリンクス リソース

この資料では、 次のザイ リ ンクス Vivado Design Suite および Zynq®-7000 のガイ ドが参照されています。

注記: 日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. 『Zynq-7000 SoC テクニカル リ ファレンス マニュアル』 (UG585: 英語版、 日本語版)

2. 『Zynq-7000 SoC ソフ ト ウェア開発者向けガイ ド』 (UG821: 英語版、 日本語版)

3. 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903)

4. 『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910)

5. 『Vivado Design Suite チュート リ アル: エンベデッ ド プロセッサ ハードウェア デザイン』 (UG940)

6. 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート 、 インス トールおよびライセンス』 (UG973)

7. 『UltraFast エンベデッ ド デザイン設計手法ガイ ド』 (UG1046: 英語版、 日本語版)

8. 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144)

9. 『SoC のシステム性能解析』 (XAPP1219: 英語版、 日本語版)

10. 『Vitis 統合ソフ ト ウェア プラ ッ ト フォームの資料: エンベデッ ド ソフ ト ウェア開発』 (UG1400: 英語版、 日本語版)

11. 『ザイ リ ンクス ソフ ト ウェア コマンド ライン ツール リ ファレンス ガイ ド』 (UG1208)

サポート リソース

12. エンベデッ ド デザイン ツール ウェブ ページ

13. ザイ リ ンクス Zynq® ツール Wiki ページ

14. ザイ リ ンクス Zynq Linux Wiki ページ

15. ソフ ト ウェア ゾーン

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 129UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 130: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

付録 A: その他のリソースおよび法的通知

その他のリソース

16. 『The Effect and Technique of System Coherence in Arm Multicore Technology』、 著者: John Goodacre (Senior Program Manager、 Arm Processor Division) (http://www.mpsoc-forum.org/previous/2008/slides/8-6%20Goodacre.pdf)

17. 『Arm Cortex-A9 MPCore Technical Reference Manual』、 セクシ ョ ン 2.4 「Accelerator Coherency Port」 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0407e/CACGGBCF.html

18. ザイ リ ンクス GitHub ウェブサイ ト : https://github.com/xilinx

19. GitHub ZYNQ Cookbook: BFM シ ミ ュレーシ ョ ンの実行方法: https://github.com/imrickysu/ZYNQ-Cookbook/wiki/How-to-run-BFM-simulation

20. Linux カーネル モジュール プログラ ミ ング ガイ ド : http://tldp.org/LDP/lkmpg/2.6/html/index.html

ト レーニング リソース

ザイ リ ンクスでは、 この資料に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよび QuickTake ビデ

オを提供しています。 次のリ ンクから関連するビデオを参照して ください。

Vivado Design Suite QuickTake ビデオ チュート リ アル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 130UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com

Page 131: Zynq-7000 SoC: エンベデッド デザイ」 チュートリ …...Zynq-7000 SoC: エンベデッド デザイン チュートリアル 2 UG1165 (v2019.2) 2019 年 10 月 30 日

付録 A: その他のリソースおよび法的通知

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適

用される法律が許容する 大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供

され、 ザイ リ ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれ

らに限られません)、 すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または

貴社による本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わな

い (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害に

は、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の

損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能で

あったり、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に

含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いま

せん。 事前の書面による同意のない限り、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一

定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件

に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプリ ケー

シ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を

使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性

の機能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セー

フティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用

前または提供前に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品

を使用する リ スクはすべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2015-2019 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Alveo、 Artix、 Kintex、 Spartan、 Versal、 Virtex、 Vivado、 Zynq、 およびこの

文書に含まれるその他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 AMBA、 AMBA Designer、Arm、 ARM1176JZ-S、 CoreSight、 Cortex、 PrimeCell、 Mali、 および MPCore は、 EU およびその他各国の Arm 社の登録商標です。 す

べてのその他の商標は、 それぞれの保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 131UG1165 (v2019.2) 2019 年 10 月 30 日 japan.xilinx.com