エンベデッド デザイン チュートリアル - xilinx...ug1165 (v2019.1) 2019 年 5 月 22...

121
Zynq-7000 SoC: エンベデッド デザイン チュートリアル 効率的なエンベデッ ド システムを 構築するためのハンディ ガイド この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。 このチュートリアルは 2017.3 で検証されており、それ以降のリリースでは手順が多少異なる場合あり。 UG1165 (v2019.1) 2019 年 5 月 22 日

Upload: others

Post on 06-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

効率的なエンベデッ ド システムを構築するためのハンディ ガイド

UG1165 (v2018.2) 2018 年 6 月 6 日

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

このチュートリアルは 2017.3 で検証されており、それ以降のリリースでは手順が多少異なる場合あり。

UG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

改訂履歴

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

セクシ ョ ン 改訂内容

2018 年 6 月 6 日 バージョ ン 2018.2

全体的なアップデート 編集上の更新のみ。 技術内容の変更なし。

2018 年 4 月 4 日 バージョ ン 2018.1

全体的なアップデート Vivado® Design Suite 2018.1 リ リース。 2017.3 リ リースから内

容の変更なし。

UG1165 (v2018.3) 2018 年 12 月 5 日

2018/12/05: Vivado® Design Suite 2018.3 リリース。2018.2 リリースから内容の変更なし。

UG1165 (v2019.1) 2019 年 5 月 22 日

2019/05/22: Vivado® Design Suite 2019.1 リリース。2018.2 リリースから内容の変更なし。

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

目次

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

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

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

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

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

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

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

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

その他の情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

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

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

第 4 章: SDK を使用したデバッグXilinx System Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

SDK を使用したソフ ト ウェアのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

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

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

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

SDK を使用した Linux CDMA アプリ ケーシ ョ ンの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

第 6 章: Linux のブートおよび SDK でのデバック必要な環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

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

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

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

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

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

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

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

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 3UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグLinux OS 認識デバッグの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

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

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

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

Xilinx Documentation Navigator およびデザイン ハブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Xilinx Documentation Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

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

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

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

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 4UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章

概要

このガイドについて

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

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

およびザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) のバージ ョ ンは 2017.3 です。

注記: SDK を Vivado Design Suite の一部と してインス トールするには、インス トーラーに SDK を含めるよ う選択する

必要があ り ます。 8 ページの 「ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK)」 を参照して ください。

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

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

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

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

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

ツール特定のものです。 このガイ ドの Linux 部分の演習を実行するには、 PetaLinux ツールを Linux ホス ト マシンに

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

• 第 2 章 「Zynq SoC プロセッシング システムの使用」 では、 Zynq SoC プロセッシング システム (PS) を使用する

システムの作成および簡単な Hello World アプリ ケーシ ョ ンの実行について説明します。 簡単なデザインを例と

して使用し、 ハード ウェアおよびソフ ト ウェア ツールの概要を説明します。

• 第 3 章 「Zynq デバイスでの GP ポートの使用」 では、 Zynq SoC PS とプログラマブル ロジッ ク (PL、 つま り ファ

ブ リ ッ ク ) を使用してシステムを作成する方法に加え、 PS および PL を実行する簡単なアプリ ケーシ ョ ンの使用

方法について説明します。

• 第 4 章 「SDK を使用したデバッグ」 では、 ザイ リ ンクスのソフ ト ウェア開発キッ ト (SDK) のデバッグ機能を使

用したソフ ト ウェアのデバッグについて説明します。 前のデザインを使用してソフ ト ウェア ベアメ タル (OS な

し ) を実行し、 デバッグ方法を示します。

• 第 5 章 「AXI CDMA IP での HP スレーブ ポートの使用」 では、 Zynq SoC ボードにおける Linux OS のブートお

よび PetaLinux ツールでのアプリ ケーシ ョ ンのデバッグに関する情報を示します。 Zynq SoC でブートできるデ

バイス と、 それらのデバイスのプログラム方法を説明します。

• 第 6 章 「Linux のブートおよび SDK でのデバッ ク」 では、 PetaLinux ツールを使用して Zynq SoC ボード上で

Linux OS をブートする手順を説明します。 ファブ リ ッ クで AXI CDMA IP をインスタンシエートする際の情報を

提供し、 この IP を HP (High Performance) 64 ビッ ト スレーブ ポートに接続する方法を説明します。

• 第 7 章 「Linux 用のカスタム IP とデバイス ド ラ イバーの作成」 では、 Create and Package New IP ウ ィザードを使

用して IP を作成する方法を説明します。 Linux ベースのデバイス ド ラ イバーの開発およびカーネルのコンパイ

ルについて説明します。 また、 Zynq デバイス用に作成した IP を使用してシステムを設計します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 5UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

• 第 8 章 「SDK を使用したソフ ト ウェアのプロファ イル」 では、 スタンドアロン BSP および第 6 章で作成した

AXI CDMA 関連のアプリ ケーシ ョ ンのプロファ イル機能について説明します。 ソフ ト ウェアをチェッ ク し、 ボ

トルネッ クが存在するかど うかを確認する方法を示します。

• 第 9 章 「SDK を使用した Linux OS 認識デバッグ」 では、 Linux OS 認識デバッグ機能について説明し、 Linux

カーネルおよび基本的な Linux サンプルに使用します。 これは、 SDK で提供されている Linux プロセス デバッ

グとは異なり ます。 Zynq Arm 9 プロセッサ コア上で実行中の Linux OS と、 Linux OS 上で実行中の複数のアプ

リ ケーシ ョ ン プロセス /スレッ ドを同時にデバッグできます。

• 付録 A 「その他のリ ソースおよび法的通知」 では、 このガイ ドに関連するその他の資料へのリンクを提供します。

サンプル プロジェク ト

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

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

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

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

説明されます。

その他の資料

その他の資料一覧は、 付録 A 「その他のリ ソースおよび法的通知」 に記載されています。

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

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

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

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

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

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

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

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

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

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

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

注記: SDK を Vivado Design Suite の一部と してインス トールするには、インス トーラーに SDK を含めるよ う選択する

必要があ り ます。 詳細は、 8 ページの 「ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK)」 を参照して ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 6UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

Vivado Design Suite: System Edition

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

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

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

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

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

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

• 資料

• サンプル プロジェク ト

X-Ref Target - Figure 1-1

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 7UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

ザイリンクス ソフ トウェア開発キッ ト (SDK)ソフ ト ウェア開発キッ ト (SDK) は Vivado を補完する統合開発環境で、C/C++ エンベデッ ド ソフ ト ウェア アプリ ケー

シ ョ ンの作成および検証に使用します。 SDK は Eclipse オープンソース フレームワークで構築されており、 ソフ ト

ウェア設計者や設計チームにとって使い慣れた環境です。

Vivado Design Suite をインス トールする際に、 インス トールに含める必要のあるオプシ ョ ンのソフ ト ウェア ツールと

して SDK を選択できます。 詳細は、 10 ページの 「インス トール要件」 を参照してください。

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

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

• エンベデッ ド ソフ ト ウェア開発用のド ライバーおよびライブラ リ

• Zynq SoC プロセッシング システム内の Arm Cortex-A9 MP プロセッサをターゲッ トにした C/C++ ソフ ト ウェア

開発用 GNU コンパイラおよびデバッガー

PetaLinux ツール

PetaLinux ツール セッ トは、 エンベデッ ド Linux システム開発キッ トです。 この開発キッ トは、 Linux OS に加え、 ザ

イ リ ンクス シ リ コン デバイス用の完全なコンフ ィギュレーシ ョ ン、 ビルド、 および導入環境を含む、 完全な Linux

ディ ス ト リ ビューシ ョ ンを提供します。

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

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

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

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

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

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

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

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

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

SDK はソフ ト ウェア開発に使用され、 Vivado Design Suite の一部と して利用できます。 または、 ほかのザイ リ ンクス

ツールをインス トールせずに、 SDK のみをインス トールして使用するこ と も可能です。 SDK は、 ソフ ト ウェア アプ

リ ケーシ ョ ンのデバッグにも使用できます。

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

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

を接続するには、 PL をプログラムする必要があ り ます。 SDK で PL をプログラムできます。

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

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 8UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

必要なセッ トアップ

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

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

ハードウェア要件

このチュート リ アルは、 Zynq ZC702 Rev 1.1 評価ボードをターゲッ ト と しており、 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: エンベデッ ド デザイン チュート リアル 9UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

インストール要件

Vivado Design Suite および SDK

2017.3 ツールがインス トールされているこ とを確認してください。 ツール バージ ョ ンが 新であるかど うかは、

https://japan.xilinx.com/support/download.html にアクセスして確認できます。

Vivado Design Suite および SDK ツールの両方がインス トールされているこ とを確認してください。 Vivado Design

Suite をインス トールする際に、 次の図に示すよ うに [Software Development Kit (SDK)] をオンにするこ とで、 インス

トールに含める必要のあるオプシ ョ ンのソフ ト ウェア ツールと して SDK を選択できます。 SDK を単独でインス

トールするには、 [Software Development Kit (SDK)] のみをオンにし、 ほかのソフ ト ウェア製品の選択をオフにしてイ

ンス トーラーを実行します。

Vivado Design Suite と SDK のインス トールの詳細は、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス

トールおよびライセンス』 (UG973) [参照 7] を参照してください。

重要: デフォルトでは、 インス トールによ り SDK 用のデスク ト ップ シ ョート カッ トは作成されません。 SDK バイナ

リは、 C:\Xilinx\SDK\2017.3\bin\xsdk.bat から起動可能です。

X-Ref Target - Figure 1-2

図 1-2: Vivado インストーラー - [Software Development Kit (SDK)] の選択

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 10UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

PetaLinux ツール

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

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

• RHEL 7.2/7.3 (64 ビッ ト )

• CentOS 7.2/7.3 (64 ビッ ト )

• Ubuntu 16.04.1 (64 ビッ ト )

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

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

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

• PetaLinux 2017.3 SDK ツールを、 ザイ リ ンクスのウェブサイ トからダウンロードする。

• PetaLinux 2017.3 リ リース パッケージをインス トールする。

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

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

必要な環境

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

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

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

PetaLinux パッケージの展開

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

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

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

になり ます。

bash> ./petalinux-v2017.3-final-installer.run

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

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

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

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

ブートおよび SDK でのデバッ ク」 を参照してください。 PetaLinux のインス トールおよび使用方法に関する詳細は、

『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 11] に記載されています。

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

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

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

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

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

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

てください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 11UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 1 章: 概要

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

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

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 12UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 13UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 デザイン ツールで

開きます。

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

Add Sources ウ ィザードを使用して、 エンベデッ ド プロセッサ プロジェク ト を作成します。

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

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

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

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 Existing IP] 変更なし。

Add Constraints 変更なし。

Default Part Select Boards

ボード ZYNQ-7 ZC702 Evaluation Board

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

X-Ref Target - Figure 2-1

図 2-1: [Create Block Design]

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 14UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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

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

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

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

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

Create Block Design Design name tutorial_bd

Directory <Local to Project>

Specify source set Design Sources

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 15UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

X-Ref Target - Figure 2-2

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 16UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 コネクタに接続されているからです。

X-Ref Target - Figure 2-3

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 17UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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: エンベデッ ド デザイン チュート リアル 18UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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) [参照 6] を参照してください。

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: エンベデッ ド デザイン チュート リアル 19UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 20UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 21UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

16. [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: エンベデッ ド デザイン チュート リアル 22UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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

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

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

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

6. ビッ ト ス ト リームの生成が完了したら、 次のセクシ ョ ンの説明に従ってハード ウェアをエクスポート してソフ

ト ウェア開発キッ ト (SDK) を起動します。

ハードウェアの SDK へのエクスポート

この例では、 Vivado から SDK を起動します。

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

[Export Hardware] ダイアログ ボッ クスが開きます。 [Include bitstream] がオンになっているこ と (デザインで、 PL

デザインとビッ ト ス ト リームが生成されている場合のみ)、および [Export to] がデフォルト オプシ ョ ンの [<Local

to Project>] に設定されているこ とを確認します。

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

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

ファ イルは自動的に解凍され、 SDK プロジェク ト ハードウェア プラ ッ ト フォーム フォルダーにすべてのファイル

が含まれます。

3. [File] → [Launch SDK] をク リ ッ ク します。

[Launch SDK] ダイアログ ボッ クスが開きます。

ヒン ト : SDK はスタンドアロン モードで起動するこ と もでき、 エクスポート されたハードウェアを使用できます。

その場合、 SDK を起動し、 エクスポート された新しいターゲッ ト ハードウェアを新しいプロジェク トの作成時にポ

イン ト します。

X-Ref Target - Figure 2-13

図 2-13: ハードウェアを SDK へエクスポートする

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 23UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

4. [Exported location] および [Workspace] には、 デフォルト設定を選択します。

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

SDK が開きます。 SDK を起動する とハード ウェア記述ファイルが自動的に読み込まれます。

次の図に示すよ うに、 [system.hdf] にプロセッシング システム全体のアドレス マップが表示されます。

6. SDK を閉じます。

X-Ref Target - Figure 2-14

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

X-Ref Target - Figure 2-15

図 2-15: SDK の [system.hdf] のアドレス マップ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 24UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

ここまでの結果

Vivado によって、 ソフ ト ウェアを開発するための選択したワークスペースにハード ウェア仕様がエクスポート され

ました。 [<Local to Project>] を選択していれば、 Vivado プロジェク ト フォルダーに新しいワークスペースが作成され

ます。 ワークスペース名は <project_name>.sdk です。 この例では、

C:/designs/edt_tutorial/edt_tutorial.sdk とい う名前のワークスペースが作成されます。

Vivado デザイン ツールによ り、 デザインのハード ウェア定義ファイル (この例では system.hdf) が SDK にエクス

ポート されました。 system.hdf には、 次のファイルが含まれます。

• tutorial_bd.tcl

• ps7_init.c

• ps7_init.h

• ps7_init.html

• ps7_init.tcl

• ps7_init_gpl.c

• ps7_init_gpl.h

system.hdf ファ イルは、 デフォルトでは SDK の起動時に開かれます。 このファイルから読み出されるシステムの

アドレス マップがデフォルトで SDK ウ ィンド ウに表示されます。

ps7_init.c、 ps7_init.h、 ps7_init_gpl.c、 および ps7_init_gpl.h ファ イルには、 Zynq SoC プロセッシ

ング システムの初期化コード と、 DDR、 ク ロ ッ ク、 位相ロ ッ ク ループ (PLL)、 および MIO の初期化設定が含まれま

す。 SDK は、 アプ リ ケーシ ョ ンがプロセッシング システムの 上位で実行可能となるよ うに、 これらの設定をプロ

セッシング システムの初期化時に使用します。 プロセッシング システムの設定には、 ZC702 評価ボード用に固定さ

れているものもあ り ます。

次の手順

これで、 SDK を使用してプロジェク トのソフ ト ウェア開発を開始できます。 次のセクシ ョ ンでは、 ハード ウェア プ

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 25UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

この例では、 ザイ リ ンクス SDK の Xilinx System Debugger を使用して、 ボード設定の管理、 ケーブル接続、 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: エンベデッ ド デザイン チュート リアル 26UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

に設定します。

5. SDK を開き、 プロジェク ト ファ イルへのワークスペース パス (この例では

C:/designs/edt_tutorial/edt_tutorial.sdk) を設定します。

または、 デフォルトのワークスペースを使用して SDK を開き、 後で [File] → [Switch Workspace] をク リ ッ ク して

正しいワークスペースに切り替えるこ と もできます。

6. システムで割り当てられている COM ポートのシ リ アル通信ユーティ リ ティ を開きます。 SDK では、 チュート

リ アル全体で使用されるシ リ アル ターミナル ユーティ リ ティが提供されています。 [Window] → [Show View] →

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

X-Ref Target - Figure 2-16

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

X-Ref Target - Figure 2-17

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 27UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

7. [Connect] ボタン をク リ ッ ク し、 シ リ アル コンフ ィギュレーシ ョ ンを設定して接続します。

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

次の図に、 Zynq SoC プロセッシング システム用の標準的な設定を示します。

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

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

10. 次の表の情報に基づいて、 ウ ィザード画面で選択操作を実行します。

hello_world アプリ ケーシ ョ ン プロジェク トおよび hello world_bsp ボード サポート パッケージ (BSP) プ

ロジェク トが作成され、 [Project Explorer] ビューに表示されます。 これら両プロジェク トが自動的にコンパイル

され、 ELF ファ イルが作成されます。

X-Ref Target - Figure 2-18

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

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

Application Project Project name hello_world

Use default location オン

Hardware Platform tutorial_bd_wrapper_hw_platform_0

Processor PS7_cortexa9_0

OS Platform standalone

Language C

Board Support Package [Create New] をオンにして

「hello_world_bsp」 と入力。

Templates Available Templates Hello World

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 28UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

重要: BSP を再生成する場合は、 [Project Explorer] ビューに表示される BSP プロジェク ト を右ク リ ッ ク し、

[Re-generate BSP Sources] をク リ ッ ク します。

プロジェク トの作成後にターゲッ ト BSP を変更する場合は、 次を実行します。

1. ターゲッ ト用に新規のボード サポート パッケージを作成します。

2. [Project Explorer] ビューで、アプリ ケーシ ョ ン プロジェク ト を右ク リ ッ ク して [Change Referenced BSP] をク リ ッ ク

し、 新しい BSP を指定します。

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

12. [Xilinx C/C++ application (System Debugger)] を右ク リ ッ ク して [New] をク リ ッ ク します。

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

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

力されます。

13. [Target Setup] タブをク リ ッ ク し、 設定を確認します。

初期化 Tcl ファ イルへのコンフ ィギュレーシ ョ ン パスがあるこ とに注目して ください。 こ こでは

ps7_init.tcl へのパスです。 このファイルは、 デザインを SDK にエクスポート した際にエクスポート され

たもので、 プロセッシング システムの初期化情報を含みます。

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

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

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

ロードする必要はあ り ませんでした。 Arm Cortex A9 デュアル コアは既にボードに実装されています。 簡単なアプリ

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

ここまでの結果

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

した。

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

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

X-Ref Target - Figure 2-19

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 29UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

その他の情報

ボード サポート パッケージ

ボード サポート パッケージ (BSP) はハードウェア プラ ッ ト フォームまたはボードのサポート コードで、電源投入時

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

をサポート します。 これは、 ブート ローダーおよびデバイス ド ラ イバーを使用するオペレーティング システム固有

のものにできます。

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

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

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

T

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

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

ジェク トの作成後にターゲッ ト BSP を変更する場合は、 ソフ ト ウェア アプリ ケーシ ョ ンを右ク リ ッ ク して [Change

Referenced BSP] をク リ ッ ク します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 30UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 31UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 32UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 33UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 34UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

動接続します。

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

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

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

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: エンベデッ ド デザイン チュート リアル 35UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

完了する と、 更新されたブロ ッ ク図は図 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: エンベデッ ド デザイン チュート リアル 36UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 37UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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

° [Site]: [F19]

° [I/O Std]: [LVCMOS25]

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

° [Site]: [G19]

° [I/O Std]: [LVCMOS25]

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

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

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: エンベデッ ド デザイン チュート リアル 38UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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

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

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

ます。

X-Ref Target - Figure 3-11

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 39UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

33. ビッ ト ス ト リームの生成が完了したら、 23 ページの 「ハード ウェアの SDK へのエクスポート 」 の説明に従って

ハード ウェアをエクスポート してザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) を起動します。

SDK での作業

SDK で Vivado からエクスポート された新しい HDF が検出され、 警告メ ッセージが表示されます。 この警告メ ッ

セージでは、 SDK で新しい HDF に合わせてプロジェク ト をアップデートするかど うかも選択できます。

1. [Yes] をク リ ッ ク します。

2. SDK が起動し、 第 2 章でスタンドアロン PS を使用して作成した Hello World プロジェク トが開きます。

3. [Project] → [Clean] をク リ ッ ク し、 プロジェク ト をク リーンアップして再ビルド します。

4. helloworld.c ファ イルを開き、 42 ページの 「デザイン用のスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェア」

の説明に従ってアプリ ケーシ ョ ン ソフ ト ウェア コードを変更します。

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

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

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

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

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

X-Ref Target - Figure 3-12

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 40UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

ます。 Vivado からエクスポート されたビッ ト ス ト リームが表示されます。

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

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

を実行します。

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

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

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

X-Ref Target - Figure 3-13

図 3-13: ビッ トス ト リーム ファイルが表示された [Program FPGA] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 41UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 がオンになって実行が再開します。

デバイス ド ラ イバーに関する API に関する詳細は、 『Zynq-7000 SoC ソフ ト ウェア開発者向けガイ ド』 (UG821) [

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 42UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

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

SDK での新規ソフ トウェア アプリケーシ ョ ンの実行

次に、 新しいソフ ト ウェア アプリ ケーシ ョ ンを SDK で実行します。

1. [Xilinx Tools] → [Program FPGA] をク リ ッ ク します。

図 3-14 に示す [Program FPGA] ダイアログ ボッ クスが開きます。 Vivado からエクスポート されたビッ ト ス ト

リームが表示されます。

2. 26 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の手順に従い、 新しいアプリ ケー

シ ョ ンを実行します。

X-Ref Target - Figure 3-14

図 3-14: ビッ トス ト リーム ファイルが表示された [Program FPGA] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 43UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 4 章

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

ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) を使用したソフ ト ウェアのデバッグです。

SDK デバッガーは、 次のデバッグ機能を提供します。

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

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

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

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

• プログラムをデバッグするための豊富な機能を備えた IDE を提供

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

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

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

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

ザイ リ ンクス SDK では、 Xilinx System Debugger および GNU デバッガー (GDB) を使用したデバッグがサポート され

ます。

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

Xilinx System DebuggerXilinx System Debugger では、 ザイ リ ンクスの hw_server が基本のデバッグ エンジンと して使用されます。 SDK は各

ユーザー インターフェイス操作を一連の TCF (Target Communication Framework) コマンドに変換し、 システム デバッ

ガーからの出力を処理して、 デバッグされているプログラムの現在の状態を表示します。 SDK は、 ザイ リ ンクスの

hw_server を使用してハード ウェア上のプロセッサと通信します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 44UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 4 章: SDK を使用したデバッグ

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

ワークフローは、 次のコンポーネン トで構成されています。

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

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

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

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

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

• デバッグ コンフ ィギュレーシ ョ ン: デバッグ セッシ ョ ンを開始するには、 SDK でデバッグ コンフ ィギュレー

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

セッサ ターゲッ ト など、 デバッグ セッシ ョ ンを開始するの必要なオプシ ョ ンが含まれます。 デバッグ コンフ ィ

ギュレーシ ョ ンを作成するには、 ソフ ト ウェア アプリ ケーシ ョ ンを右ク リ ッ ク して [Debug As] → [Debug

Configurations] をク リ ッ ク します。

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

グまたは実行を管理できます。 プログラムの実行は、 ブレークポイン トの設定、 起動したプログラムの一時停

止、 コードのステップ実行、 および変数の内容の確認を実行するこ とによ り制御可能です。 [Debug] ウ ィンド ウ

を表示するには、 [Window] → [Open Perspective] → [Debug] をク リ ッ ク します。

SDK では、 コードの変更、 実行ファイルの構築、 プログラムのデバッグというサイ クルを繰り返すこ とができ

ます。

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

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

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

X-Ref Target - Figure 4-1

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 45UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 4 章: SDK を使用したデバッグ

SDK を使用したソフ トウェアのデバッグ

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

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

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

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

hello world アプリ ケーシ ョ ンを作成したら、 SDK で次の例を実行してソフ ト ウェアをデバッグします。

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

(System Debugger)] をク リ ッ ク します。

[Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

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

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

リ ッ ク して、 Open Perspective ウ ィザードで [Debug] を選択します。

X-Ref Target - Figure 4-2

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 46UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 4 章: SDK を使用したデバッグ

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

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

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

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

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

ます。

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

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

こ とを確認します。

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

3. init_platform () を読み出すコードの行の横にある、 helloworld.c ウ ィンド ウの空白をダブルク リ ッ ク

します。 これによ り、 init_platform () にブレークポイン トが設定されます。 ブレークポイン トの確認に

は、 [Breakpoints] ウ ィンド ウを使用します。

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

します。

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

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

X-Ref Target - Figure 4-3

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 47UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 4 章: SDK を使用したデバッグ

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

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

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

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

ます。

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

プログラムの実行が完了する と、 [Debug] ウ ィンド ウにプログラムが exit というルーチンで一時停止している

こ とが示されます。 これは、 デバッガーの制御下で実行している と きに発生します。

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

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

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

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

8. SDK を閉じます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 48UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 49UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 50UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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. 次のいずれかから開始します。

° 33 ページの 「サンプル プロジェク ト : インスタンシエート されたファブ リ ッ ク 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: エンベデッ ド デザイン チュート リアル 51UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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] リ ンクをク リ ッ ク し、 残りの接続を自動的に実行します。

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

Enable Scatter Gather オフ

Disable 4K Boundary Checks オフ

Allow Unaligned Transfers オフ

Write/Read Data Width 1024

Write/Read Burst Size 32

Enable Asynchronous Mode (Auto) オフ

Address Width 32

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 52UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

19. [Run Connection Automation] ダイアログ ボッ クスで [All Automation] がオンになっているこ とを確認し、 [OK] を

ク リ ッ ク してデフォルトの接続を選択します。 ブロ ッ ク図は次のよ うになり ます。

注記: ネッ トが競合するアドレスに強制的にマップされる という ク リ ティカル メ ッセージが表示されるこ とがあ

り ます。 次の手順でメモ リにマップされたアドレスを更新し、 このエラーに対処します。 このエラー メ ッセー

ジが表示された場合は、 [OK] をク リ ッ ク します。

20. [Address Editor] ウ ィンド ウをク リ ッ ク します。

X-Ref Target - Figure 5-2

図 5-2: 更新されたブロック図

X-Ref Target - Figure 5-3

図 5-3: [Address Editor] ウィンドウ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 53UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

21. [Address Editor] ウ ィンド ウで、 [axi_cdma_0] → [Data] を展開します。

22. [S_AXI_HP0] の [Range] 列で [256M] を選択します。

23. [S_AXI_HP0] の [Offset Address] で値を x2000_0000 に設定します。

24. [Address Editor] ウ ィンド ウで、 [axi_cdma_0] → [Data] を展開します。

25. [S_AXI_HP2] の [Range] 列で [256M] を選択します。

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. ビッ ト ス ト リームの生成が完了したら、 23 ページの 「ハード ウェアの SDK へのエクスポート 」 の説明に従って

ハード ウェアをエクスポート してザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) を起動します。

X-Ref Target - Figure 5-4

図 5-4: [Address Editor] ウィンドウでのアドレスの割り当て

X-Ref Target - Figure 5-5

図 5-5: processing_system7_0 のアドレスの変更

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 54UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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

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

こ こでは、 CDMA ベースのスタンドアロン アプリ ケーシ ョ ン ソフ ト ウェアについて詳細に説明します。

アプ リ ケーシ ョ ン ソフ ト ウェアの main() 関数は、 実行のエン ト リ ポイン トです。 指定したテス ト パターンでソー

ス メモ リ バッファーを初期化し、 デスティネーシ ョ ン メモ リ バッファーにすべて 0 を書き込んでク リ アします。

その後、 アプ リ ケーシ ョ ン ソフ ト ウェアがソース バッファーおよびデスティネーシ ョ ン バッファーの開始位置を供

給して CDMA レジスタ セッ ト を設定します。 DMA 転送を開始するために、 CDMA レジスタで転送されるバイ ト数

を書き込み、 CDMA の割り込みが発生するのを待機します。 割り込み後、 DMA 転送のステータスを確認し、 ソース

バッファーをデスティネーシ ョ ン バッファーと比較します。 後に、 シ リ アル ターミナルにその比較結果を出力

し、 実行を停止します。

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

アプリ ケーシ ョ ン ソフ ト ウェアは次を実行します。

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: エンベデッ ド デザイン チュート リアル 55UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

SDK を使用したスタンドアロンの CDMA アプリケーシ ョ ンの実行

1. SDK を開きます。

2. TCF (Target Communication Frame) (hw_server.exe) エージェン トが Windows マシンで実行中であるこ とを確認

します。 実行されていない場合は、 [Xilinx Tools] → [XSDB Console] をク リ ッ ク します。

3. [XSDB Console] ウ ィンド ウに 「Connect」 と入力します。 hw_server アプリ ケーシ ョ ンが開始したこ とを示す

メ ッセージが表示されるか、 または開始して実行中の場合は次の図に示すよ うに tcfchan# が表示されます。

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

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

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

X-Ref Target - Figure 5-6

図 5-6: [XSDB Process] ウィンドウのハードウェア サーバー メ ッセージ

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

Application Project Project name cdma_app

Use Default Locations オン

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform standalone

Language C

Board Support Package [Create New] をオンにして 「cdma_app_bsp」 と入力。

Templates Available Templates Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 56UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

6. [Finish] をク リ ッ ク します。

New Project ウ ィザードが閉じ、 cdma_app アプリ ケーシ ョ ン プロジェク トおよび cdma_app_bsp ボード サ

ポート パッケージ (BSP) プロジェク トが作成され、 [Project Explorer] の下に表示されます。 このプロジェク トは

自動的にコンパイルされ、 BSP が生成されます。

7. [Project Explorer] ビューで [cdma_app] プロジェク ト を展開して [src] ディ レク ト リ を右ク リ ッ ク し、 [Import] をク

リ ッ ク して [Import] ダイアログ ボッ クスを開きます。

8. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] をク リ ッ ク します。

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

10. [Browse] をク リ ッ ク します。

11. 前に保存したデザイン ファ イル フォルダー (119 ページの 「このチュート リ アルのデザイン ファ イル」 を参照)

に移動し、 [OK] をク リ ッ ク します。

12. cdma_app.c ファ イルを追加して [Finish] をク リ ッ ク します。

アプ リ ケーシ ョ ンが自動的にビルド され、 コンソール ウ ィンド ウにステータスが表示されます。

注記: システムのアプリ ケーシ ョ ン ソフ ト ウェアのファイル名は cdma_app.c です。 このファイルは、 このガ

イ ドに付属の ZIP ファ イルから入手できます。 詳細は、 119 ページの 「このチュート リ アルのデザイン ファ イ

ル」 を参照して ください。

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

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

14. ハードウェア ボードがセッ ト アップされ、 オンになっているこ とを確認します。

注記: ボードのセッ ト アップについては、 26 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの

実行」 を参照してください。

15. [Xilinx Tools] → [Program FPGA] をク リ ッ ク し、 [Program FPGA] ダイアログ ボッ クスを開きます。 ダイアログ

ボッ クスにビッ ト ス ト リーム パスが表示されます。

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

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

ト を実行します。

18. シ リアル ターミナルで CDMA 転送のステータスを確認します。 転送が正常の場合、 「DMA Transfer is

Successful」 とい う メ ッセージが表示されます。 エラーの場合、 シ リ アル ターミナルにエラー メ ッセージが表示

されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 57UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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 レジスタに設定します。

f. デスティネーシ ョ ン バッファーの開始位置 0x30000000 を CDMA レジスタに設定します。

g. CDMA レジスタで転送されるバイ ト数を設定します。 このレジスタへの書き込みによ り DMA 転送が開始

します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 58UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

7. DMA 転送のステータスを、 転送が終了するまで継続して読み出します。

8. CDMA 転送の終了後、 mmap() システム コールを使用して、 ユーザー層から変更するため CDMA レジスタ メ

モ リのマップを解除します。

9. 0x30000000 から開始するカーネル メモ リ位置を、 読み出し属性と書き込み属性を持つユーザー層にマップし

ます。

10. カーネル メモ リの 0x30000000 からの内容をユーザー層のデスティネーシ ョ ン配列にコピーします。

11. ユーザー層のカーネル メモ リへのマップを解除します。

12. ソース配列をデスティネーシ ョ ン配列と比較します。

13. シ リアル ターミナルに比較結果が表示されます。 比較結果が正常の場合、 「DATA Transfer is Successful」 とい う

メ ッセージが表示されます。 エラーの場合、 シ リ アル ターミナルにエラー メ ッセージが表示されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 59UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

SDK を使用した Linux CDMA アプリケーシ ョ ンの実行

ターゲッ ト ボード上で Linux を実行する詳細な手順は、 第 6 章に説明されています。 Linux の実行に慣れていない場

合は、 この例を実行する前に第 6 章の例を実行してください。 Linux OS ベースのアプリ ケーシ ョ ンを実行する手順

は次のとおりです。

1. 60 ページの 「ターゲッ ト ボートでの Linux のブート 」

2. 64 ページの 「SDK を使用したアプリ ケーシ ョ ンのビルド と ターゲッ ト ボードでの実行」

ターゲッ ト ボートでの Linux のブート

JTAG モードを使用して、 Zynq-7000 SoC ZC702 ターゲッ ト ボード上で Linux をブート します。

注記: その他のブート オプシ ョ ンは、 第 6 章を参照してください。

1. JTAG モードを使用して Linux をブートする際の次のボード接続および設定を確認します。

a. 26 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の説明に従って、 ジャンパー

J27 および J28 が設定されているこ とを確認します。

b. SW16 スイ ッチが次の図に示すよ うに設定されているこ とを確認します。

c. イーサネッ ト ケーブルを Zynq SoC ボードからネッ ト ワークに接続します。

d. Windows ホス ト マシンをネッ ト ワークに接続します。

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

X-Ref Target - Figure 5-7

図 5-7: SW16 スイッチの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 60UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

2. ターゲッ ト ボードの SW10 スイ ッチを図 5-8 に示すよ うに設定し、 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-8

図 5-8: Digilent 社製 USB JTAG を使用するように設定された ZC702 の SW10

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 61UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

4. イーサネッ ト ジャンパー J30 および J43 を次の図に示すよ うに変更します。

5. ターゲッ ト ボードに電源を投入します。

6. SDK を起動し、 第 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-9

図 5-9: ジャンパー J30 および J43 の変更

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 62UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

d. 「source C:/designs/edt_tutorial/edt_tutorial.sdk/

tutorial_bd_wrapper_hw_platform_0/ps7_init.tcl」 と入力してから 「ps7_init」 と入力し、

PS (ク ロ ッ ク PLL、 MIO、 DDR など) を初期化します。

e. 「ps7_post_config」 と入力して PS と PL 間のレベル シフターを有効にし、 ファブ リ ッ ク ポート リセッ ト をク

リ アします。

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 カーネル イ メージを 0x3000000 にダウンロード します。

k. 「con」 と入力して U-Boot を実行します。

11. シ リアル ターミナルのコマンド プロンプ トに 「bootm 0x30000000」 と入力します。

Linux OS が起動します。

12. 必要に応じてシ リ アル ターミナルに Zynq のユーザー名 root とパスワード root を入力し、プロセッサのブート を

完了させます。

ブートが完了する と、 シ リ アル ターミナルに # prompt プロンプ トが表示されます。

13. root@Xilinx-ZC702-2017_3:~# プロンプ トで、 ボードのイーサネッ ト接続が設定されているこ とを確認し

ます。

a. Zynq> プロンプ トに 「ifconfig eth0」 と入力し、 ボードの IP アドレスを確認します。

このコマンドは、 現時点でアクティブなすべてのインターフェイスの詳細を表示します。 表示される メ ッ

セージで、 inet addr 値は Zynq SoC ボードに割り当てられている IP アドレスを示します。

b. inet addr と netmask の値が存在しない場合、 次のコマンドを使用してそれらを割り当てるこ とができ

ます。

root@Xilinx-ZC702-2017_3:~# ifconfig eth0 inet 192.168.1.10root@Xilinx-ZC702-2017_3:~# 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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 63UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

d. [OK] をク リ ッ ク して値を確定します。

15. Windows マシンのコマンド プロンプ トに 「ping」 と入力し、 それに続いてボードの IP アドレスを入力して、

ボード との接続を確認します。 ping 応答がループ内に表示されます。

この応答は、 Windows ホス ト マシンと ターゲッ ト ボード間の接続が確立されているこ とを意味します。

16. Ctrl + C キーを押して、 Windows ホス ト マシンのコマンド プロンプ トでの ping 応答の表示を停止します。

ターゲッ ト ボードでの Linux のブートが終了し、 ホス ト マシンと ターゲッ ト ボード間の接続が完了します。

SDK を使用したアプリケーションのビルドとターゲッ ト ボードでの実行

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.elf ファ イルが生成されます。 コンソール ウ ィンド ウで

ステータスを確認します。

注記: システムのサンプル アプリ ケーシ ョ ン ソフ ト ウェア ファ イルは linux_cdma_app.c です。 このファイ

ルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 詳細は、 119 ページの 「このチュート リ アルのデザ

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

8. [linux_cdma_app] を右ク リ ッ ク し、 [Run As] → [Run Configurations] をク リ ッ ク して Run Configurations ウ ィ

ザードを開きます。

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

Application Project Project name linux_cdma_app

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform Linux

Language C

Templates Available Templates Linux Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 64UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

9. [Xilinx C/C++ application (System Debugger)] を右ク リ ッ ク して [New] をク リ ッ ク します。

10. [Connection] タブで [New] を選択し、 New Connection ウ ィザードを開きます。

11. [New Target Connection] ページで、 次のよ うに設定します (図 5-11 も参照)。

a. [Target Name] フ ィールドで名前を指定します。 こ こでは、 「CDMALinux」 を使用します。

b. [Host] フ ィールドにターゲッ ト ボードの IP アドレスを入力します。

ターゲッ ト ボードの IP アドレスを確認するには、 シ リ アル ターミナルの Zynq> プロンプ トに

「ifconfig eth0」 と入力します。 ターミナルにボードに割り当てられているターゲッ ト IP アドレスが表

示されます。

c. [Port] フ ィールドに 「1534」 と入力します。

12. [OK] をク リ ッ ク して接続を作成します。

X-Ref Target - Figure 5-10

図 5-10: Run Configurations ウィザード

X-Ref Target - Figure 5-11

図 5-11: [Target Connection Details] ダイアログ ボックスの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 65UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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-12

図 5-12: [Application] タブでのデバッグ コンフ ィギュレーシ ョ ン設定

X-Ref Target - Figure 5-13

図 5-13: データ転送メ ッセージ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 66UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章

Linux のブートおよび SDK でのデバックこの章では、 PetaLinux ツールを使用して Zynq®-7000 SoC ボード上で Linux OS を設定およびビルドする手順を説明

します。 JTAG インターフェイスを使用して Linux でコンパイル済みのイ メージをターゲッ ト メモ リにダウンロード

する方法も示します。

この章の後半では、 コンパイル済みのイ メージで次の不揮発性メモ リ をプログラムする方法について説明します。

これらのイ メージは、 ボードをオンにした後に Linux の自動ブートに使用されます。

• オンボード QSPI フラ ッシュ

• SD カード

この章では、 ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) のリモート デバッグ機能を使用して、 ターゲッ ト ボード

上で動作する Linux アプリ ケーシ ョ ンをデバッグする方法についても説明します。 SDK ソフ ト ウェア ツールは

Windows ホス ト マシンで実行します。 アプリ ケーシ ョ ンのデバッグでは、 SDK によって Linux OS が実行されている

ターゲッ ト ボードへのイーサネッ ト接続が確立されます。

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

必要な環境

この章では、 ターゲッ ト プラ ッ ト フォームと して Zynq ボードを使用します。 ホス ト プラ ッ ト フォームは、

Vivado® ツールを実行する Windows マシンと Linux マシン (物理マシンまたは仮想マシン) にインス トールされた

PetaLinux です。

注記: この章のチュート リ アルには、 一般的なブート ローダーである Das U-Boot が必要です。 これは、 次にダウン

ロードするコンパイル済みのイ メージに含まれます。

ザイ リ ンクスの資料サイ トから、 このガイ ドに関連する ZIP ファ イルをダウンロード して ください。 詳細は、

119 ページの 「このチュート リ アルのデザイン ファ イル」 を参照してください。 この 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 ファ イル。

• Image.ub: PetaLinux ビルド イ メージ (カーネル イ メージ、 Ramdisk、 および dtb を含む)。

• fsbl.elf: BOOT.BIN イ メージの作成に使用する FSBL イ メージ。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 67UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

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

このセクシ ョ ンでは、 67 ページの 「必要な環境」 でダウンロード したコンパイル済みのイ メージを使用して、 ター

ゲッ ト ボード上で 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 のブート を終了させます。

スレーブ ブート方法

JTAG は、 スレーブ ブート モードでのみ使用可能です。 外部ホス ト コンピューターがマスターと して機能し、 JTAG

接続を使用してブート イ メージを OCM にロード します。

注記: ブート イ メージをロードする間、 PS の CPU はアイ ドル モードにな り ます。 スレーブ ブート方法でのブートは

常に非セキュア モードです。

JTAG ブート モードでは、 CPU はセキュ リ ティ関連のすべてのアイテムへのアクセスを無効にし、 JTAG ポート を有

効にした直後に停止モードに遷移します。 CPU の実行を再開させる前に、 ブート イ メージを DDR メモ リにダウン

ロードする必要があ り ます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 68UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

JTAG からの Linux のブート

次のフロー図に、 ターゲッ ト プラ ッ ト フォームで Linux をブートするプロセスを示します。

デバッグ用の PetaLinux ビルドの準備 tcf-agent を使用して Linux アプリ ケーシ ョ ンをデバッグするには、 PetaLinux RootFS で tcf-agent を手動で有効にする

必要があ り ます。

PetaLinux RootFS で dropbear-openssh-sftp サーバーが無効になっているこ とを確認します。

注記: ザイ リ ンクス SDK の System Debugger では、 tcf-agent (TCF - Target Communication Framework) を使用した Linux

アプリ ケーシ ョ ンのデバッグがサポート されます。 TCF エージェン トは PetaLinux roofts パッケージの一部と して提

供されていますが、 必要に応じて有効にする必要があ り ます。

これらのコンポーネン ト を有効にする方法は、 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144) [参照 11] の

「TCF エージェン トによるアプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-1

図 6-1: ターゲッ ト プラッ ト フォームでの Linux のブート プロセス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 69UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

JTAG モードを使用した Linux のブート

1. JTAG モードを使用して Linux をブートする際の次のボード接続および設定を確認します。

a. 26 ページの 「サンプル プロジェク ト : Hello World アプリ ケーシ ョ ンの実行」 の説明に従って、 ジャンパー

J27 および J28 が設定されているこ とを確認します。

b. SW16 スイ ッチが次の図に示すよ うに設定されているこ とを確認します。

c. イーサネッ ト ケーブルを Zynq®-7000 SoC からネッ ト ワークに接続するか、 またはホス ト マシンに直接接

続します。

d. Windows ホス ト マシンをネッ ト ワークに接続します。

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

2. ターゲッ ト ボードの SW10 スイ ッチを次の図に示すよ うに設定し、 USB Micro ケーブルを使用して Windows ホ

ス ト マシンと ターゲッ ト ボードを接続します。

° Bit-1 は 0

° Bit-2 は 1

注記: 0 は開、 1 は閉です。 ユーザー インターフェイスに応じて、 正しい JTAG モードを選択する必要があ り ま

す。 JTAG モードは、 zc702 ではスイ ッチ SW10、 zc706 ではスイ ッチ SW4 で設定します。

X-Ref Target - Figure 6-2

図 6-2: SW16 スイッチの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 70UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

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

USB からシ リ アルへの転送に使用されます。

4. イーサネッ ト ジャンパー J30 および J43 を次の図に示すよ うに変更します。

5. ターゲッ ト ボードに電源を投入します。

6. SDK を起動し、 第 2 章および第 3 章で使用したワークスペースを開きます。

7. シ リアル ターミナルが開いていない場合は、ボー レート を 115200 に設定してシ リ アル通信ユーティ リ ティ を開

きます。

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

8. [Xilinx Tools] → [Program FPGA] → [Program] をク リ ッ ク し、 ビッ ト ス ト リームをダウンロード します。

9. [Xilinx Tools] → [XSCT console] をク リ ッ ク して Xilinx System Debugger (XSCT) ツールを開きます。

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: エンベデッ ド デザイン チュート リアル 71UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

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. 「source C:/designs/edt_tutorial/edt_tutorial.sdk/

tutorial_bd_wrapper_hw_platform_0/ps7_init.tcl」 と入力してから 「ps7_init」 と入力し、

PS (ク ロ ッ ク PLL、 MIO、 DDR など) を初期化します。

e. 「ps7_post_config」 と入力して PS とプログラマブル ロジッ ク (PL) 間のレベル シフターを有効にし、 ファブ

リ ッ ク ポート リセッ ト をク リ アします。

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 を入力し、プロセッサのブート を

完了させます。

ブートが完了する と、 シ リ アル ターミナルに # prompt プロンプ トが表示されます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 72UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

13. oot@plnx_arm:~# プロンプ トで、 ボードのイーサネッ ト接続が設定されているこ とを確認します。

a. Zynq> プロンプ トに 「ifconfig eth0」 と入力し、 ボードの IP アドレスを確認します。

このコマンドは、 現時点でアクティブなすべてのインターフェイスの詳細を表示します。 表示される メ ッ

セージで、 inet addr 値は Zynq SoC ボードに割り当てられている IP アドレスを示します。

b. inet addr と netmask の値が存在しない場合、 次のコマンドを使用してそれらを割り当てるこ とができ

ます。

root@plnx_arm:~# ifconfig eth0 inet 192.168.1.10

root@plnx_arm:~# ifconfig eth0 netmask 255.255.255.0

重要: ターゲッ ト とホス ト を直接接続している場合は、 IP アドレスを設定する必要があ り ます。 ターゲッ ト とホス ト

を LAN を介して接続している場合は、 DHCP によ り ターゲッ トの IP アドレスが取得されます。 ifconfig etho を

使用して 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: エンベデッ ド デザイン チュート リアル 73UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

c. [OK] をク リ ッ ク して値を確定し、 ウ ィンド ウを閉じます。

14. Windows マシンのコマンド プロンプ トに 「ping」 と入力し、 それに続いてボードの IP アドレスを入力して、

ボード との接続を確認します。 ping 応答がループ内に表示されます。

この応答は、 Windows ホス ト マシンと ターゲッ ト ボード間の接続が確立されているこ とを意味します。

15. Ctrl + C キーを押して、 Windows ホス ト マシンのコマンド プロンプ トでの ping 応答の表示を停止します。

ターゲッ ト ボードでの Linux のブートが終了し、 ホス ト マシンと ターゲッ ト ボード間の接続が完了します。 次

のサンプル デザインでは、 SDK を使用して Linux アプリ ケーシ ョ ンをデバッグする方法を説明します。

X-Ref Target - Figure 6-5

図 6-5: IP アドレスの設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 74UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

サンプル デザイン: SDK を使用した Linux アプリケーシ ョ ンのデバッグ

このセクシ ョ ンでは、 SDK を使用してデフォルトの Linux hello world アプリ ケーシ ョ ンを作成し、 Windows ホス

ト マシンから Linux アプリ ケーシ ョ ンをデバッグする手順を実行します。

1. SDK を開きます。

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

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

3. 次の表の情報に基づいて、 ウ ィザード画面で選択操作を実行します。

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

New Project ウ ィザードが閉じ、 HelloLinux プロジェク トが作成されて [Project Explorer] ビューに表示されま

す。 また、 このプロジェク トが自動的にコンパイルされ、 HelloLinux.elf ファ イルが生成されます。

5. [HelloLinux] を右ク リ ッ ク し、 [Debug as] → [Debug Configurations] をク リ ッ ク して デバッグ Configurations ウ ィ

ザードを開きます。

6. [System Debugger] をダブルク リ ッ ク し、 次の図に示すよ うに [Debug Type] に [Linux Application Debug] を選択し

ます。

7. [Target Setup] タブで、 [Connection] フ ィールドの横にある [New] をク リ ッ ク します。

表 6-1: SDK でデバッグする場合の New Project ウィザードの設定

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

Application Project Project name HelloLinux

Use default location オン

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform Linux

Language C

Templates Available Templates Linux Hello World

X-Ref Target - Figure 6-6

図 6-6: デバッグ タイプの選択

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 75UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

8. [Target Connection Details] ダイアログ ボッ クスで次のよ うに設定します。

a. [Target Name] を選択します。

b. [Host] フ ィールドにターゲッ ト の IP アドレスを入力します。

c. [Port] フ ィールドに 「1534」 と入力します。

X-Ref Target - Figure 6-7

図 6-7: デバッグのターゲッ ト接続設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 76UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

9. アプリ ケーシ ョ ン コンフ ィギュレーシ ョ ンの詳細を次のよ うに設定します。

a. [Application] タブをク リ ッ ク します。

b. [Project Name] の横にある [Browse] ボタンをク リ ッ ク します。 [Project Selection] ダイアログ ボッ クスが表示

されます。

c. HelloLinux プロジェク ト を選択し、 [OK] をク リ ッ ク します。

d. [Remote File] パス (/tmp/hellolinux.elf など) を設定し、 [Apply] をク リ ッ ク します。

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

注記: [Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

X-Ref Target - Figure 6-8

図 6-8: デバッグのターゲッ ト オプシ ョ ン

X-Ref Target - Figure 6-9

図 6-9: [Confirm Perspective Switch] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 77UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

[Debug] パースペクティブが開きます (図 6-10 を参照)。 このパースペクティブで、 次を実行できます。

- 実行が main() で停止しているこ とを確認します。

- アドレスへの逆アセンブリ ポイン ト を表示します。

- エディ ター ペインで関数の左側を右ク リ ッ ク してブレークポイン ト を設定します (下の図では

helloworld.c を表示)。

- ブレークポイン ト を設定する と、 ブレークポイン ト リ ス トに表示されます。 レジスタの内容を確認お

よび変更できます。 [Registers] ビューに表示されている PC レジスタのアドレス と [Disassembly] ビュー

に表示されているアドレスは同じです (次の図を参照)。

- 次の図で緑色で示されている [step-into] (F5)、 [step-return] (F7)、 [step-over] (F6)、 [Resume] (F8)、 および

[continue debugging] ボタンを使用します。

ヒン ト : Linux アプリ ケーシ ョ ンの出力は、 Linux を実行するために使用したターミナル ウ ィンド ウではなく、 SDK

コンソールに表示されます。

11. Linux アプリ ケーシ ョ ンのデバッグが終了したら、 SDK を閉じます。

X-Ref Target - Figure 6-10

図 6-10: HelloLinux アプリケーシ ョ ンが表示された [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 78UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

サンプル プロジェク ト : QSPI フラッシュからの Linux のブート

このサンプル プロジェク トでは、 次を実行します。

1. 第 1 段階ブート ローダー (FSBL) の実行ファイルを作成します。

2. QSPI フラ ッシュ用に Linux のブータブル イ メージを作成します。

PetaLinux を QSPI フラ ッシュ ブート モードに設定して際ビルドする必要があ り ます。 デフォルトでは、 ブート

オプシ ョ ンは SD ブートに設定されています。

ヒン ト : この資料に付属の ZIP ファ イルに、 ビルド済みイ メージが含まれています。 これらのファイルを使用して、

85 ページの 「QSPI フラ ッシュからの Linux のブート 」 または86 ページの 「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) [参照 11] を参照してください。

4. JTAG および U-Boot コマンドを使用して、 QSPI フラ ッシュをブート イ メージでプログラムします。

5. QSPI フラ ッシュから Linux をブート します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 79UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

第 1 段階ブート ローダー (FSBL) の実行ファイルの作成

1. SDK を開きます。

2. TCF (Target Communication Frame) (hw_server.exe) エージェン トが Windows マシンで実行中であるこ とを確認

します。 実行されていない場合は、 SDK で [Xilinx Tools] → [XSCT Console] をク リ ッ ク します。

3. [XSDB Console] ウ ィンド ウに 「Connect」 と入力します。 hw_server アプリ ケーシ ョ ンが開始したこ とを示す

メ ッセージが表示されるか、 または開始して実行中の場合は次の図に示すよ うに tcfchan# が表示されます。

4. SDK で [File] → [New] → [Application Project] をク リ ッ ク します。 New Project ウ ィザードが開きます。

X-Ref Target - Figure 6-11

図 6-11: XSCT コンソール: hw_server アプリケーシ ョ ンが開始したことを示すメ ッセージ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 80UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

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

6. [Finish] をク リ ッ ク します。

New Project ウ ィザードが閉じます。 fsbl アプリ ケーシ ョ ン プロジェク トおよび fsbl_bsp ボード サポート

パッケージ (BSP) プロジェク トが作成され、 [Project Explorer] ビューに表示されます。 また、 このプロジェク ト

が自動的にコンパイルされ、 fsbl.elf ファ イルが生成されます。

表 6-2: Linux プロジェク ト をブートする場合の New Project ウィザードの設定

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

Application Project Project name [fsbl]

Use default location オン

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform standalone

Language C

Board Support Package [Create New] をオンにして 「fsbl_bsp」 と入力。

Templates Available Templates Zynq FSBL

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 81UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

QSPI フラ ッシュ用の Linux ブータブル イメージの作成

1. SDK で [Xilinx Tools] → [Create Boot Image] をク リ ッ ク し、 Create Boot Image ウ ィザードを開きます。

2. [Architecture] ド ロ ップダウン リ ス トから [Zynq] を選択します。

3. [Output BIF file path] フ ィールドの横にある [Browse] をク リ ッ ク し、 output.bif ファ イルを選択します。

4. [Output path] フ ィールドの横にある [Browse] をク リ ッ ク し、 BOOT.bin ファ イルを選択します。

注記: QSPI ブート ファ イル BOOT.bin は、 このガイ ドに付属の ZIP ファ イルに含まれています。 詳細は、

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

X-Ref Target - Figure 6-12

図 6-12: Zynq デバイスのブート イメージの作成

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 82UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

5. [Add] をク リ ッ ク して次のブート イ メージ パーティシ ョ ンを追加します。

° fsbl.elf (ブート ローダー )。

注記: fsbl.elf は <project dir>/project/project.sdk/SDK/SDK_Export/fsbl/Debug にあ り

ます。

67 ページの 「必要な環境」 でダウンロード したファイルに含まれる fsbl.elf を使用するこ と もできます。

° ビッ ト ス ト リームと U-Boot イ メージ 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 Tools] → [XSCT Console] をク リ ッ ク して XSCT ツールを開きます。

4. XSCT プロンプ トで次を実行します。

a. 「connect」 と入力して PS に接続します。

b. 「targets」 と入力してターゲッ ト プロセッサのリ ス ト を取得します。

c. 「ta 2」 と入力してプロセッサ CPU1 を選択します。

d. 「source <Project Dir>/project_1/project_1.sdk/SDK/SDK_Export/<system_hw_platform>/ps7_init.tcl」 と入力して

から 「ps7_init」 と入力し、 PS を初期化します。

e. 「ps7_post_config」 と入力して PS と PL 間のレベル シフターを有効にし、 ファブ リ ッ ク ポート リセッ ト をク

リ アします。

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: エンベデッ ド デザイン チュート リアル 83UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

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. ボードの電源をオフにし、 次のセクシ ョ ンのブート手順に従います。

SDK フラッシュ プログラム ツールを使用した QSPI フラ ッシュのプログラム

次の手順を使用する と、 SDK フラ ッシュ プログラム ツールを使用して QSPI フラ ッシュをプログラムできます。

1. ZC702 ボードに電源を投入します。

2. シリアル ターミナルが開いていない場合は、 ボー レート を 115200 に設定してシリアル ターミナルに接続します。

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

3. [Xilinx Tools] → [Program Flash] をク リ ッ ク します。

4. フラ ッシュにプログラムする BOOT.bin ファ イルを選択し、 [Program] をク リ ッ ク します (次の図を参照)。

正し くプログラムされる と、 コンソール ウ ィンド ウに 「Flash Operation Successful」 とい う メ ッセージが表示さ

れます。

X-Ref Target - Figure 6-13

図 6-13: フラ ッシュ ツールを使用した BOOT.bin ファイルのプログラム

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 84UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

5. ボードの電源をオフにし、 85 ページの 「QSPI フラ ッシュからの Linux のブート 」 または86 ページの 「SD カー

ドからの Linux のブート 」 のブート手順に従います。

QSPI フラ ッシュからの Linux のブート

1. QSPI フラ ッシュをプログラムしたら、 ボードの SW16 スイ ッチを次の図に示すよ うに設定します。

2. 115200 のボー レート設定を使用してシ リ アル ターミナルを接続します。

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

3. ボードに電源を投入します。

シ リ アル ターミナルに Linux ブート メ ッセージが表示されます。 ブートが完了する と、 root@plnx_arm:~#

プロンプ トが表示されます。

4. 70 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボード IP アドレスの接続を確認します。

Linux アプリ ケーシ ョ ンの作成およびデバッグについては、 75 ページの 「サンプル デザイン: SDK を使用した

Linux アプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-14

図 6-14: QSPI フラ ッシュから Linux をブートする際のジャンパー設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 85UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

SD カードからの Linux のブート

1. SW16 スイ ッチ設定を次の図に示すよ うに変更します。

2. 70 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボードを設定します。

3. 80 ページの 「第 1 段階ブート ローダー (FSBL) の実行ファイルの作成」 の説明に従ってデザインの第 1 段階ブー

ト ローダー (FSBL) を作成します。

注記: デフォルトの FSBL イ メージを変更する必要がない場合は、 このガイ ドの ZIP ファ イルに含まれる

fsbl.elf ファイルを使用できます。 詳細は、 119 ページの 「このチュート リ アルのデザイン ファ イル」 を参

照してください。

4. SDK で [Xilinx Tools] → [Create Boot Image] をク リ ッ ク し、 Create Boot Image ウ ィザードを開きます。

5. fsbl.elf、 BIT ファ イル (存在する場合)、 および u-boot.elf を追加します。

6. [Output folder] で出力フォルダーへのパスを指定します。

X-Ref Target - Figure 6-15

図 6-15: SD カードから Linux をブートする際のジャンパー設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 86UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 6 章: Linux のブートおよび SDK でのデバック

7. [Create Image] をク リ ッ ク します。 BOOT.bin ファ イルが指定のフォルダーに生成されます。

8. BOOT.bin および image.ub を SD カードにコピーします。

重要: ファ イル名は変更しないでください。 U-Boot は、 システムのブート中に SD カード内でこれらの名前でファイ

ルを検索します。

9. ボードに電源を投入し、 シ リ アル ターミナルに表示される メ ッセージを確認します。 ターゲッ ト ボードで

Linux のブートが完了する と、 root@plnx_arm:~# プロンプ トが表示されます。

10. 70 ページの 「JTAG モードを使用した Linux のブート 」 の説明に従ってボード IP アドレスを設定し、 接続を確

認します。

Linux アプリ ケーシ ョ ンの作成およびデバッグについては、 75 ページの 「サンプル デザイン: SDK を使用した

Linux アプリ ケーシ ョ ンのデバッグ」 を参照してください。

X-Ref Target - Figure 6-16

図 6-16: Zynq ブート イメージの作成

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 87UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 ページ [参照 17] を参

照してください。

• カーネル ソース コードおよびビルド環境: ザイ リ ンクスの Zynq Linux Wiki ページ [参照 18] を参照してくださ

い。 このページには、 Zynq SoC FPGA 特有の Linux カーネルに関する詳細が記載されています。 カーネル ソー

ス ファ イルをダウンロードするだけでなく、 Zynq SoC FPGA 用に Linux カーネルを構築するための情報も こ こ

から入手できます。

注記: カーネル ソース ファ イルおよび U-Boot ファ イルは、 ザイ リ ンクスの GitHub ウェブサイ ト [参照 22] から

ダウンロードできます。

• デバイス ド ラ イバー ソフ ト ウェア ファ イル (blink.c) および対応するヘッダー ファ イル (blink.h): これらの

ファイルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 詳細は、 119 ページの 「このチュート リ アル

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

• アプリ ケーシ ョ ン ソフ ト ウェア (linux_blinkled_apps.c) および対応するヘッダー ファ イル (blink.h):

これらのファイルは、 このガイ ドに付属の ZIP ファ イルに含まれています。 詳細は、 119 ページの 「このチュー

ト リ アルのデザイン ファ イル」 を参照してください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 88UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

• カーネルおよびデバイス ド ラ イバーのコンパイルをスキップする場合は、 このセクシ ョ ンで必要なコンパイル

済みイ メージを使用してください。 これらのイ メージは、 このガイ ドに付属の ZIP ファ イルに含まれています。

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

注意: ペリ フェラル IP の LKM (Loadable Kernel Module) は、 ベース カーネル イ メージを生成する同じカーネル ビル

ド プロセスの一部と して構築する必要があ り ます。 カーネルまたは LKM のビルド プロセスをスキップする場合は、

このセクシ ョ ン用に既にコンパイルされているカーネルおよび LKM モジュールのイ メージを使用してください。 こ

れらのイ メージは、 このガイ ドに付属の ZIP ファ イルに含まれています。 詳細は、 119 ページの 「このチュート リ ア

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

ペリフェラル 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: エンベデッ ド デザイン チュート リアル 89UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

サンプル プロジェク ト : ペリフェラル IP の作成

このセクシ ョ ンでは、 AXI4-Lite 準拠のスレーブ ペリ フェラル IP を作成します。

1. 14 ページの 「サンプル プロジェク ト : Zynq SoC の新規エンベデッ ド プロジェク トの作成」 の説明に従って新し

いプロジェク ト を作成します。

2. [Tools] → [Create and New Package 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] ウ ィンド ウが開きます。

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

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

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: エンベデッ ド デザイン チュート リアル 90UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

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: エンベデッ ド デザイン チュート リアル 91UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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: エンベデッ ド デザイン チュート リアル 92UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 シ ミ ュレーシ ョ ンの実行方法ウェブ ページ [参照 23] を参照して

ください。

X-Ref Target - Figure 7-4

図 7-4: [Package IP] ウィンドウ: [Ports and Interfaces] ページ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 93UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 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 すべてが点滅を停止して以前の状態を保持します。

このセクシ ョ ンでは、 90 ページの 「サンプル プロジェク ト : ペリ フェラル IP の作成」 で作成した AXI4-Lite 準拠の

カスタム スレーブ ペリ フェラル IP を接続します。

1. 14 ページの 「サンプル プロジェク ト : 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: エンベデッ ド デザイン チュート リアル 94UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

5. [All Automation] がオンになっているこ とを確認し、 [OK] をク リ ッ ク して接続を実行します。

新しい IP は自動的に接続されますが、 LED 出力ポートは接続されません。

6. leds ポート を右ク リ ッ ク して [Make External] をク リ ッ ク します。

7. Flow Navigator で [RTL Analysis] → [Elaborated Design] をク リ ッ ク します。

画面の上部に、 エラボレート されたデザインの更新が必要で、 デザイン ソースが変更されるこ とを示すメ ッ

セージが表示されます。

8. [Reload] をク リ ッ ク します。 デザインに追加した、 更新されているカスタム IP コアを含めるため、 デザインを

再合成する必要があ り ます。

9. エラボレート済みデザインを開いたら、 [I/O Ports] ウ ィンド ウをク リ ッ ク して [All Ports] → [leds] を展開します。

X-Ref Target - Figure 7-6

図 7-6: LED ポートを外部に設定

X-Ref Target - Figure 7-7

図 7-7: I/O Ports

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 95UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

10. LED ポート を次のよ うに設定します。

次の図に、 [I/O Ports] ウ ィンド ウで完了した LED ポート設定を示します。

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

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

をク リ ッ ク します。

13. 合成を更新する必要があるこ とを示すメ ッセージが表示された場合は、 [Yes] をク リ ッ ク します。

14. ビッ ト ス ト リームの生成が完了したら、 23 ページの 「ハード ウェアの SDK へのエクスポート 」 の説明に従って

ハード ウェアをエクスポート してザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) を起動します。

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

Linux のモジュールは、 必要に応じてカーネルにロード /アンロードできます。 このよ うに追加するコードは、 LKM

(Loadable Kernel Module) と呼ばれます。 これらのモジュールを使用する と、 システムを リブートせずにカーネルの

機能を拡張できます。 これらのモジュールを使用しない場合は、 モノ リ シッ ク カーネルをビルド してカーネル イ

メージに直接新しい機能を追加する必要があ り ます。 この場合、 カーネルが大き くなるだけでなく、 新しい機能を

追加するたびにカーネルの再ビルド と リブートが必要となる という欠点もあ り ます。

LKM は一般的に次のいずれかを指します。

• デバイス ド ラ イバー : ハードウェア用に設計されます。 カーネルでデバイス ド ラ イバーを使用する と、 ハード

ウェアがどのよ うに機能するかを詳細に把握していなくてもそのハード ウェアと通信できます。

• ファ イルシステム ド ラ イバー : ファ イル システムの内容をファイルおよびディ レク ト リ と して解釈します。

• システム コール: ユーザー空間プログラムでカーネルにサービスを要求するために使用されます。

ポート名 I/O 規格 ([I/O Std]) サイ ト ([Site])

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: エンベデッ ド デザイン チュート リアル 96UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

Linux では、 各ハード ウェアはデバイス ファ イルと して指定されているファイルで表され、 デバイス ファ イルは

ハードウェアとの通信手段を提供します。 ほとんどのハード ウェア デバイスは出力および入力の両方に使用される

ため、 デバイス ファ イルはハードウェアとデータを送受信するための入力/出力制御 (ioctl) を提供します。 各デバ

イスは、 次のタイプの独自の ioctl コマンドを持つこ とができます。

• 読み出し ioctl。 プロセスからカーネルに情報を送信します。

• 書き込み ioctl。 プロセスに情報を返します。

• 読み出しおよび書き込み両方の ioctl。

• 読み出しでも書き込みでもない ioctl。

LKM の詳細は、 『Linux Kernel Module Programming Guide』 [参照 24] を参照して ください。

このセクシ ョ ンでは、 ペリ フェラル IP のデバイス ド ラ イバーを、 実行中のカーネルに動的にロード可能な LKM と

して開発します。ペリ フェラル IP の LKM は、ベース カーネル イ メージを生成するのと同じカーネル ビルド プロセ

スの一部と してビルドする必要があ り ます。

注記: デバイス ド ラ イバーをコンパイルしない場合は、 このセクシ ョ ンの例をスキップして98 ページの 「実行中の

カーネルへのモジュールのロード とアプリ ケーシ ョ ンの実行」 に進むこ とができます。 そのセクシ ョ ンでは、

blink.ko (付属の ZIP ファ イルに含まれる image.ub) を含むカーネル イ メージを使用します。詳細は、 119 ページ

の 「このチュート リ アルのデザイン ファ イル」 を参照してください。

カーネルのコンパイルおよびデバイス ド ラ イバーの開発には、 Linux ワークステーシ ョ ンを使用する必要があ り ま

す。 デバイス ド ラ イバーの開発を開始する前に、 次を実行する必要があ り ます。

1. Linux ワークステーシ ョ ンでツールチェーン パスを設定します。

2. カーネル ソース コードをダウンロード してコンパイルします。 ダウンロード と コンパイルについては、 ザイ リ

ンクスの Zynq Linux Wiki ページ [参照 18] に記載されている手順を参照して ください。

サンプル プロジェク ト : デバイス ド ライバーの開発

このサンプル プロジェク トでは、 Linux ワークステーシ ョ ンを使用します。 デバイス ド ラ イバー ソフ ト ウェアは、

このガイ ドに付属の ZIP ファ イルに含まれる LKM フォルダーにあ り ます。 詳細は、 119 ページの 「このチュート リ

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

1. PetaLinux プロジェク トのディ レク ト リで、 次のコマンドを使用してモジュールを作成します。

petalinux-create -t modules --name mymodule --enable

モジュールが <plnx-project>/project-spec/meta-user/recipes-modules/ の下に作成されます。

2. 次のコマンドを使用して blink モジュールを作成します。

petalinux-create -t modules --name blink --enable

デフォルトのド ライバー作成によ り、 makefile、 C ファ イル、 および Readme ファ イルが作成されます。 この演

習では、 blink.c、 Makefile、 および README ファ イルが作成されます。 ビッ ト ベーク レシピ blink.bb も含ま

れています。

3. ド ラ イバーに合わせて C ファ イル (ド ラ イバー ファ イル) および makefile を変更します。

4. LKM フォルダー ( リ ファレンス ファ イル) を選択し、blink.c および blink.h をこのディ レク ト リにコピーし

ます。

5. blink.bb レシピを開き、 SRC_URI に blink.h エン ト リ を追加します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 97UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

6. 次のコマンドを実行します。

'petalinux build'

コンパイルが正常に完了する と、 .ko ファ イルが次のディ レク ト リに作成されます。

<petalinux-build_directory>/build/tmp/sysroots/plnx_arm/lib/modules/4.9.0-xilinx/extra/blink.ko

7. modprobe コマンドを使用してド ラ イバーをインス トールできます。 このコマンドについては、 次のセクシ ョ

ンで詳細に説明します。

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

このセクシ ョ ンでは、 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 すべてが点滅を停止して

以前の状態を保持します。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 98UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

サンプル プロジェク ト : モジュールのカーネルへのロード とアプリケーシ ョ ンの実行

ターゲッ ト ボートの Linux のブート

68 ページの 「Zynq SoC ボード上での Linux のブート 」 の説明に従って、 Zynq SoC ZC702 ターゲッ ト ボードで Linux

をブート します。

モジュールのロードおよびアプリケーシ ョ ンの実行

このセクシ ョ ンでは、 Windows マシンにインス トールされている SDK ツールを使用します。

1. SDK を開きます。

SDK では、 TCF (Target Communication Frame) エージェン ト をホス ト マシンで実行する必要があ り ます。

2. [XSCT] → [connect] をク リ ッ ク し、 Xilinx System Debugger (XSCT) に接続します。

3. SDK で [File] → [New] → [Application Project] をク リ ッ ク し、 New Project ウ ィザードを開きます。

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

5. [Finish] をク リ ッ ク します。

New Project ウ ィザードが閉じ、linux_blinkled_app プロジェク トが作成されて [Project Explorer] ビューに表

示されます。

6. [Project Explorer] ビューで [linux_blinkled_app] プロジェク ト を展開し、 [src] ディ レク ト リ を右ク リ ッ ク して

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

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

7. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] をク リ ッ ク します。

8. [Next] をク リ ッ ク します。

9. linux_blinkled_app.c および blink.h ファ イルを追加します。

注記: システム用のアプリ ケーシ ョ ン ソフ ト ウェア ファ イル名は linux_blinkled_app.c で、 ヘッダー ファ

イル名は blink.h です。 これらのファイルは、 このガイ ドに付属の ZIP ファ イルの LKM フォルダーに含まれて

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

linux_blinkled_app.c および blink.h ファ イルを追加します。

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

Application Project Project name linux_blinkled_app

Use default location オン

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform Linux

Language C

Templates Available Templates Linux Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 99UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

10. [Finish] をク リ ッ ク します。

アプ リ ケーシ ョ ンがビルド され、 linux_blinkled_app.elf ファ イルが生成されます。 コンソール ウ ィンド

ウでこの処理のステータスを確認します。

11. ボードを接続します。

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

[Program FPGA] をク リ ッ ク します。

[Program FPGA] ダイアログ ボッ クスが開きます。 Vivado からエクスポート されたビッ ト ス ト リームが表示され

ます。

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

14. 第 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 = 0x80954000Registration is a success the major device number is 245.

デバイス ド ラ イバーと通信する場合は、 次のコマンドを実行してデバイス ファ イルを作成します。

mknod /dev/blink_Dev c 244

ioctl プログラムはデバイス ファ イル名に基づいて使用するファイルを判断するので、 デバイス ファ イル名は重

要です。

15. デバイス ノードを作成します。

mknod コマンドを実行し、 表示されたメ ッセージから文字列を選択します。

たとえば、 mknod /dev/blink_Dev c 244 0 という コマンドを実行すると、 /dev/blink_Dev ノードが作成されます。

16. [Windows] → [Open] → [Perspective] → [Other] をク リ ッ ク します。

パースペクティブのリ ス トが表示されます。

17. [Remote System Explorer] を選択して [OK] をク リ ッ ク します。

SDK で Remote Systems Explorer が開きます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 100UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

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

18. 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] をク リ ッ ク します。

Windows ホス ト マシンと ターゲッ ト ボード間の接続が既に確立されているため、 ウ ィンド ウにルート ディ

レク ト リの内容が表示されます。

i. パス名の 「/」 を右ク リ ッ ク し、 Apps という名前の新しいディ レク ト リ を作成します。

j. Remote Systems Explorer を使用して、 linux_blinkled_app.elf ファ イルを <project-dir>/project_1/project_1.sdk/SDK/SDK_Export/linux_blinkleds_apps/Debug

フォルダーからコピーし、 [blink connection] の下の /Apps ディレク ト リに貼り付けます。

19. シ リアル ターミナルで、 Zynq> プロンプ トに 「cd Apps」 と入力し、 /Apps ディレク ト リ を開きます。

20. root@plnx_arm:~# Linux プロンプ トで Apps ディ レク ト リに移動し、 「chmod 777 Linux_blinkled_app.elf」 と入

力して linux_blinkled_app.elf ファ イル モードを実行ファイル モードに変更します。

21. root@plnx_arm:~# プロンプ トに 「./Linux_blinkled_app.elf」 と入力してアプリ ケーシ ョ ンを実行します。

22. シ リアル ターミナルに表示される手順に従ってアプリ ケーシ ョ ンを実行します。 アプリ ケーシ ョ ンによ り、 1

または 0 を入力するよ う指示が表示されます。

° 「1」 と入力し、 LED DS15、 DS16、 DS17、 および DS18 を観察します。 LED が点滅し始めます。

° 「0」 と入力し、 各 LED がそれぞれのステートで停止するのを観察します。 それ以上点滅しません。

入力を繰り返して LED を観察できます。

23. Linux アプリ ケーシ ョ ンのデバッグが終了したら、 SDK を閉じます。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 101UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 8 章

SDK を使用したソフ トウェアのプロファイルこの章では、 第 6 章で作成したスタンドアロン ボード サポート パッケージ (BSP) と AXI CDMA 関連のアプリ ケー

シ ョ ンに対してプロファ イル機能を有効にします。

システム デバッガーを使用した SDK でのアプリケーシ ョ ンのプロファイル

プロファイルは、 各ルーチンのソフ ト ウェア実行時間を計測する方法です。 この情報を使用して、 コードの重要な

部分およびデザインでの 適なコード配置を判断できます。 頻繁に呼び出されるルーチンは、 キャ ッシュ メモ リ な

どの高速メモ リに配置するのが 適です。 プロファ イル情報を使用する と、 コードをハード ウェアに配置可能かど

うかも判断でき、 全体的なパフォーマンスを向上できます。

ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) の System Debugger を使用して、アプリ ケーシ ョ ンをプロファ イルでき

ます。

1. プロファイルするアプリ ケーシ ョ ンを選択します。

2. [Run] → [Debug As] → [Launch on Hardware (System Debugger)] をク リ ッ ク します。

[Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

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

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 102UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 8 章: SDK を使用したソフ トウェアのプロファイル

3. アプリ ケーシ ョ ンが main で停止したら、[Window] → [Show View] → [Other] → [Debug] → [TCF Profiler] をク リ ッ

ク して [TCF (Target Communication Frame) Profiler] ビューを開きます。

4. [Start] をク リ ッ ク してプロファ イルを開始します。 または、 [Profiler Configuration] ダイアログ ボッ クスで

[Aggregate Per Function] をオンにするこ と もできます。プロファ イル サンプル時間に応じて [View update interval]

(表示更新間隔) を設定します。 短時間は 100 msec です。

X-Ref Target - Figure 8-1

図 8-1: [TCF Profiler] ビュー

X-Ref Target - Figure 8-2

図 8-2: [Profiler Configuration] ダイアログ ボックス

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 103UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 8 章: SDK を使用したソフ トウェアのプロファイル

5. [Resume] をク リ ッ ク して、 アプリ ケーシ ョ ンの実行を再開します。

[TCF Profiler] ビューにプロファイル データを表示するには、 アプリ ケーシ ョ ンが停止する終了ブレークポイン ト を

追加します。

ヒン ト : ザイ リ ンクス SDK では、 gprof プロファイルがサポート されます。 詳細は、 SDK ヘルプ [参照 2] を参照して

ください。

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

デザインの目標を達成するため、 システム パフォーマンス解析 (SPA) ツールボッ クスおよび SDSoC™

(Software-Defined System on Chip) 開発環境について学ぶと有益な場合があ り ます。

システム性能解析 (SPA) ツールボックス

パフォーマンス解析とベンチマークの必要性に対応して、 ソフ ト ウェア開発キッ ト (SDK) にはハードウェアおよび

ソフ ト ウェア システムを早期に検討するためのシステム パフォーマンス解析 (SPA) ツールボッ クスが含まれていま

す。 このツールボッ クスは、 デザイン プロセスで一貫した予測可能なパフォーマンスが得られるよ うにするため、

パフォーマンスを検証するのに使用できます。

SDK を使用した SPA ツールボッ クスの使用に関する詳細は、 次の資料を参照してください。

• 『ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) ユーザー ガイ ド : システム パフォーマンス解析』 (UG1145) [参

照 12]

• 『SoC のシステム性能解析』 (XAPP1219) [参照 14]

• SDK ヘルプ (ソフ ト ウェア アプリ ケーシ ョ ンから、 またはこの資料のリ ンクからアクセス可能) [参照 2]

X-Ref Target - Figure 8-3

図 8-3: [TCF Profiler] ビュー

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 104UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 8 章: SDK を使用したソフ トウェアのプロファイル

SDSoC (Software-Defined System on Chip)

SDSoC™ (Software-Defined System On Chip) 環境は、Zynq®-7000 SoC を使用してヘテロジニアス エンベデッ ド システ

ムをインプ リ メン トするための Eclipse ベースの IDE です。 SDSoC 環境内のシステム コンパイラは、 C++ で記述さ

れたアプリ ケーシ ョ ンからアプ リ ケーシ ョ ン特定のシステム オン チップを生成します。 これを、 ターゲッ ト アプリ

ケーシ ョ ンを FPGA に拡張するこ とによ り実行します。 SDSoC 環境には、 アプ リ ケーシ ョ ン開発用の多数のプラ ッ

ト フォーム、 およびザイ リ ンクス パートナーから提供されるプラ ッ ト フォームが含まれています。

ザイ リ ンクスでは、 ツールのインス トール、 開発環境の説明、 作成、 実行、 デバッグ、 およびパフォーマンス解析、

デサイン 適化など、 SDSoC 環境に関するさまざまな内容の資料を提供しています。

SDSoC 開発環境の詳細は、 次の資料を参照してください。

• 『SDSoC 環境チュート リ アル: 概要』 (UG1028) [参照 9]

• 『SDSoC 環境ユーザー ガイ ド』 (UG1027) [参照 8]

• 『SDSoC 環境プラ ッ ト フォーム開発ガイ ド』 (UG1146) [参照 13]

• 『UltraFast エンベデッ ド デザイン設計手法ガイ ド』 (UG1046) [参照 10]

関連項目

• ザイ リ ンクス ウェブサイ トのソフ ト ウェア ゾーン [参照 19]

• SDSoC ヘルプ [参照 15]

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 105UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章

SDK を使用した Linux OS 認識デバッグOS 認識デバッグ機能を使用する と、 タスク リ ス ト 、 実行中のプロセス /スレッ ド、 プロセス /スレッ ド特定のスタ ッ

ク ト レース、 レジスタ、 および変数表示など、 OS 特定の情報を可視化できます。

これをサポートするには、 デバッガーがターゲッ ト上で実行中の OS を認識し、 OS の特徴を理解しているこ とが必

要です。

OS 認識デバッグでは、 プロセッサ コア上で実行中の OS と OS 上で実行中のプロセス /スレッ ドを同時にデバッグで

きます。

SDK 2017.3 では、 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: エンベデッ ド デザイン チュート リアル 106UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

次の手順に従って Linux カーネルを設定し、 デバッグ情報を含めてビルド します。

1. Linux マシンのターミナル ウ ィンド ウで、 PetaLinux プロジェク トのディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位システム設定メニューを起動します。

$ petalinux-config -c kernel

3. [Kernel hacking] を選択します。

° [Compile-time checks and compiler options] を選択します。

° [Compile the kernel with debug info] を選択します。

4. 設定を保存して PetaLinux をビルド します。

これによ り、 Linux カーネル コンフ ィギュレーシ ョ ン ファ イルのオプシ ョ ンが次のよ うに設定されます。

CONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_INFO=y

コンフ ィギュレーシ ョ ン ファ イルでこれらのオプシ ョ ンが有効になっているこ とを確認できます。

5. PetaLinux ビルド コマンド petalinux-build を使用して PetaLinux をビルド します。

6. PetaLinux が正常にビルド されたら、 vmlinux ファ イルをホス ト マシンにコピーします。

このファイルは、 デバッガーがすべての Linux カーネル シンボルを参照するために必要です。 vmlinux が

<petalinux project file>/images/linux/vmlinux に作成されます。

7. vmlinux をホス ト マシンにコピーし、 SDK と使用して Linux カーネルをデバッグします。

8. Linux カーネル ソース コードをデバッグ用にホス ト マシンにコピーします。 Linux カーネルは

<petalinux-project>/build/tmp/work-shared/plnx_arm/kernel-source にあ り ます。

注記: この資料は Windows ホス ト マシンを使用して書かれているので、 Linux ソース コードを Windows ホス ト

マシンで実行中の SDK ツールでアクセス可能な場所にコピーする必要があ り ます。

X-Ref Target - Figure 9-1

図 9-1: Linux カーネルでデバッグ情報コンフ ィギュレーシ ョ ン オプシ ョ ンを有効化

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 107UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

Hello World Linux アプリケーシ ョ ンを作成して OS 認識デバッグを実行

1. SDK を開きます。

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

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

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

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

5. [Project Explorer] ビューで linux_hello app プロジェク ト を展開して [src] ディ レク ト リ を右ク リ ッ ク し、

[Import] をク リ ッ ク して [Import] ダイアログ ボッ クスを開きます。

6. [Import] ダイアログ ボッ クスで [General] を展開し、 [File System] を選択します。

7. [Next] をク リ ッ ク します。

8. [Browse] をク リ ッ ク します。

9. デザイン ファイル フォルダーに移動し、 OSA フォルダーを選択して [OK] をク リ ッ ク します。

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

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

10. linux_hello.c ファ イルを追加して [Finish] をク リ ッ ク します。

アプ リ ケーシ ョ ンが自動的にビルド され、 コンソール ウ ィンド ウにステータスが表示されます。

11. linux_hello.elf を SD カードにコピーします。

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

Application Project Project name linux_hello

Use default location オン

Hardware Platform <system_hw_platform>

Processor PS7_cortexa9_0

OS Platform Linux

Language C

Templates Available Templates Empty Application

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 108UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

OS 認識デバッグを使用した Linux プロセスおよびスレッ ドのデバッグ 1. 86 ページの 「SD カードからの Linux のブート 」 の説明に従って Linux をブート します。

2. デバッグ コンフ ィギュレーシ ョ ンを作成します。

3. [linux_hello] を右ク リ ッ ク して [Debug as] → [Debug Configurations] をク リ ッ ク します。

次の図に示す Debug Configuration ウ ィザードが開きます。

4. [Debug Type] ド ロ ップダウン リ ス トから [Attach to running target] を選択します。

5. [Connection] ド ロ ップダウン リ ス トから [Local] を選択します。

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

X-Ref Target - Figure 9-2

図 9-2: Debug Configuration ウィザード

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 109UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

7. [Confirm Perspective Switch] ダイアログ ボッ クスが表示されたら、 [Yes] をク リ ッ ク します。

次の図に示すよ うに [Debug] パースペクティブに linux_hello_Debug が開きます。

8. Linux カーネル シンボル ファイルを設定し、 デバッグ コンフ ィギュレーシ ョ ンで Linux OS 認識を有効にします。

SDK で Linux OS 認識機能を有効にしてアプリ ケーシ ョ ンをデバッグするためのオプシ ョ ンは複数あ り ます。

[Symbol File] ダイアログ ボッ クスのオプシ ョ ンは、 次のとおりです。

° [Enable Linux OS awareness]

OS 認識を有効にします。

° [Auto refresh on exec]

オンにする と、 実行中のプロセスがすべて更新され、 [Debug] ビューに表示されます。

オフにする と、 新しいプロセスは [Debug] ビューに表示されません。

° [Auto refresh on suspend]

オンにする と、 プロセッサが停止するたびにすべてのプロセスが再同期化されます。

オフにする と、 現在のプロセスのみが再同期化されます。

X-Ref Target - Figure 9-3

図 9-3: [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 110UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

9. [Debug] ビューで [linux_hello Debug (Local)] を右ク リ ッ ク し、 [Edit Linux_hello Debug] をク リ ッ ク します。

10. [Symbol Files] タブをク リ ッ ク します。

11. [Debug Context] ド ロ ップダウン リ ス ト から [/APU/ARM_Cortex_A9MPCore #0] を選択し、 [Add] をク リ ッ ク し

ます。

[Symbol File] ダイアログ ボッ クスが開きます。

12. 参照ボタン をク リ ッ ク します。

13. 前のセクシ ョ ンで Windows ホス ト マシン上に保存した vmlinux ファ イルのパスを指定し、 次の図に示すよ う

に [Enable OS awareness- the file is an OS kernel] をオンにします。

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: エンベデッ ド デザイン チュート リアル 111UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

16. [Continue] をク リ ッ ク します。

次の図に示す [Debug] パースペクティブが開きます。

Linux カーネルと ターゲッ ト上で実行中のプロセスが表示されます。

注記: Linux カーネルはホス ト マシン (Windows マシン) とは異なるシステム (Linux マシン) でビルド し、 そこで

Linux OS 認識アプリ ケーシ ョ ン デバッグを実行するので、 されるので、 シンボル ファ イルのパス マップ情報を

追加する必要があ り ます。

パス マップによ り ソース レベルのデバッグが可能になり、 スタ ッ ク ト レースや変数の表示、 ソース レベル ブ

レークポイン トの設定などを実行できます。

X-Ref Target - Figure 9-5

図 9-5: [Debug] パースペクテ ィブ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 112UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

デバッガーはパス マップ設定を使用して、 システムに含まれるすべての実行ファイルおよび共有ライブラ リの

シンボル ファイルを検索およびロード します。

X-Ref Target - Figure 9-6

図 9-6: パス マップ規則の設定

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 113UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

17. パス マップを設定します。

a. [Path Map] タブをク リ ッ ク します。

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

c. カーネルのソース パスは、 前の図に示すよ うに、 Linux マシンからのコンパイル ディレク ト リ パスです。

たとえば <petalinux-project>/build/tmp/work-shared/plnx_arm/kernel-source です。

デスティネーシ ョ ン パスは、 前の手順でカーネルをコピーしたホス ト ロケーシ ョ ンです。 たとえば

<local directory>/kernel-source です。

X-Ref Target - Figure 9-7

図 9-7: デバッグ コンフ ィギュレーシ ョ ンのパス マップ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 114UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した 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: エンベデッ ド デザイン チュート リアル 115UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

3. OS 認識デバッグ機能を使用して前のセクシ ョ ンで作成した linux_hello アプリ ケーシ ョ ンをデバッグするには、

109 ページの 「OS 認識デバッグを使用した Linux プロセスおよびスレッ ドのデバッグ」 の手順に従ってデバッ

グ コンフ ィギュレーシ ョ ンでパス マップを設定します。

ソース パスは、 アプリ ケーシ ョ ンをコンパイルするコンパイル パスです。 たとえば

<sdk_workspace/linux_hello/Debug/linux_hello.elf> です。

デスティネーシ ョ ン パスは、 アプリ ケーシ ョ ンを実行しているターゲッ ト パスです。 たとえば、

/linux_hello.elf を使用してターゲッ ト ボードで実行しているパスです。

4. [Debug] ビューで [linux_hello Debug (Local)] を右ク リ ッ ク し、 [Relaunch] をク リ ッ ク します。

X-Ref Target - Figure 9-10

図 9-10: デバッグ コンフ ィギュレーシ ョ ンのパス マップ情報

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 116UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

第 9 章: SDK を使用した Linux OS 認識デバッグ

5. SDK デバッガーで、 次を実行します。

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 コマンド ライン コマンドを使用して SDK で Linux OS 認識を有効にする方法もあ り ます。 このコマンド

の詳細は、 XSCT で osa コマンド ヘルプを参照してください。

X-Ref Target - Figure 9-11

図 9-11: main () からプロセスをデバッグ

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 117UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

付録 A

その他のリソースおよび法的通知

ザイリンクス リソース

アンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 ザイ リ ンクス サポート サイ ト を参照して

ください。

ソリューシ ョ ン センター

デバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 デザイ

ン アシスタン ト 、 デザイン アドバイザリ、 ト ラブルシューティングのヒン ト などが含まれます。

Xilinx Documentation Navigator およびデザイン ハブ

Xilinx 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: エンベデッ ド デザイン チュート リアル 118UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

付録 A: その他のリソースおよび法的通知

Xilinx Documentation NavigatorXilinx® Documentation Navigator は、 ザイ リ ンクス製品の使用時に資料へアクセスできるよ うにする無償のツールで

す。 Xilinx Documentation Navigator は、 Vivado® インス トーラーの一部と して提供されます。 システムにインス トー

ルした後、 [スタート ] → [すべてのプログラム] → [Xilinx Design Tools] → [DocNav] をク リ ッ ク し、 [DocNav] アイコン

をク リ ッ クする とアクセスできます。

Xilinx Documentation Navigator の使用方法については、『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910) [参照 5] の

このセクシ ョ ンを参照して ください。

関連するデザイン ハブ

Documentation Navigator に含まれるデザイン ハブを使用する と、 特定のデザイン タスクの資料、 ト レーニング、 情報

をすばやく入手できます。 このガイ ドで説明されるエンベデッ ド開発および手法には、 次のデザイン ハブが該当し

ます。

• PetaLinux ツール デザイン ハブ

• エンベデッ ド デザイン ハブ - ソフ ト ウェア開発キッ ト (SDK)

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

この資料に関連する ZIP ファ イルには、 チュート リ アルのデザイン ファ イルが含まれます。 このファイルは、 この

リ ンクからダウンロードできます。

デザイン ファ イルには、 各セクシ ョ ンの HDF ファ イルおよびすべてのセクシ ョ ンのソース コード とビルド済みイ

メージが含まれています。

ザイリンクス リソース

この資料では、 次のザイ リ ンクス Vivado Design Suite および Zynq®-7000 のガイ ドが参照されています。

注記: 日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. 『Zynq-7000 SoC テクニカル リ ファレンス マニュアル』 (UG585: 英語版、 日本語版)

2. SDK ヘルプ (UG782)

3. 『Zynq-7000 SoC ソフ ト ウェア開発者向けガイ ド』 (UG821: 英語版、 日本語版)

4. 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903)

5. 『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910)

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

7. 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート 、 インス トールおよびライセンス』 (UG973)

8. 『SDSoC 環境ユーザー ガイ ド』 (UG1027)

9. 『SDSoC 環境チュート リ アル: 概要』 (UG1028)

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 119UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

付録 A: その他のリソースおよび法的通知

10. 『UltraFast エンベデッ ド デザイン設計手法ガイ ド』 (UG1046: 英語版、 日本語版)

11. 『PetaLinux ツール資料: リ ファレンス ガイ ド』 (UG1144)

12. 『ザイ リ ンクス ソフ ト ウェア開発キッ ト (SDK) ユーザー ガイ ド : システム パフォーマンス解析』 (UG1145)

13. 『SDSoC 環境プラ ッ ト フォーム開発ガイ ド』 (UG1146)

14. 『SoC のシステム性能解析』 (XAPP1219: 英語版、 日本語版)

15. SDSoC 開発環境ヘルプ

サポート リソース

16. エンベデッ ド デザイン ツール ウェブ ページ

17. ザイ リ ンクス Zynq® ツール Wiki ページ

18. ザイ リ ンクス Zynq Linux Wiki ページ

19. ソフ ト ウェア ゾーン

その他のリソース

20. 『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)

21. 『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

22. ザイ リ ンクス GitHub ウェブサイ ト : https://github.com/xilinx

23. GitHub ZYNQ Cookbook: BFM シ ミ ュレーシ ョ ンの実行方法: https://github.com/imrickysu/ZYNQ-Cookbook/wiki/How-to-run-BFM-simulation

24. Linux カーネル モジュール プログラ ミ ング ガイ ド : http://tldp.org/LDP/lkmpg/2.6/html/index.html

ト レーニング リソース

ザイ リ ンクスでは、 この資料に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよび QuickTake ビデ

オを提供しています。 次のリ ンクから関連するビデオを参照して ください。

1. Vivado Design Suite QuickTake ビデオ: ザイ リ ンクスの SDK を使用して Zynq ブート イ メージを作成する方法

2. Vivado Design Suite QuickTake ビデオ チュート リ アル

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 120UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日

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

付録 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-2018 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含

まれるその他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれ

の保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

Zynq-7000 SoC: エンベデッ ド デザイン チュート リアル 121UG1165 (v2018.2) 2018 年 6 月 6 日 japan.xilinx.comUG1165 (v2018.3) 2018 年 12 月 5 日UG1165 (v2019.1) 2019 年 5 月 22 日