PetaLinux ツール資料: リファレンス ガイドഊ (UG1144) · PetaLinux ツール資料...

97
PetaLinux ツール資料 リファレンス ガイド UG1144 (v2017.2) 2017 6 29 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。

Transcript of PetaLinux ツール資料: リファレンス ガイドഊ (UG1144) · PetaLinux ツール資料...

PetaLinux ツール資料

リファレンス ガイド

UG1144 (v2017.2) 2017 年 6 月 29 日

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

リファレンス ガイド 2UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

改訂履歴

2017 年 6 月 29 日: Vivado® Design Suite 2017.2 リ リース。 内容の変更なし。

日付 バージョ ン 内容

2017 年 4 月 5 日 2017.1 PetaLinux ツール 2017.1 リ リースに伴う更新。

目次

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

第 1章: PetaLinux ツール資料はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

インス トール要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

インス トール手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

PetaLinux 作業環境のセッ ト アップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

PetaLinux BSP のインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Vivado によるハード ウェア プラ ッ ト フォームの作成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

新規 PetaLinux プロジェク トの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

バージ ョ ン管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

ハードウェア コンフ ィギュレーシ ョ ンのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

システム イ メージのビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Zynq UltraScale+ MPSoC 用ブート イ メージの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Zynq ファ ミ リ デバイス用ブート イ メージの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

MicroBlaze 用ブート イ メージの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

ビルド済みイ メージのパッケージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

ビルド済みイ メージでの petalinux-boot コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

QEMU での PetaLinux イ メージのブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

SD カードを使用したハード ウェア上での PetaLinux イ メージのブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

JTAG を使用したハードウェア上での PetaLinux イ メージのブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

TFTP を使用したハード ウェア上での PetaLinux イ メージのブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

BSP のパッケージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

ファームウェア バージ ョ ンの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

ルート ファ イル システム タイプの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

ブート イ メージ ス ト レージの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

プライマ リ フラ ッシュ パーティシ ョ ンの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

ベース ルート ファ イル システムの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

イ メージ サイズの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

INITRAMFS ブートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

TFTP ブートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

NFS ブートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

SD カード外部ファイル システム ブートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ビルド済みアプリ ケーシ ョ ンの取り込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

ビルド済みモジュールの取り込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

カスタム アプリ ケーシ ョ ンの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

カスタム モジュールの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

ユーザー アプリ ケーシ ョ ンのビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

ユーザー アプリ ケーシ ョ ンのテス ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

ユーザー モジュールのビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

PetaLinux の自動ログイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

リファレンス ガイド 3UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

起動時のアプリ ケーシ ョ ン自動実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

QEMU による Linux カーネルのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

TCF エージェン トによるアプリ ケーシ ョ ンのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

GDB による Zynq UltraScale+ MPSoC アプリ ケーシ ョ ンのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

out-of-tree ビルドの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

デバイス ツ リーの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

U-Boot の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

第 2章: Yocto の機能プロジェク トでの BitBake へのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Yocto e-SDK レイヤーから petalinux-image-full.bb へのレシピの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

パッケージ グループの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

sstate-cache の共有 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

付録 A: PetaLinux プロジェク トの構造

付録 B: プロジェク ト内での FSBL、 PMUFW および ATF の生成

付録 C: [Auto Config Settings] サブメニュー

付録 D: QEMU 仮想ネッ トワーキング モード

付録 E: QEMU でサポート されるザイリンクス IP モデル

付録 F: Xen Zynq Ultrascale+ MPSoC の例

付録 G: 廃止された機能

付録 H: 一般的なエラーと解決方法

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

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

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

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

リファレンス ガイド 4UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1章

PetaLinux ツール資料

はじめに

PetaLinux は FPGA ベースのシステム オン チップ (SoC) デザイン専用のエンベデッ ド Linux システム開発キッ トです。

このユーザー ガイ ドでは、 PetaLinux の全体的な使用方法について説明します。

注記:読者には、 Linux コマンドの実行方法など Linux の基礎知識があるこ とを前提と します。 また、 読者は OS の

ビッ ト バージ ョ ン、 Linux ディ ス ト リ ビューシ ョ ンおよびセキュ リティ権限など OS およびホス ト システムの詳細に

ついても把握しておく必要があ り ます。

新しい PetaLinux ツールには次のものが含まれます。

1. Yocto エクステンシブル SDK

表 1-1 に、 インス トールされる 4 つのエクステンシブル SDK を示します。

Yocto エクステンシブル SDK (e-SDK) は次の内容で構成されます。

a. レイヤー : アーキテクチャに対するすべてのレイヤーが含まれます。 Yocto e-SDk には core、 meta-oe および

その他の一般的なレイヤーが含まれます。

表 1‐1: エクステンシブル SDK

パス アーキテクチャ

$PETALINUX/components/yocto/source/aarch64 Zynq® UltraScale+™ MPSoC 用

$PETALINUX/components/yocto/source/arm Zynq 用

$PETALINUX/components/yocto/source/microblaze_full MicroBlaze™ 完全デザイン用

$PETALINUX/components/yocto/source/microblaze_lite MicroBlaze 軽量デザイン用

表 1‐2:ザイリンクス提供のレイヤー

レイヤー レシピ

meta-xilinx Linux カーネル、 U-Boot および ARM Trusted Firmware (ATF) のレシピが含まれます。

meta-xilinx-tools すべてのエンベデッ ド ソフ ト ウェア アプリ ケーシ ョ ン (fsbl、 pmufw、 fsboot、デバイス

ツ リー ) のレシピが含まれます。

meta-petalinux ディ ス ト リ ビューシ ョ ン レシピおよびパッケージ グループが含まれます。

petalinux-image-minimal --> 小機能セッ ト

petalinux-image-full ---> 完全機能セッ ト

meta-openamp OpenAMP レシピおよびコンフ ィギュレーシ ョ ンが含まれます。

meta-linaro-toolchain Zynq および ZynqMP 用のツール チェーン レシピが含まれます。

リファレンス ガイド 5UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

例: Zynq UltraScale+ MPSoC の場合: $PETALINUX/components/yocto/source/aarch64/layers

b. sstate-cache: BitBake によって再ビルドが不要と判断されたコンポーネン ト を除き、 OpenEmbedded ビルド シ

ステムはすべてを新規にビルドする仕様となっています。 基本的に、 新規にビルド した方がすべてのコン

ポーネン ト を 新の状態でビルドできるため、 古くなったデータによる不具合を防ぐこ とができる利点が

あ り ます。

Yocto プロジェク トは、 インク リ メンタル ビルドをサポート した共有ステート コードをインプリ メン ト し

ています。 入力タスクに変化がなければ、 すべてのタスクでビルドの中間生成物を保存し、 これらを再利

用するこ とで、 ビルド時間を短縮します。

例: Zynq UltraScale+ MPSoC の sstate-cache の場所:$PETALINUX/components/yocto/source/aarch64/sstate-cache

c. sysroots: ホス トおよびターゲッ トの sysroot が含まれます。

例: Zynq UltraScale+ MPSoC の sysroot の場所:$PETALINUX/components/yocto/source/aarch64/sysroots

2. 小ダウンロード

BitBake はまずプリ ミ ラーをチェッ ク した後、 アップス ト リームでソース ファ イルを検出します。 プリ ミ ラー

は、 DL_DIR 変数によって定義されたディ レク ト リ以外のディ レク ト リ を共有している場合に適しています。

プ リ ミ ラーはツール内の共有ディ レク ト リ を指し示します。 ツールのプロジェク トはすべてこれらのプリ ミ

ラーを使用し、 こ こから ソース コードをフェ ッチします。

ツールのプリ ミ ラーは、 次の場所を指し示します。 $PETALINUX/components/yocto/downloads

downloads ディレク ト リには、 Linux カーネル、 U-Boot およびその他の 小ユーティ リ ティのソース コードが

tar アーカイブと して格納されます。

3. XSCT およびツール チェーン

PetaLinux ツールはすべてのエンベデッ ド ソフ ト ウェア アプリ ケーシ ョ ンの土台に XSCT を使用します。

ZynqMP および Zynq デバイスの場合、 Yocto のツール チェーン (meta-linaro-toolchain) を使用します。 MicroBlaze

の場合、 SDK ツール チェーンを使用します。

4. PetaLinux コマンド

これには、 必要なすべての petalinux コマンドが含まれます。

リファレンス ガイド 6UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

インストール要件

PetaLinux ツールのインス トール要件は次のとおりです。

• ワークステーシ ョ ンの 小要件

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

° Pentium 4 プロセッサ 2GHz または同等品 (4 コア以上)

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

° サポート される OS:

- RHEL 6.7/6.8 (64 ビッ ト )

注記:限定的/条件付きサポートのみで、 回避策があ り ます。 RHEL および Cent OS 6.X には devtoolset-2 パッ

ケージをインス トールします。 サポートはザイ リ ンクス PetaLinux イ メージに限定されます。 PetaLinux イ

メージの外部で RHEL 6.X と devtools-2 の組み合わせでファイル破損が発生した場合、 ザイ リ ンクスのサ

ポート対象となり ません。 これは 2017.3 ではサポート されません。

- RHEL 7.2/7.3 (64 ビッ ト )

- CentOS 7.2/7.3 (64 ビッ ト )

- Ubuntu 16.04.1 (64 ビッ ト )

• 一部のコマンド実行には、 root アクセス権限が必要です。 PetaLinux ツールは通常ユーザーと してインス トール

する必要があ り ます。

• PetaLinux を使用するには、 多くの標準開発ツールおよびライブラ リ を Linux ホス ト ワークステーシ ョ ンにイン

ス トールする必要があ り ます。 ホス ト Linux にインス トールする必要のあるライブラ リ とツールは、 次の表に

示すとおりです。 次に示す Linux ワークステーシ ョ ン環境はいずれも PetaLinux ツールで必要と される 32 ビッ

ト ライブラ リ を備えています。 これ以外にホス ト上で 32 ビッ ト ライブラ リ を必要とするツール チェーンを使

用する場合、 petalinux-build を実行する前にこれらのライブラ リ をインス トールしておく必要があ り ます。

表 1-3 に、 必要なパッケージおよびこれらパッケージを各種 Linux ワークステーシ ョ ン環境にインス トールする

方法をま とめます。

表 1‐3:パッケージと  Linux ワークステーシ ョ ン環境

ツール/ライブラリ CentOS 7.2/7.3 RHEL6.7/6.8(1) RHEL7.2/7.3 Ubuntu 16.04.1

python python: 3.4.0 python: 3.4.0 python: 3.4.0 python: 3.4.0

dos2unix dos2unix-6.0.3-4.el7.x

86_64.rpm

dos2unix-3.1-37.el6.x

86_64.rpm

dos2unix-6.0.3-4.

el7.x86_64.rpm

tofrodos_1.7.13

+ds-2.debian.tar.xz

ip iproute-3.10.0-74.el7.x

86_64.rpm

iproute-2.6.32-54.el6.

x86_64.rpm

iproute-3.10.0-74.

el7.x86_64.rpm

iproute2

4.3.0-1ubuntu3

gawk gawk-4.0.2-4.el7.x86_

64.rpm

gawk-3.1.7-6.el6.x86_

64.rpm

gawk-4.0.2-4.el7.

x86_64.rpm

gawk

(1:4.1.3+dfsg-0.1)

xvfb xorg-x11-server-Xvfb

-1.15.0-7.el7.x86_64.

rpm

xorg-x11-server-Xvfb-

1.17.4-9.5.el6_8.x86_

64.rpm

xorg-x11-server-X

vfb-1.15.0-7.el7.x

86_64.rpm

xvfb

(2:1.18.3-1ubuntu

2.3)

gcc (RHEL では

devtoolset-2 を

使用)

gcc 4.8.3 gcc 4.8.3 gcc 4.8.5 gcc 4.8

リファレンス ガイド 7UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

git git 1.8.3 git 1.7.1 git 1.8.3 git 1.7.1 以降

make make 3.81 make 3.81 make 3.82 make 3.81

netstat net-tools

2.0

net-tools 1.60 net-tools

2.0

net-tools

ncurses

devel

ncurses

-devel

5.9-13

ncurses

-devel

5.7-4

ncurses

-devel

5.9-13

libncurses5

-dev

tftp server tftp-server tftp-server tftp-server tftpd

zlib devel

(同じバージ ョ ン

の 32 ビッ ト版も

インス トールが

必要)

zlib-devel-1.2.7-17.el7.

x86_64.rpm

zlib-devel-1.2.3-29.el6.

x86_64.rpm

zlib-devel-1.2.7-17.

el7.x86_64.rpm

i386/zlib1g-dev/1:

1.2.8.dfsg-2ubuntu4

-dev

openssl

devel

openssl

-devel 1.0

openssl

-devel 1.0

openssl

-devel 1.0

libssl

-dev

flex flex 2.5.37 flex 2.5.35 flex 2.5.37 flex

bison bison-2.7 bison-2.4.1 bison-2.7.4 bison

libselinux libselinux

2.2.2

libselinux

2.0.94

libselinux

2.2.2

libselinux1

gnupg gnupg gnupg gnupg gnupg

wget wget wget wget wget

diffstat diffstat diffstat diffstat diffstat

chrpath chrpath chrpath chrpath chrpath

socat socat socat socat socat

xterm xterm xterm xterm xterm

autoconf autoconf autoconf autoconf autoconf

libtool libtool libtool libtool libtool

tar tar:1.24 tar:1.24 tar:1.24 tar:1.24

unzip unzip unzip unzip unzip

texinfo texinfo texinfo texinfo texinfo

zlib1g-dev - - - zlib1g-dev

gcc-multilib - - - gcc-multilib

build-essential - - - build-essential

libsdl1.2-dev - - - libsdl1.2-dev

libglib2.0-dev - - - libglib2.0-dev

SDL-devel SDL-devel SDL-devel SDL-devel -

glibc-devel glibc-devel glibc-devel glibc-devel -

表 1‐3:パッケージと  Linux ワークステーシ ョ ン環境 (続き)

ツール/ライブラリ CentOS 7.2/7.3 RHEL6.7/6.8(1) RHEL7.2/7.3 Ubuntu 16.04.1

リファレンス ガイド 8UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

注意: ホス ト システムの正しいパッケージ管理手順が分からない場合は、 システム管理者に問い合わせてください。

重要: PetaLinux ツールは、 ホス ト システムの /bin/sh が bash であるこ とを必要と します。

Ubuntu ディ ス ト リ ビューシ ョ ンを使用しており、 /bin/sh が dash の場合、 システム管理者に問い合わせて

sudo dpkg-reconfigure dash コマンドでデフォルト を変更するよ うにしてください。

重要: PetaLinux v2017.1 は Vivado 2017.1 でのみ動作します。

インストール手順

前提条件

PetaLinux ツールをインス トールするための前提条件は次のとおりです。

• PetaLinux ツールのインス トール要件が満たされているこ と。詳細は、「インス トール要件」 を参照してください。

• PetaLinux リ リース パッケージをダウンロード済みであるこ と。 PetaLinux インス トーラーは PetaLinux ダウン

ロード ページからダウンロードできます。

PetaLinux ツール インストーラーの実行

PetaLinux ツールのインス トール手順は簡単です。 オプシ ョ ンを指定しない場合、 PetaLinux ツールはカレン ト ディ

レク ト リにインス トールされます。 インス トール先パスをオプシ ョ ンで指定するこ と もできます。

例: PetaLinux ツールを /opt/pkg/petalinux にインス トールする場合:

$ mkdir -p /opt/pkg/petalinux$ ./petalinux-v2017.1-final-installer.run /opt/pkg/petalinux

これで、 PetaLinux ツールが /opt/pkg/petalinux ディ レク ト リにインス トールされます。

32 ビッ ト glibc glibc.i686 - glibc.i686 -

glib2-devel glib2-devel glib2-devel glib2-devel -

automake automake automake automake -

screen screen screen screen screen

pax pax pax pax pax

gzip gzip gzip gzip gzip

devtoolset-2 - devtoolset-2 - -

注記:1. 限定的/条件付きサポートのみで、回避策があ り ます。 RHEL および Cent OS 6.X には devtools-2 パッケージをインス トールしま

す。サポートはザイ リ ンクス PetaLinux イ メージに限定されます。 PetaLinux イ メージの外部で RHEL 6.X と devtools-2 の組み合

わせでファ イル破損が発生した場合、 ザイ リ ンクスのサポート対象とな り ません。 これは 2017.3 ではサポート されません。

表 1‐3:パッケージと  Linux ワークステーシ ョ ン環境 (続き)

ツール/ライブラリ CentOS 7.2/7.3 RHEL6.7/6.8(1) RHEL7.2/7.3 Ubuntu 16.04.1

リファレンス ガイド 9UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

重要: インス トール後にインス トール ディ レク ト リ を移動またはコピーするこ とはできません。 上の例では、

/opt/pkg/petalinux は移動もコピーもできません。

PetaLinux ツールをインス トールするには、 PetaLinux エンド ユーザー使用許諾契約 (EULA) を読んで内容に同意する

必要があ り ます。 使用許諾契約の内容は、 インス トール実行前に読むこ と もできます。 使用許諾契約の内容は、 次

に示すプレーン ASCII 形式のテキス ト ファ イルと して提供されており、 別途保存しておく こ とができます。

• $PETALINUX/etc/license/petalinux_EULA.txt: EULA は PetaLinux に適用される権利と制限について

の詳細を規定しています。

• $PETALINUX/etc/license/Third_Party_Software_End_User_License_Agreement.txt: サード

パーティ使用許諾契約は、 PetaLinux ツールの再配布可能および再配布不能コンポーネン トのライセンスの詳細

を規定しています。

注記: PetaLinux ツールのインス トールと実行にライセンスは必要あ り ません。

デフォルトでは、 ツールの使用状況に関する統計データをザイ リ ンクスに送信する WebTalk オプシ ョ ンが有効です。

WebTalk 機能を無効にするには、 petalinux-util --webtalk コマンドを実行します。

重要: PetaLinux コマンドを実行する前に、 まず PetaLinux の settings スク リプ ト を実行する必要があ り ます。 詳細は、

「PetaLinux 作業環境のセッ ト アップ」 を参照してください。

$ petalinux-util --webtalk off

ト ラブルシューテ ィング

このセクシ ョ ンでは、 PetaLinux ツールをインス トールする際に発生する一般的な問題について説明します。

PetaLinux ツールのインス トールに失敗した場合、 PetaLinux のインス トール ディ レク ト リに

$PETALINUX/post-install.log という ファ イルが生成されます。

表 1‐4: PetaLinux のインストールに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

WARNING: You have less than 1 GB

free space on the installation drive問題の説明

インス トール先ド ライブの空き容量が不足しているこ とを示す警告メ ッセージ

です。 空き容量が不足する と、 インス トール後にハードウェア プロジェク ト

やソフ ト ウェア プロジェク ト を開発できないこ とがあ り ます。

解決方法

• インス トール先ド ライブをク リーンアップして空き容量を増やします。

または

• PetaLinux を別のハード ディ スク ド ラ イブにインス トールします。

WARNING: No tftp server found 問題の説明

ワークステーシ ョ ンで TFTP サービスが実行されていないこ とを示す警告メ ッ

セージです。 TFTP サービスが実行されていないと、 U-Boot のネッ ト ワーク

/TFTP 機能を使用して Linux システム イ メージをターゲッ ト システムにダウン

ロードできません。 その他のブート モードの場合、 この警告メ ッセージは無

視できます。

解決方法

ワークステーシ ョ ンで TFTP サービスを有効にします。 サービスを有効にする

方法が分からない場合は、 システム管理者に問い合わせてください。

リファレンス ガイド 10UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ERROR: GCC is not installed -

unable to continue. Please install and

retry

問題の説明

ワークステーシ ョ ンに gcc がインス トールされていないこ とを示すエラー メ ッ

セージです。

解決方法

Linux ワークステーシ ョ ン パッケージ管理システムを使用して gcc をインス

トールします。 方法が分からない場合は、 システム管理者に問い合わせてくだ

さい。

ERROR: You are missing the

following system tools required by

PetaLinux: missing-tools-list

または

ERROR: You are missing these

development libraries required by

PetaLinux: missing-library-list

問題の説明

「missing-tools-list」 または 「missing-library-list」 に表示されている必須ツール

またはライブラ リが不足しているこ とを示すエラー メ ッセージです。

解決方法

不足しているツールのパッケージをインス トールします。 詳細は、 「インス

トール要件」 を参照して ください。

Failed to open PetaLinux lib. 問題の説明

PetaLinux ライブラ リのロードに失敗したこ とを示すエラー メ ッセージです。

次の理由が考えられます。

• PetaLinux settings.sh がロード されていない。

• 動作中の Linux カーネルで SELinux が有効に設定されている。 この場合、 セ

キュ リ ティ コンテキス トおよびライブラ リのロードに関して問題が発生す

るこ とがあ り ます。

解決方法

1. 上位の PetaLinux ディレク ト リから settings.sh スク リプ ト を実行し

ます。詳細は、 「PetaLinux 作業環境のセッ ト アップ」 を参照してください。

2. SELinux を有効にしている場合、 SELinux が 「enforcing mode」 かど うかを

確認します。

SELinux が 「enforcing mode」 に設定されている場合は 「permissive mode」 に変

更するか (詳細は SELinux マニュアルを参照)、 次のコマンドを実行してライブ

ラ リにアクセスできるよ うにセキュ リ ティ コンテキス ト を変更します (詳細は

以下を参照)。

$ cd $PETALINUX/tools/common/petalinux/lib

$ chcon -R -t textrel_shlib_t lib

表 1‐4: PetaLinux のインストールに関する ト ラブルシューテ ィング (続き)

問題/エラー メ ッセージ 説明/解決方法

リファレンス ガイド 11UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

PetaLinux 作業環境のセッ トアップ

インス トール完了後、 付属の settings スク リプ ト を実行する と残りのセッ ト アップは自動的に完了します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux ツールのインス トールが完了しているこ と。 詳細は、 「インス トール手順」 を参照してください。

• 「/bin/sh」 が bash であるこ と。

PetaLinux 作業環境のセッ トアップ手順

1. 適切な settings スク リプ ト を実行します。

• ユーザー ログイン シェルが bash の場合:

$ source <path-to-installed-PetaLinux>/settings.sh

• ユーザー ログイン シェルが C シェルの場合:

$ source <path-to-installed-PetaLinux>/settings.csh

セッ ト アップ スク リプ ト を初めて実行する と、 次のよ うな出力が表示されます。

PetaLinux environment set to '/opt/pkg/petalinux'INFO: Checking free disk spaceINFO: Checking installed toolsINFO: Checking installed development librariesINFO: Checking network and other servicesWARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution

2. 作業環境が正し くセッ ト アップされたこ とを確認します。

$ echo $PETALINUX/opt/pkg/petalinux

環境変数 「$PETALINUX」 には PetaLinux のインス トール パスが格納されます。 実際の出力は、 PetaLinux のインス

トール パスによ り異な り ます。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 PetaLinux 作業環境をセッ ト アップする際に発生する一般的な問題について説明します。

表 1‐5: PetaLinux 作業環境に関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

WARNING: /bin/sh is not bash 問題の説明

デフォルトのシェルが dash にリ ンク されているこ とを示す警告メ ッセー

ジです。

解決方法

Ubuntu Forum に記載の手順を実行します。

リファレンス ガイド 12UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

PetaLinux BSP のインストール

PetaLinux リ ファレンス ボード サポート パッケージ (BSP) はそのまま使用可能な リ ファレンス デザインで、 個々の

プロジェク トに合わせてカスタマイズできます。 これらはインス トール可能 BSP ファ イルの形で提供され、 必要な

デザインおよびコンフ ィギュレーシ ョ ン ファ イル、 ビルドおよびテス ト済みのハードウェアおよびソフ ト ウェア イ

メージがすべて含まれており、 ボードへのダウンロードまたは QEMU システム エミ ュレーシ ョ ン環境でのブートが

すぐに行えます。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux BSP がダウンロード されているこ と。 PetaLinux BSP は PetaLinux ダウンロード ページからダウンロー

ドできます。

• PetaLinux 作業環境のセッ ト アップが完了しているこ と。 詳細は、 「PetaLinux 作業環境のセッ ト アップ」 を参照

してください。

PetaLinux BSP のインストール手順

BSP をインス トールする手順は次のとおりです。

1. PetaLinux プロジェク ト を作成するディレク ト リに移動します。 たとえば /home/user 直下にプロジェク ト を作成

する場合は次のよ うに実行します。

$ cd /home/user

2. コマンド コンソールで petalinux-create コマンドを実行します。

petalinux-create -t project -s <path-to-bsp>

参照先のボードは、 インス トールする BSP によって決ま り ます。 次のよ うな表示が出力されます。

INFO: Create project: INFO: Projects: INFO: * xilinx-zcu102-v2017.1-final.bspINFO: has been successfully installed to /home/user/INFO: New project successfully created in /home/user/

指定したディ レク ト リが NFS の場合、 TMPDIR が /tmp/<projname_timestamp> に変更されます。

/tmp/<projname_timestamp> も NFS の場合はエラーになり ます。

上の例で、 petalinux-create コマンドを実行する と BSP から抽出されたインス トール中のプロジェク トがディ スプレ

イ コンソールにリ ス ト表示されます。 /home/user に移動して ls を実行する と、 インス トール済みプロジェク トが表

示されます。

リファレンス ガイド 13UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ト ラブルシューテ ィング

このセクシ ョ ンでは、 PetaLinux BSP をインス トールする際に発生する一般的な問題について説明します。

BSP のファイル名

出荷されているシ リ コンおよびボードには複数のリ ビジ ョ ンがあ り ます。 表 1-7 に、 Zynq UltraScale ファ ミ リでサ

ポート されるダウンロード可能 BSP の一覧を示します。

BSP はこちらのページからダウンロードできます。

Vivado によるハードウェア プラッ ト フォームの作成

このセクシ ョ ンでは、 PetaLinux プロジェク トで使用できるよ うにハード ウェア プラ ッ ト フォームを設定する方法に

ついて説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• Vivado® Design Suite がインス トールされているこ と。 Vivado Design Suite は Vivado デザイン ツールのダウン

ロード ページからダウンロードできます。

• Vivado ツール作業環境がセッ ト アップされているこ と。 まだの場合は、 次のよ うに適切な settings スク リプ ト を

実行してください。

$ source <path-to-installed-Xilinx-Vivado>/settings64.sh

• ザイ リ ンクス Vivado および SDK ツールの使用法を習得しているこ と。

表 1‐6: PetaLinux BSP のインストールに関する ト ラブルシューティ ング

問題/エラー メ ッセージ 説明/解決方法

petalinux-create: command not

found問題の説明

petalinux-create コマンドが見つからず、 BSP のインス トールが中止されたこ と

を示すメ ッセージです。

解決方法

PetaLinux ツールの環境をセッ ト アップする必要があ り ます。 セッ ト アップ方

法の詳細は、 「PetaLinux 作業環境のセッ ト アップ」 を参照してください。

表 1‐7: BSP のファイル名

プラッ ト フォーム シリコン リビジ ョ ン ボード  リビジ ョ ン PetaLinux BSP ファイル名

ZCU102

1.0 シ リ コン (zu9-es1)

Rev-B

xilinx-zcu102-zu9-es1-v2017.1-final.bspRev-C

Rev-D

3.0 シ リ コン (zu9-es2) Rev-1.0 xilinx-zcu102-zu9-es2-rev1.0-v2017.1-final.bsp

プロダクシ ョ ン シ リ コン (zu9) Rev-1.0 xilinx-zcu102-v2017.1-final.bsp

リファレンス ガイド 14UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

Linux 用にハードウェア プラッ ト フォームを設定する

独自のハードウェア プラ ッ ト フォームを Vivado を使用して作成できます。ハード ウェア プラ ッ ト フォームをどのよ

うな方法で作成および設定したかにかかわらず、 ハード ウェア プラ ッ ト フォームを Linux で使用できるよ うにする

には、 いくつかのハードウェア IP およびソフ ト ウェア プラ ッ ト フォームの設定変更が必要です。 次に、 具体的な方

法を示します。

Zynq UltraScale+ MPSoC

Zynq® UltraScale+™ MPSoC ハードウェア プロジェク トで Linux をブートするためのハードウェア要件は次のとおり

です。

1. 外部メモ リ コン ト ローラーと 64MB 以上のメモ リ (必須)

2. UART (必須)

重要: ソフ ト IP を使用する場合、 割り込み信号を接続する必要があ り ます。

3. QSPI フラ ッシュ、 SD/MMC などの不揮発性メモ リ (オプシ ョ ン)

4. イーサネッ ト (オプシ ョ ン。 ネッ ト ワーク アクセスを利用する場合は必須)

重要: ソフ ト IP または外部 PHY デバイスで割り込みを使用する場合、 割り込み信号を接続する必要があ り ます。

Zynq‐7000

Zynq-7000 ハードウェア プロジェク トで Linux をブートするためのハードウェア要件は次のとおりです。

1. 1 個のト リプル タイマー カウンター (TTC) (必須)

重要: 複数の TTC を有効にした場合、 Zynq-7000 Linux カーネルはデバイス ツ リーの 初の TTC ブロ ッ クを使用しま

す。 この TTC がほかで使用されていないこ とを確認する必要があ り ます。

2. 外部メモ リ コン ト ローラーと 32MB 以上のメモ リ (必須)

3. UART (必須)

重要: ソフ ト IP を使用する場合、 割り込み信号を接続する必要があ り ます。

4. QSPI フラ ッシュ、 SD/MMC などの不揮発性メモ リ (オプシ ョ ン)

5. イーサネッ ト (オプシ ョ ン。 ネッ ト ワーク アクセスを利用する場合は必須)

重要: ソフ ト IP または外部 PHY デバイスで割り込みを使用する場合、 割り込み信号を接続する必要があ り ます。

リファレンス ガイド 15UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

MicroBlaze (AXI)

MicroBlaze™ ハードウェア プロジェク トで Linux をブートするための要件は次のとおりです。

1. IP コアのチェッ ク リ ス ト :

° 外部メモ リ コン ト ローラーと 32MB 以上のメモ リ (必須)

° 割り込みを接続したデュアル チャネル タイマー (必須)

° 割り込みを接続した UART (必須)

° リ ニア フラ ッシュや SPI フラ ッシュなどの不揮発性メモ リ (オプシ ョ ン)

° 割り込みを接続したイーサネッ ト (オプシ ョ ン。 ネッ ト ワーク アクセスを利用する場合は必須)

2. MicroBlaze CPU コンフ ィギュレーシ ョ ン:

° MicroBlaze Configuration Wizard でコンフ ィギュレーシ ョ ン テンプレートの [Linux with MMU] または

[Low-end Linux with MMU] をク リ ッ ク して MicroBlaze の MMU サポート を有効にします。

重要: テンプレートによって有効にされるオプシ ョ ンに関係する命令セッ トは、 無効にした場合の影響を十分に理解

している場合を除き、 無効にしないでください。

° MicroBlaze 初期ブート ローダー (FS-BOOT) には BRAM の 小要件があ り ます。 不揮発性メモ リからシステ

ムをブートする場合、 パラレル フラ ッシュでは 4KB、 SPI フラ ッシュでは 8KB が必要です。

PetaLinux プロジェク トへのハードウェア プラッ ト フォームのエクスポート

このセクシ ョ ンでは、 ハード ウェア プラ ッ ト フォームを PetaLinux プロジェク トにエクスポートする方法について説

明します。

前提条件

このセクシ ョ ンでは、 Vivado Design Suite を使用してハード ウェア プラ ッ ト フォームが作成済みであるものと仮定し

ます。 詳細は、 「Vivado によるハード ウェア プラ ッ ト フォームの作成」 を参照してください。

ハードウェア プラッ ト フォームをエクスポートする

ハードウェア プロジェク トの設定が完了したら、 ハード ウェア ビッ ト ス ト リームをビルド します。 PetaLinux プロ

ジェク トでは、 プロセッシング システムに関する情報を含んだハードウェア記述ファイル (.hdf ファ イル) が必要

です。 ハード ウェア記述ファイルは、 Vivado で [Export Hardware] を実行する と生成できます。

このハード ウェア記述ファイルに基づいて、 PetaLinux ツールはデバイス ツ リー ソース ファ イル、 U-Boot config

ヘッダー ファ イルを生成し、 一部のザイ リ ンクス IP カーネル ド ラ イバーを有効にします。 詳細については後のセク

シ ョ ンで説明します。

Zynq UltraScale+ MPSoC プラ ッ ト フォームの場合、プラ ッ ト フォーム管理ユニッ ト ファームウェア (PMUFW) および

ATF を使用してブートする必要があ り ます。 PMUFW および ATF のビルド方法は、 付録 B 「プロジェク ト内での

FSBL、 PMUFW および ATF の生成」 を参照してください。

リファレンス ガイド 16UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

新規 PetaLinux プロジェク トの作成

このセクシ ョ ンでは、 新規 PetaLinux プロジェク ト を作成する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux 作業環境のセッ ト アップが完了しているものと仮定します。 詳細は、 「PetaLinux 作

業環境のセッ ト アップ」 を参照してください。

新規プロジェク ト を作成する

新規 PetaLinux プロジェク ト を作成するには、 petalinux-create コマンドを実行します。

$ petalinux-create --type project --template <CPU_TYPE> --name <PROJECT_NAME>

パラ メーターは次のとおりです。

• --template <CPU_TYPE> - サポート される CPU タイプは Zynq UltraScale+ MPSoC、 Zynq および MicroBlaze

です。

• --name <PROJECT_NAME> - ビルドするプロジェク ト名を指定します。

このコマンドを実行する と、 デフォルト テンプレートから新規 PetaLinux プロジェク ト フォルダーが作成されます。

この後の手順で、 先に作成したハード ウェア プロジェク トに合わせてこれらの設定をカスタマイズします。

ヒン ト : bsp の代わりに --template オプシ ョ ンを使用した場合、次のよ うに petalinux-config コマンドを使用してボード

デザインに近いデフォルト ボード設定を選択できます。

1. petalinux-config--get-hw-description=<PATH-TO-HDF-DIRECTORY>

2. CONFIG_SUBSYSTEM_MACHINE_NAME を必要に応じて設定します。 設定可能な値は、 kc705-full、 kc705-lite、

ac701-full、 ac701-lite、 kcu105、 zc702、 zc706、 zedboard、 zcu102、 zcu102-revb、 zcu106、 zc1751-dc1 および

zc1751-dc2 です。

ヒン ト : PetaLinux プロジェク トの構造の詳細は、 付録 A 「PetaLinux プロジェク トの構造」 を参照してください。

注意: PetaLinux プロジェク ト を NFS に作成した場合、 TMPDIR が /tmp/<projname_timestamp> に変更されます。

/tmp/<projname_timestamp> も NFS の場合はエラーになり ます。 TMPDIR をローカル ス ト レージに変更するには、

petalinux-config メニューから [Yocto-settings --> TMPDIR] を選択します。 複数の異なる PetaLinux プロジェク トで

TMPDIR に同じディ レク ト リ を設定しないでください。 同じディ レク ト リ を設定する とビルド エラーになり ます。

リファレンス ガイド 17UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

バージ ョ ン管理

このセクシ ョ ンでは、 PetaLinux プロジェク トのバージ ョ ン管理について説明します。

前提条件

このセクシ ョ ンでは、 新規 PetaLinux プロジェク ト を作成済み、 または既存の PetaLinux プロジェク トが存在するも

のと仮定します。 PetaLinux プロジェク トの作成方法の詳細は、 「新規 PetaLinux プロジェク トの作成」 を参照してく

ださい。

バージ ョ ン管理

PetaLinux プロジェク ト ディ レク ト リ <plnx-proj-root> に対してバージ ョ ン管理が可能です。 ただし次のものは

除きます。

• <plnx-proj-root>/.petalinux

• <plnx-proj-root>/build/

• <plnx-proj-root>/images/

• <plnx-proj-root>/pre-built/

• <plnx-proj-root>/project-spec/meta-plnx-generated/

プロジェク トの .gitignore を次の内容で置き換えます。

*/config.oldbuild/images/linux/.petalinux/*!.petalinux/metadata*.o*.jou*.log.metadata/meta-plnx-generated/.Xil/

注記: ソース コン ト ロールへ送信する前に PetaLinux プロジェク ト をク リーンアップする必要があ り ます。

重要: 現時点で、 PetaLinux プロジェク トのバージ ョ ン管理は完全ではあ り ません。 いくつかのファイルはタイムス

タンプまたはパスが更新されます。 これらは明示的に .gitignore に追加する必要があ り ます。

リファレンス ガイド 18UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ハードウェア コンフ ィギュレーシ ョ ンのインポート

このセクシ ョ ンでは、 既存の (または新規に作成した) PetaLinux プロジェク ト を新しいハード ウェア コンフ ィギュ

レーシ ョ ンで更新する方法について説明します。 これによ り、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを

使用して新しいハード ウェア プラ ッ ト フォームにカスタマイズした Linux システムをビルドできるよ うにな り ます。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• ハードウェア プラ ッ ト フォームのエクスポート と .hdf ファ イルの生成が完了しているこ と。 詳細は、 「ハード

ウェア プラ ッ ト フォームをエクスポートする」 を参照して ください。

• 新規 PetaLinux プロジェク ト を作成済み、 または既存の PetaLinux プロジェク トが存在するこ と。 PetaLinux プロ

ジェク トの作成方法の詳細は、 「新規 PetaLinux プロジェク トの作成」 を参照してください。

ハードウェア コンフ ィギュレーシ ョ ンのインポート手順

ハードウェア コンフ ィギュレーシ ョ ンをインポートする手順は次のとおりです。

1. PetaLinux プロジェク ト ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. .hdf ファ イルのあるディ レク ト リへのパスを指定して petalinux-config コマンドを実行し、 ハード ウェア

記述ファイルをインポート します。

$ petalinux-config --get-hw-description=<path-to-directory-which-contains-hardwaredescription-file>

PetaLinux プロジェク トで初めて petalinux-config --get-hw-description を実行した場合、またはシステム

の第 1 ハードウェア候補の変更がツールによって検出される と、 次のよ うな 上位システム コンフ ィギュレーシ ョ

ン メニューが表示されます。

Linux Components Selection ---> Auto Config Settings ---> -*- Subsystem AUTO Hardware Settings ---> Kernel Bootargs ---> ARM Trusted Firmware Compilation Configuration ---> PMU FIRMWARE Configuration ---> u-boot Configuration ---> Image Packaging Configuration ---> Firmware Version Configuration ---> (zcu102-revb) MACHINE_NAME Yocto Settings --->

[Subsystem AUTO Hardware Settings --->] を選択する と、 次のよ うなメニューが表示されます。

Subsystem AUTO Hardware Settings System Processor (psu_cortexa53_0) ---> Memory Settings ---> Serial Settings ---> Ethernet Settings ---> Flash Settings ---> SD/SDIO Settings --->

リファレンス ガイド 19UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

RTC Settings ---> [*] Advanced bootable images storage Settings --->

[Subsystem AUTO Hardware Settings --->] メニューでは、システム全体のハードウェア設定をカスタマイズ

できます。

この手順には数分かかり ます。 これは、 [Auto Config Settings --->] および [Subsystem AUTO Hardware

Settings --->] の設定に基づいてツールがハードウェア記述ファイルを解析し、 デバイス ツ リー、 PetaLinux

U-Boot コンフ ィギュレーシ ョ ン ファ イルおよびカーネル コンフ ィギュレーシ ョ ン ファ イルの更新に必要なハード

ウェア情報を収集するのに時間がかかるためです。

たとえば Primary Ethernet と して ps7_ethernet_0 を選択し、 カーネル コンフ ィギュレーシ ョ ンと U-Boot コ

ンフ ィギュレーシ ョ ンの自動更新を有効にした場合、 ツールは自動的にカーネル ド ラ イバーを有効にし、 選択した

イーサネッ ト コン ト ローラーを U-Boot が使用できるよ うに U-Boot コンフ ィギュレーシ ョ ン ヘッダーも更新します。

注記: [Auto Config Settings] メニューの詳細は、 付録 C 「[Auto Config Settings] サブメニュー」 を参照してくだ

さい。

システム イ メージのビルド

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

PetaLinux システム イメージのビルド手順

1. PetaLinux プロジェク ト ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. petalinux-build を実行してシステム イ メージをビルド します。

$ petalinux-build

コンパイルの進行状況がコンソールに表示されます。 次に例を示します。

[INFO] building project[INFO] generating Kconfig for project[INFO] oldconfig project[INFO] sourcing bitbake[INFO] generating plnxtool conf[INFO] generating meta-plnx-generated layer/home/user/xilinx-zcu102-zu9-es2-rev1.0-2017.1/build/misc/plnx-generated [INFO] generating machine configuration[INFO] generating bbappends for project . This may take time ! /home/user/xilinx-zcu102-zu9-es2-rev1.0-2017.1/build/misc/plnx-generated [INFO] generating u-boot configuration files[INFO] generating kernel configuration files[INFO] generating kconfig for Rootfs

リファレンス ガイド 20UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

Loading cache: 100% |########################################################################################################################################################| Time: 0:00:00Loaded 3235 entries from dependency cache.Parsing recipes: 100% |######################################################################################################################################################| Time: 0:00:02Parsing of 2446 .bb files complete (2407 cached, 39 parsed). 3236 targets, 224 skipped, 0 masked, 0 errors.NOTE: Resolving any missing task queue dependenciesNOTE: PN build list saved to 'pn-buildlist'NOTE: PN dependencies saved to 'pn-depends.dot'NOTE: Package dependencies saved to 'package-depends.dot'NOTE: Task dependencies saved to 'task-depends.dot'Generate rootfs kconfig[INFO] oldconfig rootfs[INFO] generating petalinux-user-image.bbINFO: bitbake petalinux-user-imageLoading cache: 100% |########################################################################################################################################################| Time: 0:00:00Loaded 3235 entries from dependency cache.Parsing recipes: 100% |######################################################################################################################################################| Time: 0:00:02Parsing of 2446 .bb files complete (2414 cached, 32 parsed). 3236 targets, 224 skipped, 0 masked, 0 errors.NOTE: Resolving any missing task queue dependenciesInitialising tasks: 100% |###################################################################################################################################################| Time: 0:00:09Checking sstate mirror object availability: 100% |###########################################################################################################################| Time: 0:00:35NOTE: Executing SetScene TasksNOTE: Executing RunQueue TasksNOTE: Tasks Summary: Attempted 2645 tasks of which 1892 didn't need to be rerun and all succeeded.INFO: generating FIT ImageINFO: bitbake petalinux-user-image -R /home/user/xilinx-zcu102-zu9-es2-rev1.0-2017.1/build/conf/fit-image.confParsing recipes: 100% |######################################################################################################################################################| Time: 0:00:29Parsing of 2446 .bb files complete (0 cached, 2446 parsed). 3236 targets, 224 skipped, 0 masked, 0 errors.NOTE: Resolving any missing task queue dependenciesInitialising tasks: 100% |###################################################################################################################################################| Time: 0:00:09Checking sstate mirror object availability: 100% |###########################################################################################################################| Time: 0:00:04NOTE: Executing SetScene TasksNOTE: Executing RunQueue TasksNOTE: Tasks Summary: Attempted 2646 tasks of which 2576 didn't need to be rerun and all succeeded.

リファレンス ガイド 21UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

INFO: Copying Images from deploy to imagesINFO: Creating images/linux directory[INFO] successfully built project

完全なコンパイル ログは、 PetaLinux プロジェク トの build サブディ レク ト リに build.log と して格納されます。

Linux ソフ ト ウェア イ メージとデバイス ツ リーは PetaLinux プロジェク トの images/linux サブディレク ト リに生

成されます。

重要: デフォルトでは、 PetaLinux プロジェク トはカーネル、 rootfs および U-Boot 以外に第 1 段階ブート ローダー

(FSBL) も生成およびビルドするよ うに設定されています。 自動生成される FSBL の詳細は、 付録 B 「プロジェク ト

内での FSBL、 PMUFW および ATF の生成」 を参照してください。

uImage を生成する

petalinux-build を実行する と Zynq ファ ミ リ デバイスおよび MicroBlaze プラ ッ ト フォーム用の FIT イ メージが

生成され、 RAM ディ スク イ メージ urootfs.cpio.gz も生成されます。 uImage を使用する場合は、 上記コマンド

の代わりに petalinux-package --image を実行します。 次に例を示します。

$ petalinux-package --image -c kernel --format uImage

uImage は PetaLinux プロジェク トの images/linux サブディ レク ト リに生成されます。 次に、 uImage でブートする

よ うに U-Boot を設定する必要があ り ます。 U-Boot コンフ ィギュレーシ ョ ン ターゲッ ト と して

[PetaLinux u-boot config] を選択した場合、 PetaLinux プロジェク トの

<plnx-proj-root>/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h で

CONFIG_EXTRA_ENV_SETTINGS マクロを上書き編集し、 uImage でブートするよ うに U-Boot ブート コマンドを定

義します。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 PetaLinux システム イ メージをビルドする際に発生する一般的な問題について説明します。

表 1‐8: システム イメージのビルドに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

[ERROR]

<path-to-installed-PetaLinux>

/etc/build/common.mk:17:

*** "No architecture is defined!".

Stop.

問題の説明

PetaLinux ツールがハードウェア アーキテクチャ定義を理解できなかったため

petalinux-build プロセスが完了しなかったこ とを示すエラー メ ッセージ

です。

解決方法

Vivado ハードウェア プロジェク トでボード とデバイスを正し く選択してハー

ド ウェア記述をインポートする必要があ り ます。 詳細は、 「ハード ウェア コン

フ ィギュレーシ ョ ンのインポート 」 を参照してください。

リファレンス ガイド 22UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

Zynq UltraScale+ MPSoC 用ブート  イメージの生成

このセクシ ョ ンは Zynq UltraScale+ MPSoC 専用で、Zynq UltraScale+ MPSoC 用の BOOT.BIN を生成する方法について

説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux システム イ メージのビルドが完了しているものと仮定します。 詳細は、 「システム

イ メージのビルド」 を参照してください。

ブート  イメージを生成する

こ こからの手順は、 ハード ウェア ビッ ト ス ト リームのビルドが完了してから実行して ください。 ブート イ メージは

フラ ッシュまたは SD カードに格納できます。 ボードに電源を投入する と、 ブート イ メージからブートできます。

通常、 ブート イ メージには FSBL イ メージ、 FPGA ビッ ト ス ト リーム、 PMU ファームウェアおよび U-Boot が含まれ

ます。

次のコマンドを実行して、 .bin フォーマッ トのブート イ メージを生成します。

$ petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --pmufw <PATH_TO_PMU_FW_ELF> --u-boot

コマンドの詳細は、 --help オプシ ョ ンで確認するか、 『PetaLinux ツール資料: PetaLinux コマンド ライン リ ファレ

ンス ガイ ド』 (UG1157) [参照 4] を参照してください。

Zynq ファ ミ リ  デバイス用ブート  イ メージの生成

このセクシ ョ ンは Zynq ファ ミ リ デバイス専用で、 BOOT.BIN を生成する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux システム イ メージのビルドが完了しているものと仮定します。 詳細は、 「システム

イ メージのビルド」 を参照してください。

ブート  イメージを生成する

こ こからの手順は、 ハード ウェア ビッ ト ス ト リームのビルドが完了してから実行して ください。 ブート イ メージは

フラ ッシュまたは SD カードに格納できます。 ボードに電源を投入する と、 ブート イ メージからブートできます。

通常、 ブート イ メージには FSBL イ メージ、 FPGA ビッ ト ス ト リームおよび U-Boot が含まれます。

次のコマンドを実行して、 .bin フォーマッ トのブート イ メージを生成します。

$ petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot

コマンドの詳細は、 --help オプシ ョ ンで確認するか、『PetaLinux ツール資料: PetaLinux コマンド ライン リ ファレンス

ガイ ド』 (UG1157) [参照 4] を参照してください。

リファレンス ガイド 23UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

MicroBlaze 用ブート  イ メージの生成

このセクシ ョ ンは MicroBlaze 専用で、 MicroBlaze 用に MCS ファ イルを生成する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux システム イ メージのビルドが完了しているものと仮定します。 詳細は、 「システム

イ メージのビルド」 を参照してください。

ブート  イメージを生成する

次のコマンドを実行して、 MicroBlaze 用の MCS ブート ファ イルを生成します。

$ petalinux-package --boot --fpga <FPGA bitstream> --u-boot --kernel

boot.mcs が作業ディレク ト リに生成され、 <plnx-proj-root>/images/linux/ ディレク ト リにコピーされま

す。 上記のコマンドを実行した場合、 MCS ファ イルには fpga bit、 fs-boot、 u-boot およびカーネル イ メージ

image.ub が含まれます。

fs-boot と fpga のみを含む .mcs ファ イルを生成するには、 次のコマンドを実行します。

$ petalinux-package --boot --fpga <FPGA bitstream>

fpga、 fs-boot および U-Boot を含む .mcs ファ イルを生成するには、 次のコマンドを実行します。

$ petalinux-package --boot --fpga <FPGA bitstream> --u-boot

コマンドの詳細は、 --help オプシ ョ ンで確認するか、 『PetaLinux ツール資料: PetaLinux コマンド ライン リ ファレ

ンス ガイ ド』 (UG1157) [参照 4] を参照してください。

ビルド済みイメージのパッケージ

このセクシ ョ ンでは、新規にビルド したイ メージを prebuilt ディ レク ト リにパッケージする方法について説明します。

注記: この手順を実行する と、 prebuilt 機能を使用して JTAG/QEMU でブートできるよ うになり ます。 ただしこの手順

を実行しなくても JTAG/QEMU でのブートは可能です。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• Zynq ファ ミ リ デバイスの場合、 ブート イ メージの生成が完了しているこ と。 詳細は、 「Zynq UltraScale+

MPSoC 用ブート イ メージの生成」 を参照してください。

• MicroBlaze の場合、 システム イ メージの生成が完了しているこ と。 詳細は、 「システム イ メージのビルド」 を

参照してください。

リファレンス ガイド 24UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ビルド済みイメージのパッケージ手順

1. プロジェク トのルート ディレク ト リに移動します。

$ cd <plnx-proj-root>

2. petalinux-package --prebuilt を実行してビルド済みイ メージをパッケージします。

$ petalinux-package --prebuilt --fpga <FPGA bitstream>

コマンドの詳細は、 --help オプシ ョ ンで確認するか、 『PetaLinux ツール資料: PetaLinux コマンド ライン リ ファレ

ンス ガイ ド』 (UG1157) [参照 4] を参照してください。

ビルド済みイメージでの petalinux‐boot コマンドの使用

PetaLinux イ メージをブートするには petalinux-boot コマンドを使用します。 このコマンドで --qemu オプシ ョ

ンを指定する と ソフ ト ウェア エミ ュレーシ ョ ン (QEMU) 環境でイ メージがブート され、 --jtag オプシ ョ ンを指定

する とハード ウェア ボード上でブート されます。 このセクシ ョ ンでは、 prebuilt オプシ ョ ンの各種ブート レベルにつ

いて説明します。

前提条件

このセクシ ョ ンでは、 ビルド済みイ メージのパッケージが完了しているものと仮定します。 詳細は、 「ビルド済みイ

メージのパッケージ」 を参照してください。

prebuilt オプシ ョ ンのブート  レベル

--prebuilt <BOOT_LEVEL> オプシ ョ ンを指定する と、 すべての設定をオーバーライ ド してビルド済みイ メージ

がブート されます。 サポート されるブート レベルは 1 ~ 3 です。

• レベル 1: ビルド済み FPGA ビッ ト ス ト リームをダウンロード します。

° Zynq-7000 では FSBL、 Zynq UltraScale+ MPSoC では FSBL と PMUFW もブート します。

• レベル 2: ビルド済み FPGA ビッ ト ス ト リームをダウンロード し、 ビルド済み U-Boot をブート します。

° Zynq-7000 の場合: U-Boot をブートする前に FSBL もブート します。

° Zynq UltraScale+ MPSoC の場合: U-Boot をブートする前に FSBL、 PMUFW および ATF もブート します。

• レベル 3:

° MicroBlaze の場合: ビルド済み FPGA ビッ ト ス ト リームをダウンロード し、 ターゲッ ト上のビルド済みカー

ネル イ メージをブート します。

° Zynq-7000 の場合: ビルド済み FPGA ビッ ト ス ト リームと FSBL をダウンロード し、 ビルド済み U-Boot を

ブート し、 ターゲッ ト上のビルド済みカーネルをブート します。

° Zynq UltraScale+ MPSoC の場合: ビルド済み FPGA ビッ ト ス ト リーム、 ビルド済み FSBL、 ビルド済み

PMUFW、 ビルド済み ATF およびターゲッ ト上のビルド済みカーネルをダウンロード します。

次に、 prebuilt オプシ ョ ンでブート レベルを使用した場合の例を示します。

$ petalinux-boot --jtag --prebuilt 3

リファレンス ガイド 25UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

QEMU での PetaLinux イメージのブート

このセクシ ョ ンでは、 ソフ ト ウェア エミ ュレーシ ョ ン (QEMU) 環境で PetaLinux イ メージをブートする方法について

説明します。

注記: QEMU でサポート されるザイ リ ンクス IP モデルの詳細は、 付録 E 「QEMU でサポート されるザイ リ ンクス IP

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

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux BSP をインス トール ( 「PetaLinux BSP のインス トール」 参照) または独自の PetaLinux プロジェク ト を

ビルド ( 「システム イ メージのビルド」 参照) して PetaLinux システム イ メージが存在しているこ と。

• QEMU ブートで --prebuilt オプシ ョ ンを使用する場合、 ビルド済みイ メージをパッケージしておく必要があ

り ます。 詳細は、 「ビルド済みイ メージのパッケージ」 を参照してください。

重要: 特に明記しない限り、 PetaLinux ツールのコマンドはプロジェク ト ディレク ト リ (<plnx-proj-root>) で実行する

必要があ り ます。

QEMU で PetaLinux イメージをブートする手順

ハードウェアなしでも PetaLinux ソフ ト ウェア イ メージをシ ミ ュレーシ ョ ン環境でテス トできるよ うに、 PetaLinux

は QEMU をサポート しています。

QEMU を使用して PetaLinux リ ファレンス デザインをテス トする手順は次のとおりです。

1. プロジェク ト ディレク ト リに移動し、 ビルド済み Linux カーネル イ メージをブート します。

$ petalinux-boot --qemu --prebuilt 3

注記: prebuilt 機能を使用しないで QEMU をブートする方法については、 「QEMU でのその他のブート方法」 を参照

してください。

° --qemu オプシ ョ ンを指定する と petalinux-boot は JTAG 経由で実際のハードウェアをブートするので

はなく、 QEMU をブート します。 --prebuilt 3 オプシ ョ ンを指定する と PMUFW をバッ クグラウンドで

実行しながら Linux カーネルをブート します。

ヒン ト : prebuilt オプシ ョ ンの各ブート レベルの詳細は、 「ビルド済みイ メージでの petalinux-boot コマンドの使用」 を

参照してください。

petalinux-kernel の実行に成功する と、 シ リ アル コンソールに次のよ うなカーネル ブート ログ メ ッセージ

が表示されます。

[ 13.399282] Freeing unused kernel memory: 11392K (ffffffc000bd0000 - ffffffc0016f0000)[ 16.804862] udevd[1668]: starting version 3.2[ 16.819766] random: udevd: uninitialized urandom read (16 bytes read)[ 16.941649] udevd[1669]: starting eudev-3.2[ 22.690630] hrtimer: interrupt took 17368800 ns

リファレンス ガイド 26UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

[ 34.708066] random: dd: uninitialized urandom read (512 bytes read)[ 37.317181] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ 38.401704] macb ff0e0000.ethernet eth0: link up (100/Full)[ 38.436587] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready[ 42.300546] random: dropbearkey: uninitialized urandom read (32 bytes read)

PetaLinux 2017.1 plnx_aarch64 /dev/ttyPS0

plnx_aarch64 login: rootPassword: root@plnx_aarch64:~# [ 110.059298] random: fast init done

root@plnx_aarch64:~# root@plnx_aarch64:~#

2. デフォルトのユーザー名 root とパスワード root を使用して PetaLinux にログインします。

ヒン ト : QEMU を終了するには、 Ctrl + A キー、 X キーを押します。

QEMU でのその他のブート方法

• 新規にビルド した <plnx-proj-root>/images/linux/u-boot.elf を QEMU でダウンロードする方法

$ petalinux-boot --qemu --u-boot

° MicroBlaze および Zynq-7000 の場合、 <plnx-proj-root>/images/linux/u-boot.elf が QEMU で

ブート されます。

° Zynq UltraScale+ MPSoC の場合、 <plnx-proj-root>/images/linux/u-boot.elf がロード され、 ATF

イ メージ <plnx-proj-root>/images/linux/bl31.elf が QEMU でブート された後、 ロード された

U-Boot イ メージが ATF によってブート されます。

• 新規にビルド したカーネルを QEMU でダウンロードする方法

$ petalinux-boot --qemu --kernel

° MicroBlaze の場合、 <plnx-proj-root>/images/linux/image.elf が QEMU でブート されます。

° Zynq-7000 の場合、 <plnx-proj-root>/images/linux/zImage が QEMU でブート されます。

° Zynq UltraScale+ MPSoC の場合、 カーネル イ メージ <plnx-proj-root>/images/linux/Image がロー

ド され、 ATF イ メージ <plnx-proj-root>/images/linux/bl31.elf が QEMU でブート された後、

ロード されたカーネル イ メージが ATF によってブート されます。 バッ クグラウンドでは PMUFW が動作し

ます。

• DTB を指定して Linux イ メージを直接ブートする方法

デバイス ツ リー (DTB ファ イル) は、 Linux カーネルにハードウェア アーキテクチャ とアドレス マップを知らせる目

的で使用します。 また、 DTB ファ イルは PetaLinux システム エミ ュレーターがハードウェア プラ ッ ト フォームに合

わせてエミ ュレーシ ョ ン環境を動的に設定する目的でも使用します。

DTB ファ イル オプシ ョ ンが提供されない場合、 petalinux-boot は指定された image.elf から DTB ファ イルを

抽出する (MicroBlaze の場合) か、 <plnx-proj-root>/images/linux/system.dtb から DTB ファ イルを抽出し

ます (Zynq-7000 および Zynq UltraScale+ MPSoC の場合)。

注記: QEMU のバージ ョ ンが 2.6 にアップグレード されました。 これらの旧オプシ ョ ンは新バージ ョ ンでは推奨され

ませんが、 以前と同じ動作をします。 PetaLinux ツールは旧オプシ ョ ンを使用しているため警告メ ッセージが表示さ

れますが、 これらは無視できます。

リファレンス ガイド 27UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

次に、 Zynq UltraScale+ MPSoC の警告メ ッセージを示します。

qemu-system-aarch64: -tftp /home/user/xilinx-zcu102-2017.1/images/linux: The -tftp option is deprecated. Please use '-netdev user,tftp=...' instead.g

SD カードを使用したハードウェア上での PetaLinux イメージのブート

このセクシ ョ ンでは、 SD カードを使用してハード ウェア上で PetaLinux イ メージをブートする方法について説明し

ます。

注記: このセクシ ョ ンは、SD カードからのブート をサポート した Zynq-7000 および Zynq UltraScale+ MPSoC のみを対

象と しています。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• Linux ワークステーシ ョ ンに PetaLinux ツールがインス トールされているこ と。 インス トールしていない場合は、

「インス トール手順」 を参照してください。

• Linux ワークステーシ ョ ンに PetaLinux BSP がインス トールされているこ と。 インス トールしていない場合は、

「PetaLinux BSP のインス トール」 を参照してください。

• minicom/kermit/gtkterm などのシ リ アル通信プログラムがインス トールされているこ と (シ リ アル通信プログラム

のボー レートは 115200bps に設定するこ と )。

SD カードを使用してハードウェア上で PetaLinux イメージをブートする手順

1. ホス ト マシンに SD カードをマウン ト します。

2. <plnx-proj-root>/pre-built/linux/images/ にある次のファイルを、 FAT32 でフォーマッ ト した SD

カードの先頭パーティシ ョ ンのルート ディレク ト リにコピーします。

° BOOT.BIN

° image.ub

3. ボードのシ リ アル ポート をワークステーシ ョ ンに接続します。

4. ワークステーシ ョ ンでコンソールを開き、 kermit、 minicom、 gtkterm などのシ リ アル通信プログラムを起動しま

す。 コンソールでボー レート を 115200 に設定します。

5. ボードの電源をオフにします。

6. ボードのブート モードを SD ブートに設定します。 詳細は、 ボードのマニュアルを参照してください。

7. SD カードをボードに挿入します。

8. ボードの電源をオンにします。

リファレンス ガイド 28UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

9. シ リアル コンソールに、 次のよ うなブート メ ッセージが表示されます。

[ 4.233206] Freeing unused kernel memory: 512K (ffffffc000bb0000 - ffffffc000c30000)INIT: version 2.88 bootingStarting udev[ 4.351288] udevd[1624]: starting version 3.2[ 4.361779] udevd[1625]: starting eudev-3.2[ 4.364957] random: crng init donePopulating dev cacheTue Mar 14 11:19:35 UTC 2017Starting internet superserver: inetd.INIT: Entering runlevel: 5Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such deviceStarting Dropbear SSH server: Generating key, this may take a while...Public key portion is:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDivIP/aVx0x2TkA2hY0+mCmb0M0ySyU3XKKz7/fGqG5egd3JaA8kCwKf9l74eEfMh/YUnPc1s+ujBq2UWRnBMJbO7jk6KBv0GBVvJtrMxl5cgM7DlWd/jnQESOLjGuXM2OmzYbP4NzVQiXcjk0q5+cvayzN39c6B3V+a749wxwKzb8UE1DWc4kEswYsOSO8EL8T9y7tJbrD9mOPkoyQRI4lPHveapI3uB+NCmKabHMqCFsrsL+YYIYlWo7ZXxZdEZ11bncdd9LtzFXYSuTC0IhWnF9DgBfPWxmtu/fyRzmKxMeUY+1NrbBfUwn4Rf+utxrVWtCPCG3A6+krDYbccVT root@plnx_aarch64Fingerprint: md5 9e:8e:e0:01:73:1d:48:d6:73:b0:c8:19:7c:15:d1:c6dropbear.Starting syslogd/klogd: doneStarting tcf-agent: OKINIT: Id "hvc0" respawning too fast: disabled for 5 minutesPetaLinux 2017.1 plnx_aarch64 /dev/ttyPS0plnx_aarch64 login: rootPassword: root@plnx_aarch64:~#

ヒン ト : 自動ブート を停止する場合は、 コンソールに次のよ うなメ ッセージが表示された後に任意のキーを押して く

ださい。 Hit any key to stop autoboot:

10. シ リアル コンソールにユーザー名 root とパスワード root を入力して PetaLinux システムにログインします。

リファレンス ガイド 29UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ト ラブルシューテ ィング

このセクシ ョ ンでは、 SD カードを使用してハード ウェア上で PetaLinux イ メージをブートする際に発生する一般的

な問題について説明します。

ヒン ト : U-Boot オプシ ョ ンを確認するには、 $ U-Boot-PetaLinux> printenv コマンドを実行してください。

JTAG を使用したハードウェア上での PetaLinux イメージのブート

このセクシ ョ ンでは、 JTAG を使用してハード ウェア上で PetaLinux イ メージをブートする方法について説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux BSP をインス トール ( 「PetaLinux BSP のインス トール」 参照) または独自の PetaLinux プロジェク ト を

ビルド ( 「システム イ メージのビルド」 参照) して PetaLinux システム イ メージが存在しているこ と。

• この条件はオプシ ョ ンで、 JTAG ブートで prebuilt 機能を使用する場合のみ必要です。 ビルド済みイ メージの

パッケージが完了しているこ と ( 「ビルド済みイ メージのパッケージ」 参照)。

表 1‐9:ハードウェア上での PetaLinux イメージに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

Wrong Image Format for boot

command.

ERROR: Can’t get kernel image!

問題の説明

u-boot ブート ローダーがカーネル イ メージを検出できないこ とを示すエラー

メ ッセージです。 bootcmd 環境変数が正し く設定されていない可能性があ り

ます。

解決方法

デフォルトのブート デバイスを確認するには、 U-Boot コンソールで次のコマ

ンドを実行して bootcmd 環境変数の内容を出力します。

U-Boot-PetaLinux> print bootcmd

デフォルトで SD カードからブート しない場合、 次に示すよ うに複数の解決方

法があ り ます。

• PetaLinux を再ビルド しない場合、 希望する媒体からブートするよ うに

setenv コマンドを使用して bootcmd を設定します。SD カードからブート

するには、 環境変数を次のよ うに設定します。

U-Boot-PetaLinux> setenv bootcmd ’run sdboot’ ;

saveenv

• petalinux-config を実行し、 SD カードからカーネル イ メージをロード

するよ うに設定します。 詳細は、 「ブート イ メージ ス ト レージの設定」 を参

照してください。 PetaLinux を再ビルド し、再ビルド した U-Boot を使用して

BOOT.BIN を再生成し、 新しい BOOT.BIN を使用してボードをブート しま

す。 BOOT.BIN の生成方法の詳細は、 「Zynq UltraScale+ MPSoC 用ブート イ

メージの生成」 を参照してください。

リファレンス ガイド 30UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

• minicom/kermit/gtkterm などのシ リ アル通信プログラムがインス トールされているこ と (シ リ アル通信プログラム

のボー レートは 115200bps に設定するこ と )。

• 適切な JTAG ケーブル ド ラ イバーがインス トールされているこ と。 ド ラ イバーは Digilent Adept のダウンロード

ページからダウンロードできます。

JTAG を使用してハードウェア上で PetaLinux イメージをブートする手順

1. ボードの電源をオフにします。

2. ボードの JTAG ポート を JTAG ケーブル経由でワークステーシ ョ ンに接続します。

3. ボードのシ リ アル ポート をワークステーシ ョ ンに接続します。

4. システムにイーサネッ トが含まれる場合、ボードのイーサネッ ト ポート をローカル ネッ ト ワークに接続します。

5. Zynq ファ ミ リ デバイス ボードの場合、 モード スイ ッチが JTAG モードになっているこ とを確認します。

詳細は、 ボードのマニュアルを参照してください。

6. ボードの電源をオンにします。

7. ワークステーシ ョ ンでコンソールを開き、 kermit、 minicom などのシ リ アル通信プログラムを起動します。

コンソールでボー レート を 115200 に設定します。

8. ワークステーシ ョ ンで次の petalinux-boot コマンドを実行します。

$ petalinux-boot --jtag --prebuilt 3

注記: JTAG ブートで prebuilt 機能を使用しない場合、 「JTAG でのその他のブート方法」 を参照してください。

petalinux-boot で --jtag オプシ ョ ンを指定する と JTAG を使用してハード ウェア上でブート し、--prebuilt

3 オプシ ョ ンを指定する と Linux カーネルをブート します。 コマンドが完了してから、 コマンド コンソールにシェ

ル プロンプ トが表示するまで待ちます。

注記: prebuilt オプシ ョ ンの各種ブート レベルの詳細は、 「ビルド済みイ メージでの petalinux-boot コマンドの使用」 を

参照してください。

petalinux-boot の実行が正し く完了する と、 ワークステーシ ョ ンのコマンド コンソールに次のよ うなメ ッセー

ジが表示されます。

$ petalinux-boot --jtag --prebuilt 3INFO: Launching XSDB for file download and boot.INFO: This may take a few minutes, depending on the size of your image.INFO: Configuring the FPGA...INFO: Downloading bitstream to the target.INFO: Downloading ELF file to the target.INFO: Downloading ELF file to the target.INFO: Downloading ELF file to the target.INFO: Downloading ELF file to the target.

リファレンス ガイド 31UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

petalinux-boot の実行が正し く完了する と、 シ リ アル コンソールに次のよ うなメ ッセージが表示されます。

[ 4.862842] Freeing unused kernel memory: 5376K (ffffffc000bb0000 - ffffffc0010f0000)[ 5.546506] udevd[1762]: starting version 3.2[ 5.557113] udevd[1763]: starting eudev-3.2[ 6.088398] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ 7.111774] macb ff0e0000.ethernet eth0: link up (1000/Full)[ 7.119195] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

PetaLinux 2017.1 plnx_aarch64 /dev/ttyPS0

plnx_aarch64 login: rootPassword: root@plnx_aarch64:~#

デフォルトでは、 PetaLinux リ ファレンス デザインのネッ ト ワーク設定は DHCP が有効です。 テス トに使用する

PetaLinux リ ファレンス デザインによっては、 出力が上記のものとは若干異なるこ とがあ り ます。

9. シ リアル コンソールにユーザー名 root とパスワード root を入力して PetaLinux システムにログインします。

10. システム コンソールで ifconfig を実行して PetaLinux の IP アドレスを確認します。

JTAG でのその他のブート方法

• ビッ ト ス ト リームをターゲッ ト ボードにダウンロードする方法

$ petalinux-boot --jtag --fpga --bitstream <BITSTREAM>

• 新規にビルド した <plnx-proj-root>/images/linux/u-boot.elf をターゲッ ト ボードにダウンロードす

る方法

$ petalinux-boot --jtag --u-boot

• 新規にビルド したカーネルをターゲッ ト ボードにダウンロードする方法

$ petalinux-boot --jtag --kernel

° MicroBlaze の場合、 <plnx-proj-root>/images/linux/image.elf がターゲッ ト ボート上でブート さ

れます。

° Zynq-7000 の場合、 <plnx-proj-root>/images/linux/zImage がターゲッ ト ボード上でブート され

ます。

° Zynq UltraScale+ MPSoC の場合、 <plnx-proj-root>/images/linux/Image がターゲッ ト ボード上で

ブート されます。

• --fpga --bitstream <BITSTREAM> オプシ ョ ンを使用してビッ ト ス ト リームと イ メージをダウンロードする方法

$ petalinux-boot --jtag --u-boot --fpga --bitstream <BITSTREAM>

上記のコマンドを実行する とビッ ト ス ト リームの後に U-Boot イ メージがダウンロード されます。

• JTAG ブートの出力を詳細モードにするには、 -v オプシ ョ ンを指定します。

$ petalinux-boot --jtag --u-boot -v

リファレンス ガイド 32UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

JTAG ブート中の Tcl/XSDB ログ

JTAG ブート中に使用する XSDB コマンドのログを記録するには、 次のコマンドを使用します。 このコマンドを実行

する と、 tcl スク リプ ト (およびそれによって実行される xsdb コマンド ) のデータが test.txt にダンプされます。

$ cd <plnx-proj-root>$ petalinux-boot --jtag --prebuilt 3 --tcl test.txt

ト ラブルシューテ ィング

このセクシ ョ ンでは、 JTAG を使用してハード ウェア上で PetaLinux イ メージをブートする際に発生する一般的な問

題について説明します。

表 1‐10: JTAG を使用したハードウェア上での PetaLinux イメージに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

ERROR: This tool requires ’xsdb’

and it is missing. Please source

Xilinx Tools settings first.

問題の説明

PetaLinux ツールがザイ リ ンクス Vivado または SDK ツールに含まれる xsdb

ツールを検出できなかったこ とを示すエラー メ ッセージです。

解決方法

Vivado ツール作業環境をセッ ト アップする必要があ り ます。

詳細は、 「PetaLinux 作業環境のセッ ト アップ」 を参照してください。

QEMU では正し くブートするの

に、 ハード ウェアで U-Boot また

はカーネルをブート しよ う と し

てもコンソールに何も出力され

ない。

問題の説明

通常、 この問題は次のいずれかまたは両方の理由によ り発生します。

• シ リ アル通信ターミナル アプリ ケーシ ョ ンで設定したボー レートが間違っ

ている。

• ハードウェア プラ ッ ト フォームと ソフ ト ウェア プラ ッ ト フォームが一致し

ていない。

解決方法

• ターミナル アプリ ケーシ ョ ンのボー レートがハード ウェア コンフ ィギュ

レーシ ョ ンに合わせて正し く設定されているこ とを確認します。

• PetaLinux プロジェク トが正しいハード ウェア プラ ッ ト フォームでビルド さ

れているこ とを確認します。

° ハードウェア コンフ ィギュレーシ ョ ンを正し く インポート します。

詳細は、 「ハード ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照し

てください。

° [Subsystem AUTO Hardware Settings --->] サブメニューをチェッ ク し、 ハー

ド ウェア プラ ッ ト フォームと一致しているこ とを確認します。

° [Subsystem AUTO Hardware Settings --->] の [Serial settings --->] をチェッ ク

し、 stdout と stdin が正しい UART IP コアに設定されているこ とを確認し

ます。

° システム イ メージをビルド し直します。 詳細は、 「システム イ メージの

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

リファレンス ガイド 33UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

TFTP を使用したハードウェア上での PetaLinux イメージのブート

このセクシ ョ ンでは、 TFTP (Trivial File Transfer Protocol) を使用して PetaLinux イ メージをブートする方法について説

明します。

ヒン ト : TFTP ブートは、 カーネル ソース変更のたびにイ メージをフラ ッシュする必要がなく、 JTAG ブート よ り も

はるかに高速なので、 時間を大幅に短縮できます。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• TFTP サーバーが動作するホス ト環境のセッ ト アップが完了しており、 TFTP ブート用の PetaLinux イ メージがビ

ルド済みであるこ と。 詳細は、 「TFTP ブートの設定」 を参照してください。

• ビルド済みイ メージのパッケージが完了しているこ と ( 「ビルド済みイ メージのパッケージ」 参照)。

• minicom/kermit/gtkterm などのシ リ アル通信プログラムがインス トールされているこ と (シ リ アル通信プログラム

のボー レートは 115200bps に設定するこ と )。

• ホス ト と Linux ターゲッ トの間でイーサネッ ト接続が正し くセッ ト アップされているこ と。

• 適切な JTAG ケーブル ド ラ イバーがインス トールされているこ と。 ド ラ イバーは Digilent Adept のダウンロード

ページからダウンロードできます。

TFTP を使用してハードウェア上で PetaLinux イメージをブートする手順

1. ボードの電源をオフにします。

2. ボードの JTAG ポート を JTAG ケーブル経由でワークステーシ ョ ンに接続します。

3. ボードのシ リ アル ポート をワークステーシ ョ ンに接続します。

4. ボードのイーサネッ ト ポート をネッ ト ワーク スイ ッチ経由でローカル ネッ ト ワークに接続します。

5. Zynq ファ ミ リ デバイス ボードの場合、 モード スイ ッチが JTAG モードになっているこ とを確認します。

詳細は、 ボードのマニュアルを参照してください。

6. ボードの電源をオンにします。

7. ワークステーシ ョ ンでコンソールを開き、 kermit、 minicom などのシ リ アル通信プログラムを起動します。

コンソールでボー レート を 115200 に設定します。

8. ワークステーシ ョ ンで次の petalinux-boot コマンドを実行します。

$ petalinux-boot --jtag --prebuilt 2

petalinux-boot で --jtag オプシ ョ ンを指定する と JTAG を使用してハード ウェア上でブート し、--prebuilt

2 オプシ ョ ンを指定する とビルド済みビッ ト ス ト リーム (および Zynq の場合は FSBL) をターゲッ ト ボードにダウン

ロード した後、 ターゲッ ト ボード上でビルド済み U-Boot をブート します。

9. 自動ブートが開始したら、 任意のキーを押して停止します。

リファレンス ガイド 34UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

U-Boot のダウンロードが正し く完了した場合のワークステーシ ョ ン コンソール出力の例を示します。

U-Boot 2017.01 (Mar 28 2017 - 14:14:14 -0600) Xilinx ZynqMP ZCU102

I2C: readyDRAM: 2 GiBEL Level: EL2Chip ID: xczu9egMMC: sdhci@ff170000: 0 (SD)SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB*** Warning - bad CRC, using default environment

In: serialOut: serialErr: serialBootmode: JTAG_MODENet: ZYNQ GEM: ff0e0000, phyaddr c, interface rgmii-ideth0: ethernet@ff0e0000U-BOOT for xilinx-zcu102-zu9-es2-rev1_0-2017.1

ethernet@ff0e0000 Waiting for PHY auto negotiation to complete....... doneBOOTP broadcast 1BOOTP broadcast 2BOOTP broadcast 3DHCP client bound to address 10.10.70.2 (1257 ms)Hit any key to stop autoboot: 0 Device: sdhci@ff170000Manufacturer ID: 3OEM: 5054Name: SL16G Tran Speed: 50000000Rd Block Len: 512SD version 3.0High Capacity: YesCapacity: 14.5 GiBBus Width: 4-bitErase Group Size: 512 Bytes** Invalid partition 1 **ZynqMP>

10. TFTP サーバーの IP アドレスが、 イ メージの存在するホス トの IP アドレスに設定されているこ とを確認します。

これは、 次のコマンドで実行できます。

ZynqMP> print serverip

11. サーバーの IP アドレスをホス トの IP アドレスに設定するには、 次のコマンドを実行します。

ZynqMP> set serverip <HOST IP ADDRESS>; saveenv

12. 次のコマンドを実行して、 カーネルをブート します。

ZynqMP> run netboot

リファレンス ガイド 35UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ト ラブルシューテ ィング

BSP のパッケージ

BSP は一般的な配布手段と して使用するだけでなく、 ザイ リ ンクス ワールドワイ ド テクニカル サポート (WTS) で

ケースを開く際にも使用します。 ザイ リ ンクス WTS でケースを開いてデバッグおよびサポート を受けるには、 必要

小限のデザインを Petalinux BSP と してパッケージする必要があ り ます。 このセクシ ョ ンでは、 PetaLinux プロ

ジェク トで BSP をパッケージする方法を、 例を示しながら説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

BSP のパッケージ手順

WTS に提出してデバッグが行えるよ うにプロジェク ト をパッケージする手順は次のとおりです。

1. petalinux-package コマンドは PetaLinux プロジェク ト ディ レク ト リ以外からでも実行できます。

2. 次のコマンドを実行して、 bsp をパッケージします。

$ petalinux-package --bsp -p <plnx-proj-root> --output MY.BSP

3. これによ り、 MY.BSP が生成されます。 これには、 指定したプロジェク トの次の要素が含まれます。

° <plnx-proj-root>/project-spec/

° <plnx-proj-root>/config.project

° <plnx-proj-root>/.petalinux/

° <plnx-proj-root>/pre-built/

° その他、 選択したすべてのコンポーネン ト

表 1‐11: TFTP を使用したハードウェア上での PetaLinux イメージ

問題/エラー メ ッセージ 説明/解決方法

Error: "serverip" not defined. 問題の説明

u-boot の環境変数 serverip が設定されていないこ とを示すエラー メ ッ

セージです。 イ メージの存在するホス トの IP アドレスに設定する必要があ り

ます。

解決方法

次のコマンドを実行して、 serverip を設定します。

ZynqMP> set serverip <HOST IP ADDRESS>;saveenv

リファレンス ガイド 36UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

BSP のその他のパッケージ方法

1. ハードウェア ソースを使用して BSP をパッケージする方法

$ petalinux-package --bsp -p <plnx-proj-root> \--hwsource <hw-project-root> --output MY.BSP

この場合、 指定した PetaLinux プロジェク トの <plnx-proj-root> は変更されません。 指定したハード ウェア プロ

ジェク ト ソースは MY.BSP アーカイブ内の <plnx-proj-root>/hardware/ に置かれます。

2. 外部ソースを使用して BSP をパッケージする方法

サーチ パスのサポートは廃止されました。 外部ソースは components/ext_sources にコピーする必要があ り ます。

詳細は、 「PetaLinux での外部カーネルおよび U-Boot 使用手順」 を参照して ください。 BSP をパッケージする必

要があ り ます。

ファームウェア バージ ョ ンの設定

このセクシ ョ ンでは、 petalinux-config コマンドを使用してファームウェア バージ ョ ンを設定する方法につい

て説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

ファームウェア バージョ ンの設定手順

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Firmware Version Configuration] を選択します。

4. [Host Name]、 [Product Name]、 [Firmware Version] を選択し、 必要に応じて編集します。

5. メニューを終了し、[Do you wish to save your new configuration?] と表示されたら <Yes> を選択し

ます。

Do you wish to save your new configuration ? <ESC><ESC>to continue.< Yes > < No >

リファレンス ガイド 37UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ルート  ファイル システム タイプの設定

このセクシ ョ ンでは、 petalinux-config コマンドを使用して RootFS タイプを設定する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

ルート  ファイル システム タイプの設定手順

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Image Packaging Configuration] を選択します。

4. [Root file System type] を選択します。

5. 必要に応じて [INITRAMFS]、 [INITRD]、 [JFFS2]、 [NFS]、 [SD card] のいずれかを選択します。

6. 設定を保存します。

ブート  イメージ スト レージの設定

このセクシ ョ ンでは、 petalinux-config コマンドを使用してフラ ッシュや SD/MMC などのブート デバイスを設

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

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

リファレンス ガイド 38UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ブート  イメージ スト レージの設定手順

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Subsystem AUTO Hardware Settings] を選択します。

4. [Advanced Bootable Images Storage Settings] を選択します。

5. [boot image settings] を選択します。

6. [Image Storage Media] を選択します。

7. 必要に応じてブート デバイスを選択します。 ブート デバイス と してフラ ッシュを設定するには、 [primary

flash] を選択します。 SD カードをブート デバイスにするには、 [primary sd] を選択します。

8. [Advanced Bootable Images Storage Settings] サブメニューで、 [kernel image settings] を選択します。

9. [Image Storage Media] を選択します。

10. 必要に応じてス ト レージ デバイスを選択します。 ブート デバイス と してフラ ッシュを設定するには、

[primary flash] を選択します。 SD カードをブート デバイスにするには、 [primary sd] を選択します。

11. 設定を保存します。

ヒン ト : いったん選択を解除したメニュー /サブメニューを選択するには、 下方向キー (↓) または上方向キー (↑) を

押してメニューをスクロールし、 目的のメニューまでカーソルを移動して y キーを押します。 メニュー /サブメ

ニューの選択を解除するには、 同じ手順に従って 後に n キーを押します。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 ブート デバイスを設定する際に発生する一般的な問題について説明します。

表 1‐12: ブート  イメージ スト レージに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

ERROR: Failed to config

linux/kernel!問題の説明

menuconfig で Linux カーネル コンポーネン ト を設定できなかったこ とを示すエ

ラー メ ッセージです。

解決方法

必要なライブラ リ /パッケージが正し く インス トールされているこ とを確認し

ます。 詳細は、 「インス トール要件」 を参照してください。

リファレンス ガイド 39UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

プライマリ  フラ ッシュ  パーティシ ョ ンの設定

このセクシ ョ ンでは、 PetaLinux の menuconfig でフラ ッシュ パーティシ ョ ンを設定する方法について説明します。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Subsystem AUTO Hardware Settings] を選択します。

4. [Flash Settings] を選択します。

5. [Primary Flash] と してフラ ッシュ デバイスを選択します。

6. 各パーティシ ョ ンの名前とサイズを設定します。

注記: PetaLinux ツールは boot、 bootenv (U-Boot 環境変数用) およびカーネル パーティシ ョ ンを使用して U-Boot コマ

ンドを生成します。

PetaLinux ツールは、 パラレル フラ ッシュの開始アドレスまたは SPI フラ ッシュの開始オフセッ ト と上記パーティ

シ ョ ンのサイズを使用して次の U-Boot コマンドを生成します。

• update_boot: ブート イ メージ (MicroBlaze の場合は U-Boot イ メージ、 Zynq ファ ミ リ デバイスの場合は

BOOT.BIN イ メージ) をプライマ リ フラ ッシュに格納するよ うに選択している場合。

• update_kernel および load_kernel: カーネル イ メージ (FIT イ メージ image.ub) をフラ ッシュに格納するよ

うに選択している場合。

ベース ルート  ファイル システムの設定

このセクシ ョ ンでは、 ベース ルート ファ イル システムの設定について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

ベース ルート  ファイル システムの設定手順

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Linux Components Selection] を選択します。

4. petalinux-rootfs を rootfs と して選択します。

リファレンス ガイド 40UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

イメージ サイズの管理

エンベデッ ド環境では、 フラ ッシュに格納するカーネル イ メージのサイズ、 および RAM におけるカーネル イ メー

ジの静的サイズを縮小するこ とが重要です。 このセクシ ョ ンでは、 config の項目がカーネル サイズおよび RAM 使

用量に与える影響について説明します。

デフォルトのブータブル イ メージ フォーマッ トは FIT イ メージです。 デフォルトでは、 FIT イ メージはカーネル イ

メージ、 DTB および rootfs イ メージで構成されます。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

イメージ サイズの管理手順

FIT イ メージのサイズを縮小するには、 次の手順を実行します。

1. 次のコマンドを実行して、 RootFS 設定メニューを起動します。

$ cd <plnx-proj-root>$ petalinux-config -c rootfs

[Filesystem Packages] を選択します。 このサブメニューには、 RootFS パッケージに対応するオプシ ョ ンのリ ス トが表示

されます。 この中に不要なパッケージがある場合、 これらを無効にする と RootFS イ メージのサイズを縮小できます。

2. 次のコマンドを実行して、 カーネル設定メニューを起動します。

$ cd <plnx-proj-root>$ petalinux-config -c kernel

[General Setup] を選択します。 このサブメニューには、 config の項目を設定するオプシ ョ ンがあ り ます。 システム

で必須でない項目がある場合、 これらを無効にする とカーネル イ メージのサイズを縮小できます。 たとえば

CONFIG_SHMEM、 CONFIG_AIO、 CONFIG_SWAP、 CONFIG_SYSVIPC などです。 詳細は、 Linux カーネルのマニュ

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

注意: 一部の config 項目を無効にする と、 ブートに失敗するこ とがあ り ます。 したがって、 これらを無効にする場

合は config 項目に関する知識が求められます。

ヒン ト : 余分な config 項目とファ イル システム パッケージを含める と、カーネル イ メージ サイズと RootFS サイズが

それぞれ大き くな り ます。

注記: カーネルまたは rootfs のサイズが 128MB を超えた場合は、 次の手順を実行する必要があ り ます。

1. platform-top.h で Bootm の長さを定義します。

#define CONFIG_SYS_BOOTM_LEN <value greater then image size>

2. platform-top.h で CONFIG_SYS_BOOTMAPSZ の定義を削除します。

リファレンス ガイド 41UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

INITRAMFS ブートの設定

INITRAMFS (処理 RAM ファ イル システム) は initrd の後継です。PetaLinux 起動プロセスでメモ リにロード される

初期ファイル システムの cpio アーカイブです。 Linux カーネルはこれを RootFS と してマウン ト し、 初期化プロセ

スを開始します。

このセクシ ョ ンでは、 INITRAMFS ブートの設定方法について説明します。

前提条件

このセクシ ョ ンでは、 新規 PetaLinux プロジェク ト を作成済み ( 「新規 PetaLinux プロジェク トの作成」 参照) で、

ハード ウェア プラ ッ ト フォームをインポート済み ( 「ハード ウェア コンフ ィギュレーシ ョ ンのインポート 」 参照) で

あるものと仮定します。

INITRAMFS ブートの設定手順

1. RootFS タイプを INITRAMFS に設定します。 詳細は、 「ルート ファ イル システム タイプの設定」 を参照して く

ださい。

2. システム イ メージをビルド します。 詳細は、 「システム イ メージのビルド」 を参照してください。

3. 次のいずれかの方法でシステム イ メージをブート します。

a. QEMU で PetaLinux イ メージをブートする ( 「QEMU での PetaLinux イ メージのブート 」 参照)。

b. SD カードを使用してハード ウェア上で PetaLinux イ メージをブートする ( 「SD カードを使用したハード ウェ

ア上での PetaLinux イ メージのブート 」 参照)。

c. JTAG を使用してハード ウェア上で PetaLinux イ メージをブートする ( 「JTAG を使用したハード ウェア上で

の PetaLinux イ メージのブート 」 参照)。

重要: PetaLinux のデフォルト RootFS は INITRAMFS です。

TFTP ブートの設定

このセクシ ョ ンでは、 ホス ト と PetaLinux イ メージを TFTP ブートに設定する方法について説明します。

ヒン ト : TFTP ブートではカーネル ソース変更のたびにイ メージをフラ ッシュする必要がなく、 JTAG ブート よ り も

はるかに高速なので、 時間を大幅に短縮できます。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• 新規 PetaLinux プロジェク ト を作成済み ( 「新規 PetaLinux プロジェク トの作成」 参照) で、 ハード ウェア プラ ッ

ト フォームをインポート済み ( 「ハード ウェア コンフ ィギュレーシ ョ ンのインポート 」 参照) であるこ と。

• ホス ト上で TFTP サーバーが動作しているこ と。

リファレンス ガイド 42UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

PetaLinux の設定とシステム イメージのビルド

PetaLinux を TFTP ブート用に設定し、 システム イ メージをビルドする手順は次のとおりです。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Image Packaging Configuration] を選択します。

4. [Copy final images to tftpboot] を選択し、 [tftpboot directory] を設定します。デフォルトでは TFTP ディ レク ト リ ID

は /tftpboot です。

5. 設定を保存し、 「システム イ メージのビルド」 で説明した手順でシステム イ メージをビルド します。

NFS ブートの設定

Linux システムの も重要なコンポーネン トの 1 つがルート ファ イル システムです。 開発用のルート ファ イル シス

テムには、 開発に役立つすべてのツールが置かれます。 このよ うなルート ファ イル システムはサイズが非常に大き

くなるこ とが多いため、 フラ ッシュ メモ リに格納するのは困難です。

このよ うな場合、 ルート ファ イル システム全体をネッ ト ワークからマウン ト し、 ホス ト システムと ターゲッ トが同

じファ イルを共有できるよ うにする と便利です。 ルート ファ イル システムは短時間で変更でき、 システム実行中に

オンザフライでも変更できます。 このよ うなシステムをセッ ト アップする方法の 1 つと して もよ く使われるのが、

NFS です。

ヒン ト : NFS の場合、 新規ファイルに対する手動での更新は必要あ り ません。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• 新規 PetaLinux プロジェク ト を作成済み ( 「新規 PetaLinux プロジェク トの作成」 参照) で、 ハード ウェア プラ ッ

ト フォームをインポート済み ( 「ハード ウェア コンフ ィギュレーシ ョ ンのインポート 」 参照) であるこ と。

• Linux ファ イルおよびディレク ト リのパーミ ッシ ョ ンがあるこ と。

• ホス ト上で NFS サーバーがセッ ト アップされているこ と。

PetaLinux の設定とシステム イメージのビルド

PetaLinux を NFS ブート用に設定し、 システム イ メージをビルドする手順は次のとおりです。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

リファレンス ガイド 43UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

3. [Image Packaging Configuration] を選択します。

4. [Root filesystem type] を選択します。

5. RootFS タイプと して [NFS] を選択します。

6. NFS ルート ディ レク ト リの位置を選択し、 /home/NFSshare に設定します。

7. menuconfig を終了し、 設定を保存します。 自動生成された DTSI に含まれる bootargs は、 PetaLinux が SD カード

のデフォルト設定から rootfs をロードする と更新されます。

<plnx-proj-root>/components/plnx_workspace/device-tree-generation/plnx_aarch64-syst

em.dts をチェッ クできます。

8. システム イ メージをビルド します。 詳細は、 「システム イ メージのビルド」 を参照してください。

9. bootargs の変更は、 ビルド後に反映されます。

NFS によるブート

NFS ブートでは、 RootFS は NFS 経由でマウン ト されます。 ただしブート ローダー (fsbl、 ビッ ト ス ト リーム、

U-Boot) とカーネルは、 次に示すいくつかの方法でダウンロードできます。

1. JTAG: この場合、 ブート ローダーとカーネルは JTAG 経由でターゲッ トにダウンロード されます。 詳細は、

「JTAG を使用したハード ウェア上での PetaLinux イ メージのブート 」 を参照してください。

ヒン ト : JTAG ブートで prebuilt 機能を使用する場合、 イ メージを prebuilt ディ レク ト リにパッケージする必要があ り

ます。 詳細は、 「ビルド済みイ メージのパッケージ」 を参照してください。

2. TFTPBOOT: この場合、 ブート ローダーは JTAG 経由でダウンロード され、 カーネルは TFTPBOOT 経由でター

ゲッ トにダウンロード されます。 詳細は、 「TFTP を使用したハード ウェア上での PetaLinux イ メージのブート 」

を参照してください。

3. SD カード : この場合、 ブート ローダー (BOOT.BIN) とカーネル イ メージ (image.ub) は SD カードにコピーさ

れ、 SD カードからダウンロード されます。 詳細は、 「SD カードを使用したハード ウェア上での PetaLinux イ

メージのブート 」 を参照してください。

SD カード外部ファイル システム ブートの設定

このセクシ ョ ンでは、 SD カード外部ファイル システム ブート を設定する方法について説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• 新規 PetaLinux プロジェク ト を作成済み ( 「新規 PetaLinux プロジェク トの作成」 参照) で、 ハード ウェア プラ ッ

ト フォームをインポート済み ( 「ハード ウェア コンフ ィギュレーシ ョ ンのインポート 」 参照) であるこ と。

• 容量 4GB 以上の SD メモ リ カード。 十分なファイル転送速度が得られるよ うに、 スピード グレード 6 以上の

カードを推奨します。

リファレンス ガイド 44UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

SD カードを準備する

PetaLinux SD カード外部ファイル システム ブート用に SD カードを準備する手順は次のとおりです。

1. gparted などのパーティシ ョ ン エディ ターを使用して SD カードを 2 つのパーティシ ョ ンにフォーマッ ト します。

2. 第 1 パーティシ ョ ンは 60MB 以上のサイズと し、 FAT32 ファ イル システムでフォーマッ ト します。 このパー

ティシ ョ ンの前には 4MB の未割り当て領域が必要です。 第 1 パーティシ ョ ンにはブート ローダー、 デバイス ツ

リーおよびカーネル イ メージを格納します。 このパーティシ ョ ンは、 ラベル名を BOOT と します。

3. SD カードの残り領域全体を第 2 パーティシ ョ ンと し、 ext4 ファ イル システムでフォーマッ ト します。 この

パーティシ ョ ンにはシステム ルート ファ イル システムを格納します。 このパーティシ ョ ンは、 ラベル名を

rootfs と します。

ヒン ト : 大限の性能を得るには、 SD カードのパーティシ ョ ンを 4MB 境界に揃える必要があ り ます。

PetaLinux の設定とシステム イメージのビルド

PetaLinux を SD カード外部ファイル システム ブート用に設定し、 システム イ メージをビルドする手順は次のとおり

です。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [Image Packaging Configuration] を選択します。

4. [Root filesystem type] を選択します。

5. RootFS タイプと して [SD card] を選択します。

6. menuconfig を終了し、 設定を保存します。 自動生成された DTSI に含まれる bootargs は、 PetaLinux が SD カード

のデフォルト設定から rootfs をロードする と更新されます。

<plnx-proj-root>/components/plnx_workspace/device-tree-generation/system-conf.dtsi

をチェッ クできます。

注記: これらの変更はビルド後に反映されます。

7. PetaLinux イ メージをビルド します。 詳細は、 「システム イ メージのビルド」 を参照してください。

8. ブート イ メージを生成します。詳細は、「Zynq UltraScale+ MPSoC 用ブート イ メージの生成」を参照してください。

9. 生成された rootfs.cpio.gz ファ イルは images/linux ディ レク ト リにあ り ます。 cpio を抽出するには、

gzip -d rootfs.cpio.gz を実行します。

リファレンス ガイド 45UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

イメージ ファイルをコピーする

このセクシ ョ ンでは、 イ メージ ファ イルを SD カードの各パーティシ ョ ンにコピーする方法について説明します。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. BOOT.BIN および image.ub を SD カードの BOOT パーティシ ョ ンにコピーします。 image.ub ファ イルには、

デバイス ツ リーとカーネル イ メージ ファ イルが含まれます。

$ cp images/linux/BOOT.BIN /media/BOOT/$ cp images/linux/image.ub /media/BOOT/

3. rootfs.cpio ファ イルを SD カードの rootfs パーティシ ョ ンにコピーし、 ファ イル システムを抽出します。

$ cp images/linux/rootfs.cpio /media/rootfs/$ cd /media/rootfs$ sudo pax -rvf rootfs.cpio

この SD カード外部イ メージをブートする方法は、 「SD カードを使用したハード ウェア上での PetaLinux イ メージの

ブート 」 を参照してください。

ト ラブルシューテ ィング

ビルド済みアプリケーシ ョ ンの取り込み

ザイ リ ンクス SDK など PetaLinux 以外の環境で開発したアプリ ケーシ ョ ンがある場合、 アプリ ケーシ ョ ンのバイナ

リ を単に PetaLinux のルート ファ イル システムに追加したい場合があ り ます。 この場合、 アプリ ケーシ ョ ン テンプ

レート を作成して既存のコンテンツをターゲッ ト ファ イル システムに追加できるよ うにする必要があ り ます。

このセクシ ョ ンでは、 コンパイル済みアプリ ケーシ ョ ンを PetaLinux ルート ファ イル システムに取り込む方法につ

いて説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

表 1‐13: SD カード外部ファイル システム ブートの設定

問題/エラー メ ッセージ 説明/解決方法

EXT4-fs (mmcblk0p2): mounted

filesystem with ordered data mode.

Opts: (null) Kernel panic - not

syncing: No working init found.

問題の説明

Linux カーネルが EXT4 ファ イル システムをマウン トできず、 working init を検

出できなかったこ とを示すメ ッセージです。

解決方法

SD カードの rootfs パーティシ ョ ンで RootFS を抽出します。 詳細は、 「Extract

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

リファレンス ガイド 46UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ビルド済みアプリケーシ ョ ンの取り込み手順

ビルド済みアプリ ケーシ ョ ン (こ こでは myapp と します) を PetaLinux ルート ファ イル システムに取り込むには、 次

の手順を実行します。

1. コンパイル済みコードが、 MicroBlaze や ARM など PetaLinux のターゲッ ト アーキテクチャ用にコンパイルされ

ているこ とを確認します。

2. 次のコマンドを実行してアプリ ケーシ ョ ンを作成します。

$ petalinux-create -t apps --template install --name myapp --enable

3. 新規に作成されたアプリ ケーシ ョ ン ディレク ト リに移動します。

$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp/files/

4. このディ レク ト リにある myapp を削除し、 ビルド済みの myapp をコピーします。

$ rm myapp$ cp <path-to-prebuilt-app> .

重要: インス トール テンプレート アプリ ケーシ ョ ンによってターゲッ ト ファ イル システムにインス トールされるバ

イナリ データが、 実際のシステムの基盤ハードウェア インプ リ メンテーシ ョ ンと互換であるこ とを確認する必要が

あ り ます。

ビルド済みモジュールの取り込み

コンパイル済みカーネル モジュールがある場合、 このモジュールを単に PetaLinux のルート ファ イル システムに追

加したい場合があ り ます。 このセクシ ョ ンでは、 コンパイル済みモジュールを PetaLinux ルート ファ イル システム

に取り込む方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

ビルド済みモジュールの取り込み手順

ビルド済みモジュール (こ こでは mymodule と します) を PetaLinux ルート ファ イル システムに取り込むには、次の手

順を実行します。

1. コンパイル済みカーネル モジュールが、 MicroBlaze や ARM など PetaLinux のターゲッ ト アーキテクチャ用にコ

ンパイルされているこ とを確認します。

2. モジュール プロジェク ト を作成するには、 次のコマンドを実行します。

$ petalinux-create -t apps --template install --name mymodule --enable

3. 新規に作成されたモジュール ディレク ト リに移動します。

$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/mymodule/files

リファレンス ガイド 47UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

4. ビルド済みライブラ リの mymodule を置きます。

$ cp <path-to-prebuilt-module>/gpiomod.ko./

5. mymodule.bb をエディ ターで開き、 次のよ うに編集します。

## This file is the mymodule recipe.#

SUMMARY = "Simple shivamod application"SECTION = "PETALINUX/apps"LICENSE = "MIT"LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://gpiomod.ko \ "

inherit module-base

S = "${WORKDIR}"

do_install() {install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/extrainstall -m 0755 ${S}/gpiomod.ko ${D}/${base_libdir}/modules/${KERNEL_VERSION}/extra/

}

FILES_${PN} = "${base_libdir}/modules/"

6. 次を実行します。

petalinux-build

カスタム アプリケーシ ョ ンの追加

このセクシ ョ ンでは、 カスタム アプリ ケーシ ョ ンを PetaLinux ルート ファ イル システムに追加する方法について説

明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

カスタム アプリケーシ ョ ンの追加手順

基本的な手順は次のとおりです。

1. ワークステーシ ョ ンで PetaLinux プロジェク トから petalinux-create -t apps を実行してユーザー アプリ ケーシ ョ ン

を作成します。

$ cd <plnx-proj-root>$ petalinux-create -t apps [--template TYPE] --name <user-application-name> --enable

リファレンス ガイド 48UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

たとえば myapp という名前のユーザー アプリ ケーシ ョ ンを C (デフォルト ) で作成する場合は次のよ うに実行し

ます。

$ petalinux-create -t apps --name myapp --enable

または

$ petalinux-create -t apps --template c --name myapp --enable

C++ アプリ ケーシ ョ ン テンプレート を作成する場合は、 次のよ うに --template c++ オプシ ョ ンを指定します。

$ petalinux-create -t apps --template c++ --name myapp --enable

注記: アプリ ケーシ ョ ン名に 「_」 が含まれる場合は、 付録 H 「アプ リ ケーシ ョ ン/モジュール名に 「_」 が含まれ

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

autoconf アプリ ケーシ ョ ン テンプレート を作成する場合は、次のよ うに --template autoconf オプシ ョ ンを指定

します。

$ petalinux-create -t apps --template autoconf --name myapp --enable

新規アプリ ケーシ ョ ンは <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp ディ レク ト

リに作成されます。

2. 新規に作成されたアプリ ケーシ ョ ン ディレク ト リに移動します。

$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp

このディ レク ト リには、 PetaLinux のテンプレートで生成された次のファイルがあ り ます。

注記: サードパーティ ユーティ リ ティによるデバッグでビルド中間生成物を使用する場合は、

<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。

RM_WORK_EXCLUDE += “myapp”

注記: ビルド中間生成物はすべて ${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.0-r0/ にあ り ます。

3. myapp.c/myapp.cpp は編集が可能で、 アプリ ケーシ ョ ンの実際のソース コードで置き換えるこ とができま

す。 後でカスタム ユーザー アプリ ケーシ ョ ンを変更する際は、 このファイルを編集します。

表 1‐14: カスタム アプリケーシ ョ ンを追加してテンプレートで生成されるファイル

テンプレート 説明

<plnx-proj-root>/project-

spec/meta-user/recipes-co

re/images/petalinux-image

.bbappend

コンフ ィギュレーシ ョ ン ファ イル テンプレート。 このファ イルは、 カスタ

ム アプリ ケーシ ョ ンを PetaLinux rootfs メニュー コンフ ィギュレーシ ョ ンに

どのよ うに統合するかを制御します。 また、 app および dev、 dbg パッケージ

をターゲッ ト ルート ファ イル システムに含めるかど うかも このファイルで

決定します。

Makefile コンパイル ファ イル テンプレート。 カスタム アプリ ケーシ ョ ンをビルド し

てルート ファ イル システムにインス トールするためのターゲッ ト を含む基

本的な Makefile です。 ソース コード ファイルをプロジェク トに追加した場

合、 このファイルを編集する必要があ り ます。

README ユーザー アプリ ケーシ ョ ンのビルド方法について説明したファイル。

myapp.c (C の場合)、

myapp.cpp (C++ の場合)

ユーザーの指定に応じて C または C++ で記述したシンプルなアプリ ケーシ ョ

ン プログラム。

リファレンス ガイド 49UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

注意: 不要になったアプリ ケーシ ョ ン ディ レク ト リは削除できます。 アプリ ケーシ ョ ン ディ レク ト リ を削除した場

合、 <plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappend を開いて

「IMAGE_INSTALL_append= “ myapp”」 の行も削除する必要があ り ます。 この行を残したままディ レク ト リ を削除す

る と、 エラーになり ます。

カスタム モジュールの追加

このセクシ ョ ンでは、 カスタム カーネル モジュールを PetaLinux ルート ファ イル システムに追加する方法について

説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

カスタム モジュールの追加手順

1. ワークステーシ ョ ンで PetaLinux プロジェク トから petalinux-create -t modules を実行してユーザー モジュールを

作成します。

$ cd <plnx-proj-root>$ petalinux-create -t modules --name <user-module-name> --enable

たとえば mymodule という名前のユーザー モジュールを C (デフォルト ) で作成する場合は次のよ うに実行します。

$ petalinux-create -t modules --name mymodule --enable

または

$ petalinux-create -t modules --name mymodule --enable

petalinux-create -t モジュールの使用法は、 -h または --help オプシ ョ ンを使用して確認して ください。

新規モジュールは <plnx-proj-root>/project-spec/meta-user/recipes-modules/mymodule ディ レク ト

リに作成されます。

注記: アプリ ケーシ ョ ン名に 「_」 が含まれる場合は、 付録 H 「アプ リ ケーシ ョ ン/モジュール名に 「_」 が含まれ

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

2. 新規に作成されたモジュール ディレク ト リに移動します。

$ cd <plnx-proj-root>/project-spec/meta-user/recipes-modules/mymodule

リファレンス ガイド 50UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

このディ レク ト リには、 PetaLinux のテンプレートで生成された次のファイルがあ り ます。

3. mymodule.c は編集が可能で、 モジュールの実際のソース コードで置き換えるこ とができます。 後でカスタム

ユーザー モジュールを変更する際は、 このファイルを編集します。

注記: サードパーティ ユーティ リ ティによるデバッグでビルド中間生成物を使用する場合は、

project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。

RM_WORK_EXCLUDE += "mymodule"

注記: ビルド中間生成物はすべて ${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.0-r0/ にあ り ます。

注意: 不要になったモジュール ディ レク ト リは削除できます。 モジュール ディ レク ト リ を削除した場合、

<plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappend を開いて

「IMAGE_INSTALL_append= “mymodule”」 の行も削除する必要があ り ます。 petalinux-image.bbappend でこの行を残し

たままディ レク ト リ を削除する と、 エラーになり ます。

ユーザー アプリケーシ ョ ンのビルド

このセクシ ョ ンでは、 コンパイル済み/カスタム ユーザー アプリ ケーシ ョ ンをビルド して PetaLinux ルート ファ イル

システムにインス トールする方法について説明します。

前提条件

このセクシ ョ ンでは、 コンパイル済みアプリ ケーシ ョ ンを PetaLinux ルート ファ イル システムに取り込み済み ( 「ビ

ルド済みアプリ ケーシ ョ ンの取り込み」 参照)、 またはカスタム アプリ ケーシ ョ ンを PetaLinux ルート ファ イル シス

テムに追加済み ( 「カスタム アプリ ケーシ ョ ンの追加」 参照) であるものと仮定します。

表 1‐15: カスタム モジュールを追加してテンプレートで生成されるファイル

テンプレート 説明

Makefile コンパイル ファ イル テンプレート。 カスタム モジュールをビルド してルー

ト ファ イル システムにインス トールするためのターゲッ ト を含む基本的な

Makefile です。 ソース コード ファ イルをプロジェク トに追加した場合、 この

ファイルを編集する必要があ り ます。 Makefile のカスタマイズ方法は、 こち

らを参照してください。

README ユーザー モジュールのビルド方法について説明したファイル。

mymodule.c C で記述したシンプルなカーネル モジュール。

<plnx-proj-root>/project-

spec/meta-user/recipes-co

re/images/petalinux-image

.bbappened

コンフ ィギュレーシ ョ ン ファ イル テンプレート。 このファ イルは、 カスタ

ム アプリ ケーシ ョ ンを PetaLinux rootfs メニュー コンフ ィギュレーシ ョ ン シ

ステムにどのよ うに統合するかを制御します。 また、 app および dev、 dbg

パッケージをターゲッ ト ルート ファ イル システムに含めるかど うかも この

ファイルで決定します。

リファレンス ガイド 51UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ユーザー アプリケーシ ョ ンのビルド手順

プロジェク ト ディレク ト リ <plnx-proj-root> で petalinux-build を実行する と、 選択したユーザー アプリ

ケーシ ョ ン (myapp) を含む形でシステム イ メージが再ビルド されます。 このビルド プロセスの出力ディレク ト リは

<TMPDIR>/work/aarch64-xilinx-linux/myapp/1.0-r0/ です。

$ petalinux-build

myapp を既存のシステム イ メージに含めてビルドするには、 次を実行します。

$ cd <plnx-proj-root>$ petalinux-build -x do_populate_sysroot$ petalinux-build -c rootfs$ petalinux-build -x package

注記: do_populate_sysroot を指定する と、 menuconfig で選択したビルド済みパッケージに基づいて sysroot が生

成されます。 do_populate_sysroot はアプリ ケーシ ョ ンをビルドする前に少なく と も 1 回実行する必要があ り ま

すが、 毎回実行する必要はあ り ません。

petalinux-build のその他のオプシ ョ ンについては、 --help で確認してください。 こ こでは、 一部のオプシ ョ

ンについて説明します。

• 選択したユーザー アプリ ケーシ ョ ンをク リーンアップする方法

$ petalinux-build -c myapp -x do_clean

• 選択したユーザー アプリ ケーシ ョ ンを再ビルドする方法

$ petalinux-build -c myapp

この場合、 アプ リ ケーシ ョ ンのみがコンパイルされます。 コンパイル済み実行ファイルは

${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.0-r0/ ディレク ト リに格納されます。

注記: サードパーティ ユーティ リ ティによるデバッグでビルド中間生成物を使用する場合は、

RM_WORK_EXCLUDE += “myapp” を

<plnx-proj-root>/<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に追

加します。 この行がないと、 ビルド後にすべての実行ファイルが bitbake によって削除されます。

myapp のすべてのタスクを リ ス ト表示する方法: petalinux-build -c myapp -x listtasks

• 選択したユーザー アプリ ケーシ ョ ンをインス トールする方法

$ petalinux-build -c /myapp -x do_install

このコマンドを実行する と、 アプリ ケーシ ョ ンがターゲッ トの rootfs ホス ト コピーにインス トールされます。

<TMPDIR>/work/plnx_aarch64-xilinx-linux/petalinux-user-image/1.0-r0/rootfs/

注記: TMPDIR は petalinux-config メニューの [Yocto-settings --> TMPDIR] にあ り ます。 プロジェク トがローカル ス ト

レージにある場合、 TMPDIR は <plnx-proj-root>/build/tmp/ です。 複数の異なる PetaLinux プロジェク トで

TMPDIR に同じ場所を設定する とビルド エラーが発生します。

Zynq UltraScale+ MPSoC の場合:ARCH: aarch64MACHINE: plnx_aarch64

リファレンス ガイド 52UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ユーザー アプリケーシ ョ ンのテスト

このセクシ ョ ンでは、 ユーザー アプリ ケーシ ョ ンのテス ト方法について説明します。

前提条件

このセクシ ョ ンでは、 コンパイル済み/カスタム ユーザー アプリ ケーシ ョ ンのビルド と インス トールが完了している

ものと仮定します。 詳細は、 「ユーザー アプリ ケーシ ョ ンのビルド」 を参照して ください。

ユーザー アプリケーシ ョ ンのテスト手順

1. 新規に作成したシステム イ メージをブート します。

2. ターゲッ ト システムのログイン コンソールで次のコマンドを実行し、 ユーザー アプリ ケーシ ョ ンが PetaLinux

システムに存在するこ とを確認します。

# ls /usr/bin

Makefile でユーザー アプリ ケーシ ョ ンの位置を変更していない限り、 ユーザー アプリ ケーシ ョ ンは /usr/bin ディ

レク ト リに置かれます。

3. ターゲッ ト システムのコンソールでユーザー アプリ ケーシ ョ ンを実行します。 たとえばユーザー アプリ ケー

シ ョ ンが myapp の場合、 次のよ うに実行します。

# myapp

4. アプリ ケーシ ョ ンの実行結果が期待どおりであるこ とを確認します。

新規アプリ ケーシ ョ ンがターゲッ ト ファ イル システムに見つからない場合、 前のセクシ ョ ンで説明した

petalinuxbuild -x package の手順を完了しているこ とを確認してください。 これによ り、 アプリ ケーシ ョ ン

バイナリがルート ファ イル システムのステージング エリ アにコピーされ、 ターゲッ ト システム イ メージがこの新

しいファイル システムで更新されます。

ユーザー モジュールのビルド

このセクシ ョ ンでは、 コンパイル済み/カスタム ユーザー カーネル モジュールをビルド して PetaLinux ルート ファ イ

ル システムにインス トールする方法について説明します。

前提条件

このセクシ ョ ンでは、 コンパイル済みアプリ ケーシ ョ ンを PetaLinux ルート ファ イル システムに取り込み済み ( 「ビ

ルド済みモジュールの取り込み」 参照)、 またはカスタム モジュールを PetaLinux ルート ファ イル システムに追加済

み ( 「カスタム モジュールの追加」 参照) であるものと仮定します。

リファレンス ガイド 53UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ユーザー モジュールのビルド手順

プロジェク ト ディレク ト リ <plnx-proj-root> で petalinux-build を実行する と、選択したユーザー モジュー

ル (mymodule) を含む形でシステム イ メージが再ビルド されます。 このビルド プロセスの出力ディ レク ト リは

<TMPDIR>/work/{ARCH}-xilinx-linux-gnueabi/mymodule/1.0-r0/ です。

$ petalinux-build

mymodule を既存のシステム イ メージに含めてビルドするには、 次を実行します。

$ cd <plnx-proj-root>$ petalinux-build -c rootfs$ petalinux-build -x package

petalinux-build のその他のオプシ ョ ンについては、 --help で確認してください。 こ こでは、 一部のオプシ ョ

ンについて説明します。

• 選択したユーザー モジュールをク リーンアップする方法

$ petalinux-build -c mymodule -x do_cleansstate

• 選択したユーザー モジュールを再ビルドする方法

$ petalinux-build -c mymodule

この場合、 モジュールのみがコンパイルされます。 コンパイル済み実行ファイルは

<TMPDIR>/work/aarch64-xilinx-linux/mymodule/1.0-r0/ ディ レク ト リに格納されます。

このモジュールのすべてのタスクを リ ス ト表示する方法: petalinux-build -c mymodule -x listtasks

• 選択したユーザー モジュールをインス トールする方法

$ petalinux-build -c mymodule -x do_install

このコマンドを実行する と、 モジュールがターゲッ トの rootfs ホス ト コピーにインス トールされます。

<TMPDIR>/work/plnx_aarch64-xilinx-linux/petalinux-user-image/1.0-r0/rootfs/

注記: TMPDIR は petalinux-config メニューの [Yocto-settings --> TMPDIR] にあ り ます。 複数の異なる PetaLinux プロ

ジェク トで同じ TMPDIR を設定しないでください。 ビルド エラーが発生します。 プロジェク トがローカル ス ト レー

ジにある場合、 TMPDIR は <plnx-proj-root>/build/tmp/ です。

Zynq UltraScale+ MPSoC の場合:ARCH: aarch64

MACHINE: plnx_aarch64

リファレンス ガイド 54UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

PetaLinux の自動ログイン

このセクシ ョ ンでは、 ログイン情報を入力せずにブートから直接ログインする方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

PetaLinux の自動ログイン手順

PetaLinux に自動ログインする手順は次のとおりです。

1. cd <plnx-proj-root>

2. petalinux-config を実行します。

3. [Yocto-settings -->] を選択し、 [Enable debug-tweaks] を選択します。

4. 設定を保存して終了します。

5. petalinux-build を実行します。

起動時のアプリケーシ ョ ン自動実行

このセクシ ョ ンでは、 システム起動時に自動的に実行するアプリ ケーシ ョ ンを追加する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux アプリ ケーシ ョ ンの追加とビルドが完了しているものと仮定します。 詳細は、 「カ

スタム アプリ ケーシ ョ ンの追加」 および 「ユーザー アプリ ケーシ ョ ンのビルド」 を参照してください。

起動時にアプリケーシ ョ ンを自動実行する手順

ビルド済みまたは新規に作成したカスタム ユーザー アプリ ケーシ ョ ンの myapp が PetaLinux プロジェク トの

<plnx-proj-root>/project-spec/meta-user/recipes-apps/ にある場合、 このアプリ ケーシ ョ ンをシス

テム起動時に自動で実行できます。 自動実行を有効にする手順は次のとおりです。

ヒン ト : 既存のビルド済みアプリ ケーシ ョ ンを PetaLinux ルート ファ イル システムに取り込んでいない場合は、 「ビ

ルド済みアプリ ケーシ ョ ンの取り込み」 を参照してください。

カスタム アプリ ケーシ ョ ンを作成して PetaLinux ルート ファ イル システムにインス トールする場合は、 「カスタム

アプリ ケーシ ョ ンの追加」 を参照してください。

終了するこ とのないブロ ッキング アプリ ケーシ ョ ンを自動実行する場合は、 このアプリ ケーシ ョ ンをデーモンと し

て実行してください。

リファレンス ガイド 55UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

1. 新規インス トール アプリ ケーシ ョ ン myapp-init を作成します。

cd <plnx-proj-proot>/petalinux-create -t apps --template install -n myapp-init --enable

2. project-spec/meta-user/recipes-apps/myapp-init/myapp-init.bb をエディ ターで開き、 次のよ

うに編集します。

## This file is the myapp-init recipe.#

SUMMARY = "Simple myapp-init application"SECTION = "PETALINUX/apps"LICENSE = "MIT"LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://myapp-init \ "

S = "${WORKDIR}"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

inherit update-rc.d

INITSCRIPT_NAME = "myapp-init"INITSCRIPT_PARAMS = "start 99 S ."

do_install() { install -d ${D}${sysconfdir}/init.d install -m 0755 ${S}/myapp-init ${D}${sysconfdir}/init.d/myapp-init}

FILES_${PN} += "${sysconfdir}/*"

3. myapp をデーモンと して実行します。

edit the file project-spec/meta-user/recipes-apps/myapp-init/files/myapp-initThe file should look like#!/bin/sh

DAEMON=/usr/bin/myapp

start (){ echo " Starting myapp" start-stop-daemon -S -o --background -x $DAEMON}

stop (){ echo " Stoping myapp" start-stop-daemon -K -x $DAEMON}

restart()

リファレンス ガイド 56UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

{ stop start}

[ -e $DAEMON ] || exit 1

case "$1" in start) start; ;; stop) stop; ;; restart) restart; ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esacexit $?

4. petalinux-build を実行します。

QEMU による  Linux カーネルのデバッグ

このセクシ ョ ンでは、 QEMU 環境で GDB デバッガーを使用して Linux カーネルをデバッグする方法について説明し

ます。 なお、 この機能は Zynq ファ ミ リ デバイス プラ ッ ト フォームでのみテス ト しています。

前提条件

このセクシ ョ ンでは、 PetaLinux システム イ メージのビルドが完了しているものと仮定します。 詳細は、 「システム

イ メージのビルド」 を参照してください。

QEMU による  Linux カーネルのデバッグ手順

1. 次のコマンドを実行し、 現在ビルド済みの Linux を使用して QEMU を起動します。

$ petalinux-boot --qemu --kernel

2. コンソールに QEMU コマンドの詳細が表示されます。-gdb tcp:<TCP_PORT> で GDB の TCP ポート を確認し

ます。

3. PetaLinux の settings スク リプ トが実行済みであるこ とを確認して別のコマンド コンソールを開き、 Linux ディ レ

ク ト リに移動します。

$ cd "<plnx-proj-root>/images/linux"

4. vmlinux カーネル イ メージに対してコマンド モードで GDB を起動します。

$ petalinux-util --gdb vmlinux

リファレンス ガイド 57UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

gdb プロンプ トが表示されます。 次に例を示します。

GNU gdb (Linaro GDB 2017.01) 7.12.1.20170130-gitCopyright (C) 2017 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=aarch64-linux-gnu".Type "show configuration" for configuration details.For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>.Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".Type "apropos word" to search for commands related to "word"...Reading symbols from vmlinux...done.

5. 次の GDB コマンドを実行し、 GDB で QEMU ターゲッ トに接続します。

(gdb) target remote :9000

6. QEMU の実行を継続します。

(gdb) continue

7. Ctrl+C キーを押すとカーネル実行を中断して GDB プロンプ トに戻るこ とができます。

8. ブレークポイン ト を設定し、 ほかの GDB コマンドを実行してカーネルをデバッグできます。

注意: ポート 9000 がほかのプロセスで使用中の場合、 petalinux-boot は別のポートの使用を試みます。 petalinux-boot の

出力を見て、 どのポートが使用されているかを確認してください。 次の例では、 ポート 9001 が使用されています。

INFO: qemu-system-arm ...-gdb tcp::9001 ...

ヒン ト : petalinux-config --kernel を実行し、 カーネル コンフ ィギュレーシ ョ ン メニューで [Kernel hacking] → [Kernel

debugging] を選択してカーネル デバッグを有効にし、 カーネル デバッグ シンボルをイ メージに含めるこ とを推奨し

ます。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 QEMU で Linux カーネルをデバッグする際に発生する一般的な問題について説明します。

表 1‐16: QEMU による  Linux カーネルのデバッグに関する ト ラブルシューティング

問題/エラー メ ッセージ 説明/解決方法

(gdb) target remote

W.X.Y.Z:9000:9000:

Connection refused.

問題の説明

GDB から QEMU ターゲッ トへの接続に失敗しました。 QEMU がポート 9000

を使用していないこ とが考えられます。

解決方法

• QEMU コンソールをチェッ ク し、 QEMU が動作しているこ とを確認します。

• Linux ホス ト コマンド ライン コンソールを確認します。 こ こにはすべての

QEMU コマンドが表示されるため、 QEMU が使用しているポート を確認で

きます。

リファレンス ガイド 58UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

TCF エージェン トによるアプリケーシ ョ ンのデバッグ

このセクシ ョ ンでは、 Eclipse TCF (Target Communication Framework) エージェン ト を使用してユーザー アプリ ケー

シ ョ ンをデバッグする方法について説明します。 このセクシ ョ ンでは、 Zynq ユーザー アプリ ケーシ ョ ン myapp を例

に、 基本的なデバッグ手順について説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• XSDK ツールの使用経験があるこ と。

• Vivado ツールの作業環境が正し くセッ ト アップされているこ と。 詳細は、 「PetaLinux 作業環境のセッ ト アップ」

を参照してください。

• ユーザー アプリ ケーシ ョ ンを作成済みで、 選択したユーザー アプリ ケーシ ョ ンを含むシステム イ メージをビル

ド済みであるこ と。 詳細は、 「ユーザー アプリ ケーシ ョ ンのビルド」 を参照して ください。

デバッグ用のビルド  システムを準備する手順

1. プロジェク ト ディレク ト リに移動します。

$ cd <plnx-proj-root>

2. コマンド コンソールで petalinux-config -c rootfs を実行します。

$ petalinux-config -c rootfs

3. [linux/rootfs Configuration] メニューを下方へスクロールし、 [Filesystem Packages] を選択します。 次のサブメ

ニューが表示されます。

admin ---> audio ---> base ---> baseutils ---> benchmark ---> bootloader ---> console ---> devel ---> fonts ---> kernel ---> libs ---> misc ---> multimedia ---> net ---> network ---> optional ---> utils ---> x11 --->

4. [base --->] サブメニューを選択し、 [misc --->] サブメニューを選択します。

base --->baseutils --->benchmark --->console --->devel --->

リファレンス ガイド 59UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

fonts --->kernel -->libs --->misc --->multimedia -->net -->network -->optional -->utils -->xll -->

5. アルファベッ ト順にパッケージが表示されます。 「t」 で始まる項目までスクロールします。

serf ---> sysfsutils ---> sysvinit-inittab ---> tbb ---> tcf-agent ---> texi2html ---> tiff ---> trace-cmd ---> util-macros ---> v4l-utils --->

6. [tcf-agent] が選択されているこ とを確認します。

[*] tcf-agent[ ] tcf-agent-dev[ ] tcf-agent-dbg

7. [console/network --->] サブメニューを選択し、 [dropbear --->] サブメニューを選択します。

[dropbear-openssh-sftp-server] が選択されているこ とを確認します。

[*] dropbear-openssh-sftp-server

8. メニューを終了します。

9. myapp を含めたターゲッ ト システム イ メージを再ビルド します。 詳細は、 「システム イ メージのビルド」 を参

照してください。

デバッグ セッシ ョ ンの実行手順

1. 新しいイ メージでボード (または QEMU) をブート します。

2. tcf-agent が開始したこ とがブート ログに記録されます。 これは、 次のメ ッセージで確認できます。

Starting tcf-agent: OK

3. ザイ リ ンクス SDK を起動し、 ワークスペースを作成します。

4. [File] → [New] → [Project] をク リ ッ ク してハード ウェア プラ ッ ト フォーム仕様を追加します。

5. ウ ィザード画面で [Xilinx] → [Hardware Platform Specification] をク リ ッ ク します。

6. ハードウェア プロジェク トに名前を付けます (例: ZC702)。

7. ターゲッ ト ハードウェア用の system.hdf を見つけます。 このファイルは、

<plnx-proj-root>/project-spec/hw-description/system.hdf にあ り ます。

8. [Run] → [Debug Configurations] をク リ ッ ク し、 [Debug Launch Configuration] ウ ィンド ウを開きます。

リファレンス ガイド 60UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

9. [Xilinx C/C++ application (System Debugger)] をク リ ッ ク して新規作成し、 設定画面を開きます。

10. [Debug Type] は [Linux Application Debug] に設定します。

11. [New] をク リ ッ ク して接続の詳細を入力します。

12. ターゲッ ト接続に名前を付け、 ホス ト (ターゲッ トの IP アドレス) を指定します。

13. tcf-agent のポート を設定して [OK] をク リ ッ ク します。

X-Ref Target - Figure 1-1

図 1‐1: XSDK デバッグ設定

X-Ref Target - Figure 1-2

図 1‐2: XSDK デバッグの新規ターゲッ ト設定

リファレンス ガイド 61UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

重要: QEMU でデバッグを実行する場合、 非ルート (デフォルト ) またはルート モードでテス トする際の IP および

ポート リ ダイレク トの詳細は、 付録 D 「QEMU 仮想ネッ ト ワーキング モード」 を参照して ください。 たとえば非

ルート モードでテス トする場合、 以降の手順でターゲッ ト IP と して localhost を使用する必要があ り ます。

14. [Application] タブをク リ ッ ク します。

15. [Local File Path] に、 プロジェク ト ディ レク ト リのコンパイル済みアプリ ケーシ ョ ンのパスを指定します

(例: <TMPDIR>/work/aarch64-xilinx-linux/myapp1/1.0-r0/image/usr/bin/)。

注記:デバッグ用イ メージを残すには、 アプリ ケーシ ョ ンを作成する際に

project-spec/meta-user/conf/petalinuxbsp.conf に 「RM_WORK_EXCLUDE += “myapp”」 を追加し

ておく必要があ り ます。

16. ターゲッ ト ファ イル システムの [Remote File Path] には、 アプ リ ケーシ ョ ンがあるディ レク ト リ を指定します

(例: /usr/bin/myapp)。

17. [Debug] をク リ ッ クする と設定が適用され、 デバッグ セッシ ョ ンが開始します (デバッグ パースペクティブ切り

替えの確認を求められた場合は、 承諾します)。

18. これで、 標準 XSDK デバッグ フローを開始できます。

X-Ref Target - Figure 1-3

図 1‐3: XSDK デバッグ設定

リファレンス ガイド 62UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ヒン ト : コードの解析とデバッグには、 次のシ ョート カッ ト キーを使用できます。

Step Into (F5)

Step Over (F6)

Step Return (F7)

Resume (F8)

X-Ref Target - Figure 1-4

図 1‐4: XSDK デバッグ

リファレンス ガイド 63UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

GDB による  Zynq UltraScale+ MPSoC アプリケーシ ョ ンのデバッグ

PetaLinux は、 GDB による Zynq UltraScale+ MPSoC ユーザー アプリ ケーシ ョ ンのデバッグをサポート しています。

このセクシ ョ ンでは、 基本的なデバッグ手順について説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• Vivado ツールの作業環境が正し くセッ ト アップされているこ と。 詳細は、 「PetaLinux 作業環境のセッ ト アップ」

を参照してください。

• ユーザー アプリ ケーシ ョ ンを作成済みで、 選択したユーザー アプリ ケーシ ョ ンを含むシステム イ メージをビル

ド済みであるこ と。 詳細は、 「ユーザー アプリ ケーシ ョ ンのビルド」 を参照して ください。

デバッグ用のビルド  システムを準備する手順

1. プロジェク ト ディレク ト リに移動します。

$ cd <plnx-proj-root>

2. コマンド コンソールで petalinux-config -c rootfs を実行します。

$ petalinux-config -c rootfs

3. [linux/rootfs Configuration] メニューを下方へスクロールし、 [Debugging] を選択します。

Filesystem Packages --->Libs --->Apps --->Modules --->User packages --->PetaLinux RootFS Settings --->

4. [Apps -->] を選択し、 [myapp -->] を選択します。

[ ] myapp

[X] myapp-dbg

[ ] myapp-dev

[myapp-dbg] を選択します。 myapp サブメニューを終了します。

5. [App] サブメニューを終了し、 [Filesystem Packages] を選択した後、 [base] サブメニューを選択します。

misc

6. gdb サブメニュー オプシ ョ ンを選択し、 [gdbserver] を選択します。

selecting_gdb server

[ ] gdb

[ ] gdb-dev

[X] gdbserver

[ ] gdb-dbg

リファレンス ガイド 64UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

7. メニューを終了し、 <Yes> を選択して設定を保存します。

8. ターゲッ ト システム イ メージを再ビルド します。 詳細は、 「システム イ メージのビルド」 を参照して ください。

デバッグ セッシ ョ ンの実行手順

1. 上で作成した新しいイ メージでボード (または QEMU) をブート します。

2. ターゲッ ト システム コンソールでユーザー アプリ ケーシ ョ ンに gdbserver を実行します (ポート 1534 を リ ッ

スンするよ うに設定)。

root@plnx_aarch64:~# gdbserver host:1534 /usr/bin/myappProcess /bin/myapp created; pid = 73Listening on port 1534

1534 は gdbserver ポートです。 未使用ポートであればほかのポートでもかまいません。

3. ワークステーシ ョ ンで、 コンパイル済みユーザー アプリ ケーシ ョ ンのディ レク ト リに移動します。

$ cd <plnx-proj-root>/build/linux/rootfs/apps/myapp

4. GDB ク ライアン ト を実行します。

$ petalinux-util --gdb myapp

5. GDB コンソールが開始します。

...GNU gdb (crosstool-NG 1.18.0) 7.6.0.20130721-cvs...(gdb)

6. GDB コンソールで次のコマンドを実行し、 ターゲッ ト マシンに接続します。

a. ターゲッ ト システムの IP アドレスを使用する (例: 192.168.0.10)。 IP アドレスが分からない場合は、 ター

ゲッ ト コンソールで ifconfig を実行して確認します。

b. ポート 1534 を使用する。 前の手順で gdbserver のポート番号を変更している場合は、 その値を使用します。

重要: QEMU でデバッグを実行する場合、 非ルート (デフォルト ) またはルート モードでテス トする際の IP および

ポート リ ダイレク トの詳細は、 「QEMU 仮想ネッ ト ワーキング モード」 を参照してください。 たとえば非ルート

モードでテス トする場合、 以降の手順でターゲッ ト IP と して localhost を使用する必要があ り ます。

(gdb) target remote 192.168.0.10:1534

GDB コンソールがリモート ターゲッ トに接続します。 ターゲッ ト コンソールの gdbserver によ り、 ホス ト IP の

確認情報が表示されます。

Remote Debugging from host 192.168.0.9

7. プログラムの実行を始める前に、 ブレークポイン ト をいくつか作成します。 GDB コンソールでは、 関数名と行

番号を使用してコードの任意の場所にブレークポイン ト を作成できます。 たとえば main 関数に対するブレー

クポイン トは次のよ うにして作成します。

(gdb) break mainBreakpoint 1 at 0x10000444: file myapp.c, line 10.

8. GDB コンソールで continue コマンドを実行し、 プログラムを実行します。 GDB はプログラムの実行を開始します。

(gdb) continueContinuing.Breakpoint 1, main (argc=1, argv=0xbffffe64) at myapp.c:1010 printf("Hello, PetaLinux World!\n");

リファレンス ガイド 65UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

9. 現在のプログラム実行位置のコード リ ス ト を出力するには、 list コマンドを実行します。

(gdb) list5 */6 #include <stdio.h>78 int main(int argc, char *argv[])9 {10 printf("Hello, PetaLinux World!\n");11 printf("cmdline args:\n");12 while(argc--)13 printf("%s\n",*argv++);14

10. step、 next および continue コマンドを実行できます。 ブレークポイン トの設定と削除は break コマンドで

行います。 コマンドに関する詳細は、 GDB コンソールで help コマンドを実行して確認してください。

11. プログラム実行が完了する と、 ターゲッ ト システムの GDB サーバー アプリ ケーシ ョ ンが終了します。 コン

ソールには次のよ うなメ ッセージが表示されます。

Hello, PetaLinux World!cmdline args:/usr/bin/myappChild exited with status 0GDBserver exitingroot@plnx_aarch64:~#

ヒン ト : ラ イブラ リへのパスを記述した .gdbinit ファ イルが自動的に作成されます。 このファイルの末尾に、 独自の

GDB 初期化コマンドを追加できます。

GDB の詳細

GDB の一般的な使用法について、詳細は www.gnu.org にアクセスし、GDB プロジェク トの資料を参照してください。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 GDB でアプリ ケーシ ョ ンをデバッグする際に発生する一般的な問題について説明します。

表 1‐17: GDB による  Zynq UltraScale+ MPSoC アプリケーシ ョ ンのデバッグに関する ト ラブルシューテ ィング

問題/エラー メ ッセージ 説明/解決方法

GDB error message: <IP

Address>:<port>: Connection

refused. GDB cannot connect to the

target board using <IP>: <port>

問題の説明

GDB ク ライアン トが GDB サーバーに接続できなかったこ とを示すエラー メ ッ

セージです。

解決方法

• ターゲッ ト システムで gdbserver が動作しているこ とを確認します。

• 既に別の GDB ク ラ イアン トが GDB サーバーに接続していないか確認しま

す。 これは、 ターゲッ ト コンソールの表示を見て確認します。 たとえば Remote Debugging from host <IP>

と表示される場合、既に別の GDB クライアン トがサーバーに接続しています。

• IP アドレス とポートが正し く設定されているこ とを確認します。

リファレンス ガイド 66UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

out‐of‐tree ビルドの設定

PetaLinux には、 新版のカーネル/U-Boot ソース コードを Git リ ポジ ト リから自動的にダウンロードする機能があ

り ます。 このセクシ ョ ンでは、 この機能のし くみおよびシステム レベルの menuconfig での使用法について説明しま

す。 このセクシ ョ ンで説明するよ うに、 out-of-tree ビルドには 2 つの方法があ り ます。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト フォームにカスタ

マイズした Linux システムをビルドできる準備が完了しているこ と。 詳細は、 「ハード ウェア コンフ ィギュレー

シ ョ ンのインポート 」 を参照してください。

• インターネッ ト経由で git にアクセスできるこ と。

out‐of‐tree ビルドの設定手順

UBOOT/Kernel の out-of-tree ビルドを設定する手順は次のとおりです。

1. PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

2. 上位のシステム設定メニューを起動します。

$ petalinux-config

3. [linux Components Selection --->] サブメニューを選択します。

° カーネルの場合、 [linux-kernel () --->] を選択後、 [remote] を選択します。

( ) linux-xlnx

( ) ext-local-src

(X) remote

° U-Boot の場合、 [u-boot () --->] を選択後、 [remote] を選択します。

( ) u-boot-plnx

(X) remote

( ) ext-local-src

4. カーネルの場合、 [Remote linux-kernel settings --->] を選択後、 [Remote linux-kernel git URL] を選択し、 Linux カー

ネルの git URL を入力します。

次に例を示します。

git://github.com/Xilinx/linux-xlnx.git;protocol=https

U-Boot の場合、 [Remote u-boot settings --->URL] を選択後、 [Remote u-boot git URL] を選択し、 U-Boot の git URL

を入力します。 次に例を示します。

git://github.com/Xilinx/u-boot-xlnx.git;protocol=https

注記: 「git://」 で始まる URL を入力する必要があ り ます。

リファレンス ガイド 67UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

[Remote git TAG/commit ID] で git タグを設定します。

次に示すいずれかの値を設定しないと、 エラー メ ッセージが表示されます。

1 - リ ポジ ト リの HEAD を示す値

${AUTOREV}

2 - 任意のタグを示す値 petalinux-v2017.1-final

3 - 任意の Commit ID を示す値

commit id sha key

注記: git ブランチ上のタグまたは Commit ID は設定できません。マスターのタグまたは Commit ID である必要が

あ り ます。 ブランチ、 またはブランチのタグ/Commit ID を使用する場合は、 git をローカルにチェッ クアウ ト し、

手順 3 で ext-local-src を選択してください。

5. メニューを終了し、 設定を保存します。

PetaLinux での外部カーネルおよび U‐Boot 使用手順

PetaLinux にはカーネル ソース と U-Boot ソースが含まれます。 ただし PetaLinux で独自のカーネルと U-Boot をビル

ドするこ と もできます。

PetaLinux はカーネル、 U-Boot および ATF のローカル ソースをサポート しています。

外部ソースの場合、 ディ レク ト リ <plnx-proj-root>/components/ext_sources/ を作成します。

1. カーネル ソース ディ レク ト リ を次のディ レク ト リにコピーします。

<plnx-proj-root>/components/ext_sources/<MY-KERNEL>

2. U-Boot ソース ディ レク ト リ を次のディレク ト リにコピーします。

<plnx-proj-root>/components/ext_sources/<MY-U-BOOT>

3. petalinux-config を実行し、 [linux Components Selection --->] サブメニューを選択します。

° カーネルの場合、 [linux-kernel () --->] を選択後、 [ext-local-src] を選択します。

( ) linux-xlnx

(X) ext-local-src

( ) remote

° U-Boot の場合、 [u-boot () --->] を選択後、 [ext-local-src] を選択します。

( ) u-boot-plnx

( ) remote

(X) ext-local-src

4. カーネルの場合、 [External linux-kernel local source settings --->] を選択します。

5. パスを入力します。

${TOPDIR}/../components/ext_sources/<MY-KERNEL>

6. U-Boot の場合、 [External u-boot local source settings --->] を選択します。 パスを入力します。

${TOPDIR}/../components/ext_sources/<MY-U-BOOT>${TOPDIR} --> is the yocto variable pointing to <plnx-proj-root>/build directory

リファレンス ガイド 68UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

ソースの絶対パスを指定するこ と もできますが、 ソースで BSP を使用する間、 ユーザーがパスを変更する必要があ

り ます。 ソース パスはユーザーが責任を持って変更する必要があ り ます。 ソースはプロジェク ト外部にも配置でき

ます。

注記: プロジェク トで外部ソースを使用して BSP を作成する場合、 ユーザーの責任でソースをプロジェク トにコピー

してパッケージする必要があ り ます。 詳細は、 「BSP のパッケージ」 を参照してください。

ト ラブルシューテ ィング

このセクシ ョ ンでは、 out-of-tree ビルドを設定する際に発生する一般的な問題について説明します。

デバイス ツリーの設定

このセクシ ョ ンでは、 デバイス ツ リーの設定時に編集しても安全なファイル、 およびデバイス ツ リーに新しい情報

を追加する方法について説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

表 1‐18: out‐of‐tree ビルドの設定に関する ト ラブルシューテ ィング

問題/エラー メ ッセージ

fatal: The remote end hung up

unexpectedly ERROR: Failed to get

linux-kernel

問題の説明

システムがリモート git URL を使用してソース コード (Kernel/UBOOT) をダ

ウンロードできず、 petalinux-build を実行できなかったこ とを示すエラー メ ッ

セージです。

解決方法

• 入力した リモート git URL が正しいこ とを確認します。

• 上の方法で解決しない場合、

次のコマンドを実行してビルドをク リーンアップします。

$ petalinux-build -x mrproper

このコマンドを実行する と、 次のディ レク ト リが削除されます。

° < plnx-proj-root>/images/

° <plnx-proj-root>/build/

システム イ メージを再ビルド します。 詳細は、 「システム イ メージのビルド」

を参照して ください。

リファレンス ガイド 69UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

デバイス ツリーを設定する

PetaLinux のデバイス ツ リー設定には、

<plnx-projroot>/project-spec/meta-user/recipes-bsp/device-tree/ にある次の config ファ イルが

関係します。

• multi-arch/

• system-user.dtsi

• xen-overlay.dtsi

• zynqmp-qemu-arm.dts

• openamp-overlay.dtsi

• xen-qemu-overlay.dtsi

ファ イルは <plnx-projroot>/components/plnx_workspace/device-tree-generation/ ディ レク ト リに

生成されます。

注意: 上記の dtsi ファ イルはすべてツールによって生成されます。 これらのファイルを編集するこ とは推奨しません。

<plnx-projroot>/project-spec/meta-user/recipes-bsp/device-tree にはデバイス ツ リーの bbappend

とファ イル ディレク ト リが格納されます。このファイル ディ レク ト リにある system-user.dtsi は編集可能です。

デバイス ツ リー ファ イルの詳細は、 付録 A 「PetaLinux プロジェク トの構造」 を参照して ください。

注意: 上記の DTSI ファ イル (*.dtsi) は自動で生成されるため、 ユーザーによる編集はしないでください。

イーサネッ ト PHY などの情報を追加する場合は、 system-user.dtsi ファ イルに追加してください。 この場合、

情報 (こ こではイーサネッ ト PHY の情報) はボード レベル (ボード固有) のため、 デバイス ツ リーにはプラ ッ ト

フォーム固有の情報を含めるよ うにします。

注記: このよ うに手動での操作が必要なのは、 一部の情報はボード レベルであ り、 何を含めるべきかをツールが判断

できないためです。 各デバイスのバインディングの詳細は、 Linux カーネル デバイス ツ リー バインディング ドキュ

メン ト (カーネル ソースのルート下の Documentation/devicetree/bindings) を参照してください。

次に、 system-user.dtsi の整形式のデバイス ツ リー ノードの例を示します。

/dts-v1/;/include/ "system-conf.dtsi"/ {};&gem0 {

phy-handle = <&phy0>;ps7_ethernet_0_mdio: mdio {

phy0: phy@7 {compatible = "marvell,88e1116r";device_type = "ethernet-phy";reg = <7>;

};};

};

重要: デバイス ツ リーのノード名、 MDIO アドレスおよび互換文字列が、 実際のシステムの命名規則に対応している

必要があ り ます。

リファレンス ガイド 70UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

次に、 例と して sample-user-1.dtsi を追加する手順を示します。

1. project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi をエディ ターで開

き、 「/include/ "system-user-1.dtsi」 を追加します。 次に、 編集結果を示します。

/include/ "system-conf.dtsi"/include/ "system-user-1.dtsi"/ {};

2. project-spec/meta-user/recipes-bsp/device-tree/device-tree-generation_%.bbappend を

エディ ターで開き、 「file://system-user-1.dtsi」 を追加します。 次に、 編集結果を示します。

SRC_URI_append ="\ file://system-user.dtsi \

file://system-user-1.dtsi \"FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

<plnx-proj-root>/components/plnx_workspace/device-tree-generation/ の内容を変更するこ とは推

奨しません。

変更はすべて meta-user に対して行う必要があ り ます。 たとえば何らかの変更が必要な場合、 変更のある meta-user レ

イヤーのノード全体を meta-user で書き換えます。 meta-user で delete-node を使用する と、 生成された dtsi から特定の

ノードを削除できます。

U‐Boot の設定

このセクシ ョ ンでは、 U-Boot の設定時に編集しても安全なファイル、 および U-Boot CONFIG_ オプシ ョ ン/設定につ

いて説明します。

前提条件

このセクシ ョ ンでは、 PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト

フォームにカスタマイズした Linux システムをビルドできる準備が完了しているものと仮定します。 詳細は、 「ハー

ド ウェア コンフ ィギュレーシ ョ ンのインポート 」 を参照してください。

U‐Boot を設定する

通常、 U-Boot (Universal Bootloader) のコンフ ィギュレーシ ョ ンは、 C プリプロセッサ define を使用して行います。

• コンフ ィギュレーシ ョ ン _OPTIONS_:

コンフ ィギュレーシ ョ ン オプシ ョ ンを選択できるよ うにな り ます。 名前の先頭には 「CONFIG_」 が付きます。

• コンフ ィギュレーシ ョ ン _SETTINGS_:

これらはハード ウェアなどに依存します。 名前の先頭には 「CONFIG_SYS_」 が付きます。

ヒン ト : CONFIG_ オプシ ョ ン/設定の文書の詳細な説明、 および U-Boot の README は、 Denx U-Boot ガイ ドにあ り

ます。

リファレンス ガイド 71UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 1 章: PetaLinux ツール資料

PetaLinux の U-Boot 設定には、 <plnxproj_root>/project-spec/ meta-plnx-generated/recipes-bsp/

u-boot/configs にあるコンフ ィギュレーシ ョ ン ファ イルの config.mk と platform-auto.h、 および

<plnxproj_root>/project-spec/meta-user/recipes-bsp/ u-boot/files/ にある platform-top.h

が関係します。

U-Boot 環境変数を設定するには、 platform-auto.h で CONFIG_EXTRA_ENV_SETTINGS 変数を編集します。

なお、 platform-auto.h は 「petalinux-config」 を実行するたびに生成されます。

注意: config.mk と platform-auto.h は自動的に生成されます。 これらのファイルは編集しないでください。

PetaLinux は現在、 CONFIG_ オプシ ョ ン/設定に関して U-Boot の設定の自動化をサポート していません。 これらの

CONFIG_ オプシ ョ ン/設定を platform-top.h に追加できます。

CONFIG_ オプシ ョ ン (たとえば CONFIG_CMD_MEMTEST) を platform-top.h に追加する手順は次のとおりです。

• PetaLinux プロジェク トのルート ディ レク ト リに移動します。

$ cd <plnx-proj-root>

• platform-top.h を開きます。

$ vi project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h

• CONFIG_CMD_MEMTEST オプシ ョ ンを追加する場合は、 このファイルに次の行を追加します。 変更を保存し

ます。

#define CONFIG_CMD_MEMTEST

ヒン ト : CONFIG_CMD_MEMTEST を定義しておく と、 簡単な RAM テス トに使用するモニター コマンドの 「mtest」

を利用できるよ うになり ます。

• U-Boot イ メージをビルド します。

$ petalinux-build -c u-boot

• 次のコマンドを実行し、 BOOT.BIN を生成します。

$ petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot

• ハードウェアまたは QEMU でイ メージをブート し、 U-Boot ステージで停止します。

• U-Boot コンソールで次のよ うに 「「mtest」 コマンドを実行します。

U-Boot-PetaLinux> mtest

• U-Boot コンソールの出力は次のよ うになり ます。

Testing 00000000 ... 00001000:Pattern 00000000 Writing... Reading...Iteration: 20369

重要: CONFIG_CMD_MEMTEST を定義していない場合、 U-Boot コンソールの出力は次のよ うにな り ます。

U-Boot-PetaLinux> mtest

Unknown command ’mtest’ - try ’help’

リファレンス ガイド 72UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 2章

Yocto の機能この章では、 Yocto の各種機能について説明します。

プロジェク トでの BitBake へのアクセス

BitBake は bash シェルでのみ使用できます。

Zynq UltraScale+ MPSoC で BitBake ユーティ リテ ィにアクセスする手順:

1. 必要な環境をセッ ト アップするには、 プロジェク ト を作成後、 petalinux-config または

petalinux-config --oldconfig を少なく と も 1 回実行する必要があ り ます。

2. PetaLinux ツールのスク リプ ト を実行します。

source /opt/pkg/petalinux/settings.sh

3. Yocto e-SDK を実行します。

source /opt/pkg/petalinux/components/yocto/source/aarch64/environment-setup-aarch64-xilinx-linux

4. 環境セッ ト アップ スク リプ ト を実行します。

source /opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/oe-init-build-env

5. この手順の後、 build ディ レク ト リに リ ダイレク ト されます。 bitbake を実行するには、 build ディ レク ト リにとど

まる必要があ り ます。

6. XSCT をエクスポート します。

export PATH=/opt/pkg/petalinux/tools/hsm/bin:$PATH

7. レシピへの PETALINUX 変数を解析します。

export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE PETALINUX"

8. bitbake が利用できるかど うかを調べるため、 次のコマンドを実行します。

bitbake fsbl -c cleansstatebitbake fsbl

生成されたイ メージは deploy ディ レク ト リに格納されます。 ほかのコマンドを利用するには、 生成されたイ メージ

を <plnx-proj-root>/images/linux ディレク ト リにコピーする必要があ り ます。

リファレンス ガイド 73UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 2 章: Yocto の機能

Yocto e‐SDK レイヤーから  petalinux‐image‐full.bb へのレシピの追加

rootfs の menuconfig には petalinux-image の内容が反映されます。 petalinux-image ターゲッ トはザイ リ ンクスによって

サポート されます。

例と して、 alsa-utils を追加する手順を次に示します。

1. レシピは yocto e-SDK の次の場所にあ り ます。

/opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/meta/recipes-multime

dia/alsa/

2. <plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappend

をエディ ターで開き、 次の行を追加します。

IMAGE_INSTALL_append = " alsa-utils"

3. petalinux-config -c rootfs を実行します。

[user packages -->] を選択し、 [alsa-utils-->] を選択します。

有効にした後、 保存して終了します。

4. petalinux-build を実行します。

注記: petalinux-image 以外に、 ユーザーの責任で PetaLinux ツールで利用できるレイヤーにレシピを追加する必要

があ り ます。

重要: petalinux-image に含まれるレシピのすべてで sstate がロ ッ ク されています。 ロ ッ クを解除するには、

project-spec/meta-user/conf/petalinuxbsp.conf に SIGGEN_UNLOCKED_RECIPES += "my-recipe" を追加する必要があ り

ます。

注記: 「_append」 を使用する場合は、 「= “」 の直後にスペースが必要です。

リファレンス ガイド 74UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 2 章: Yocto の機能

パッケージ グループの追加

イ メージをカスタマイズする場合、 カスタム パッケージ グループを作成し、 これを用いてイ メージをビルドする と

いう方法が特に推奨されます。 PetaLinux ツールには、 いくつかのパッケージ グループ レシピが付属しています。

次に例を示します。

$PETALINUX/components/yocto/source/aarch64/layers/meta-petalinux/recipes-core/packagegroups/packagegroup-petalinux-x11.bb

注記:パッケージ グループの名前は、 既存のレシピ名と競合しない一意の名前とする必要があ り ます。

次に、 例と して ALSA という名前のカスタム パッケージ グループを作成する方法を示します。

DESCRIPTION = "PetaLinux ASLA supported Packages"

inherit packagegroup

ALSA_PACKAGES = " \ alsa-lib \ alsa-plugins \ alsa-tools \ alsa-utils \ alsa-utils-scripts \ pulseaudio \ "RDEPENDS_${PN}_append_zynqmp += " \ ${ALSA_PACKAGES} \ "

これは、

<plnx-proj-root>/meta-user/recipes-core/packagegroups/packagegroup-petalinux-alsa.bb に

追加できます。

このパッケージ グループを rootfs menuconfig に追加するには、

<plnx-proj-root>/project-spec/meta-plnx-generated/recipes-core/petalinux-image.bbappend

に 「IMAGE_INSTALL_append = " packagegrouppetalinux-alsa"」 を追加して menuconfig に反映されるよ

うにします。

次に petalinux-config -c rootfs を実行し、 [user packages --->]、 [packagegroup --->]、 [petalinux-alsa] の順に選択して保存

し、 petalinux-build を終了します。

リファレンス ガイド 75UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

第 2 章: Yocto の機能

sstate‐cache の共有

Yocto e-SDK には 小限の共有 sstate-cache が含まれます。 ザイ リ ンクスは、 完全な petalinux-image 共有 sstate-cache

を http://petalinux.xilinx.com/sswreleases/rel-v2017.1/ でホスティングしています。

petalinux-build の実行中、 bitbake は 小セッ トの PetaLinux ツール内で sstate-cache を探します。 この場所に

sstate-cache が見つからない場合、 bitbake は www.xilinx.com で sstate-cache を探します。それでも sstate-cache が見つか

らない場合、 bitbake は新規に sstate-cache をビルド します。 sstate はシグネチャでロ ッ ク されています。既に存在する

rootfs コンポーネン トに対して .bbappend ファ イルを追加する場合、

<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に

「SIGGEN_UNLOCKED_RECIPES += "<component>"」 を追加する必要があ り ます。

リファレンス ガイド 76UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 A

PetaLinux プロジェク トの構造このセクシ ョ ンでは、 PetaLinux プロジェク トのファ イルおよびディレク ト リ構造について簡単に説明します。

PetaLinux プロジェク トは、一度に 1 つの Linux システム開発をサポート します。ビルド した Linux システムは次のコ

ンポーネン トで構成されます。

• デバイス ツ リー

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

• U-Boot

• Linux カーネル

• rootfs。 rootfs は次のコンポーネン トで構成されます。

° ビルド済みパッケージ

° Linux ユーザー アプリ ケーシ ョ ン (オプシ ョ ン)

° ユーザー モジュール (オプシ ョ ン)

PetaLinux プロジェク ト ディ レク ト リにはプロジェク トのコンフ ィギュレーシ ョ ン ファ イル、 Linux サブシステム、

およびサブシステムのコンポーネン トが含まれます。 petalinux-build コマンドを実行する と、 これらコンフ ィ

ギュレーシ ョ ン ファ イルを使用してプロジェク トがビルド されます。 設定は petalinux-config を実行して変更

できます。 次に、 PetaLinux プロジェク トの例を示します。

<plnx-proj-root>-components

- plnx_workspace- device-tree-generation- fsbl- fsbl_bsp- fsbl_hwproj- .metadata- pmu-firmware- pmu-firmware_bsp- pmu-firmware_hwproj- SDK.log- .Xil

-config.project-.gitignore-hardware-.petalinux pre-built

-linux- etc- images- implementation

- project-spec-attributes-configs

リファレンス ガイド 77UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 A: PetaLinux プロジェク トの構造

- config- rootfs_config

- hw-description- meta-plnx-generated

- conf- COPYING.MIT- README- recipes-bsp- recipes-core- recipes-kernel

- meta-user- conf- COPYING.MIT- README- recipes-apps- recipes-bsp- recipes-core- recipes-kernel- yocto-layer.log

- README

表 A‐1: PetaLinux プロジェク トの説明

PetaLinux プロジェク トのファイル/ディレク ト リ

説明

<plnx-proj-root>/.petalinux/ ツールの使用状況と WebTalk データを格納するディレク ト リ

<plnx-proj-root>/config.project/ プロジェク ト コンフ ィギュレーシ ョ ン ファ イル

<plnx-proj-root>/project-spec プロジェク トのプロジェク ト仕様

<plnx-proj-root>/project-spec/

hw-descriptionVivado からインポート したハード ウェア記述

<plnx-projroot>/project-spec/

configs上位 config および rootfs config のコンフ ィギュレーシ ョ ン ファ イル

<plnx-proj-root>/project-spec/

configs/configユーザー設定を格納するためのコンフ ィギュレーシ ョ ン ファ イル

<plnx-proj-root>/project-spec/

configs/rootfs_configルート ファイル システムに使用するコンフ ィギュレーシ ョ ン ファイル

<plnx-proj-root>/components/

plnx_workspace/device-tree-

generation/

デバイス ツ リーのビルドに使用するデバイス ツ リー ファ イル。

次のファイルが petalinux-config によって自動生成されます。

• skeleton.dtsi (Zynq-7000 のみ)

• zynq-7000.dtsi (Zynq-7000 のみ)

• zynqmp.dtsi (Zynq UltraScale+ MPSoC のみ)

• pcw.dtsi (Zynq-7000 および Zynq UltraScale+MPSoC のみ)

• pl.dtsi

• system-conf.dtsi

• system-top.dts

• <bsp name>.dtsi

これらのファイルはツールによって再生成されるため、 ユーザーによ

る編集は推奨しません。

リファレンス ガイド 78UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 A: PetaLinux プロジェク トの構造

プロジェク ト をビルドする と、 2 つのディ レク ト リが自動で生成されます。

• <plnx-proj-root>/build には、 ビルド用に生成されるファ イルが格納されます。

• <plnx-proj-root>/images にはブータブル イ メージが格納されます。

• <plnx-proj-root>/build/tmp には Yocto によって生成されるファ イルが格納されます。 このディ レク ト リ

は、 petalinux-config で設定を変更できます。

次に例を示します。

<plnx-proj-root>-build

-bitbake.lock -build.log-config.log-cache/ -conf/ -downloads/

<plnx-proj-root>/project-spec/

meta-user/recipes-bsp/device-

tree/files/

system-user.dtsi は PetaLinux ツールによって変更されません。

したがって、 リ ビジ ョ ン管理システムで使用しても安全です。 また、

このディ レク ト リにユーザー独自の DTSI ファ イルを追加するこ と も

できます。 その場合、

<plnx-proj-root>/project-spec/meta-user/recipes-bsp/

device-tree/device-tree-generation_%.bbappend にその

dtsi ファ イルを追加する必要があ り ます。

<plnx-projroot>/project-spec/

meta-plnx-generated/recipes-bsp

/u-boot/configs

U-Boot PetaLinux コンフ ィギュレーシ ョ ン ファ イル。 次のファイルが

petalinux-config によって自動生成されます。

• config.mk (MicroBlaze のみ)

• platform-auto.h

• config.cfg

platform-top.h は PetaLinux ツールによって変更されません。

U-Boot をビルドする と、 これらのファイルは次のよ うに U-Boot ビル

ド ディレク ト リ build/linux/u-boot/src/<U_BOOT_SRC>/ にコ

ピーされます。

• config は U-Boot kconfig ファ イルです。

• MicroBlaze の場合、 config.mk は board/xilinx/microblaze-generic/ にコ

ピーされます。

<plnx-projroot>/project-spec/

meta-user/recipes-bsp/u-boot/

files/platform-top.h

• platform-auto.h and platform-top.h は include/configs/ ディ

レク ト リにコピーされます。

<plnx-proj-root>/components/ エンベデッ ド ソフ ト ウェアのワークスペース用、 および BSP をパッ

ケージする際に外部ソースを格納するためのディレク ト リ 。 このディ

レク ト リに手動でコンポーネン ト をコピーするこ と もできます。 外部

コンポーネン トは次のディレク ト リに置く必要があ り ます。

<plnx-proj-root>/components/ext_source/<COMPONENT>

表 A‐1: PetaLinux プロジェク トの説明 (続き)

PetaLinux プロジェク トのファイル/ディレク ト リ

説明

リファレンス ガイド 79UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 A: PetaLinux プロジェク トの構造

-misc/-config/-plnx-generated/ -rootfs_config/

-sstate-cache/-tmp/

-components -plnx_workspace/

-config.project -hardware -images

-linux/-pre-built

-linux/-project-spec

-attributes -configs/

-config-rootfs_config

-hw-description/-meta-plnx-generated/-meta-user/

注意: <plnx-proj-root>/build/ は自動で生成されます。 このディ レク ト リのファ イルは手動で編集しないでく

ださい。 このディ レク ト リの内容は、 petalinux-config または petalinuxbuild を実行する と更新されます。

<plnx-proj-root>/images/ も自動で生成されます。 このディ レク ト リのファ イルは、 petalinux-build を実

行する と更新されます。

次の表に、 Zynq UltraScale+ MPSoC の場合の例を示します。

注記:デフォルトでは、 空き容量を確保するためにビルド中間生成物は petalinux-build 実行後に削除されます。

build/conf/local.conf から 「INHERIT += "rm_work"」 を削除する とビルド中間生成物を残すこ とができますが、 プロ

ジェク トの容量が大き くな り ます。

表 A‐2: PetaLinux プロジェク トのビルド  ディレク ト リ

PetaLinux プロジェク トのビルド  ディレク ト リ 説明

<plnx-proj-root>/build/build.log ビルドのログ ファ イル

<plnx-proj-root>/build/misc/config/ Linux サブシステムのビルド関連ファイルを格納するディレク ト リ

<plnx-proj-root>/build/misc/rootfs

_config/rootfs のビルド関連ファイルを格納するディレク ト リ

<plnx-projroot>/build/tmp/work/plnx

_aarch64-xilinx-linux/petalinux-ser

-image/1.0-r0/rootfs

ターゲッ ト rootfs ホス ト コピー。 これはステージング ディ レク ト

リです。

<plnx-projroot>/tmp/plnx_aarch64 ユーザー アプリ ケーシ ョ ン/ラ イブラ リのビルドに必要なライブ

ラ リ とヘッダー ファ イルを格納するステージ ディレク ト リ

<plnx-proj-root>/build/tmp/work/pln

x_aarch64-xilinx-linux/linux-xlnxカーネルのビルド関連ファイルを格納するディレク ト リ

<plnx-proj-root>/build/tmp/work/pln

x_aarch64-xilinx-linux/u-boot-xlnxU-Boot のビルド関連ファイルを格納するディレク ト リ

リファレンス ガイド 80UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 A: PetaLinux プロジェク トの構造

プロジェク トのレイヤー

PetaLinux プロジェク トは、 <proj-plnx-root>/project-spec に次の 2 つのレイヤーがあ り ます。

1. meta‐plnx‐generated:

このレイヤーには、 すべてのコンポーネン トのすべての bbappend と コンフ ィギュレーシ ョ ン フラグメン ト (cfg) が格

納されます。 このレイヤーのファイルはすべて、 HDF およびユーザー設定に基づいてツールによって生成されます。

このレイヤーのファイルは petalinux-config および petalinux-build コマンドを実行する と再生成されるた

め、 手動では更新しないでください。

2. meta‐user:

このレイヤーは、 すべてのユーザー固有の変更のプレースホルダーです。 独自の bbappend およびコンフ ィギュレー

シ ョ ン ファ イルをこのレイヤーに追加できます。

レイヤーの優先度

デフォルトでは、 meta-plnx-generated レイヤーの優先度が も高く設定されています。 これは、 ユーザー設定による

システムの変更をツールが禁止しているためです。 ユーザー設定に基づいてシステムを変更する場合は、 meta-user

の優先度を meta-plnx-generated の優先度よ り も高い値に変更する必要があ り ます。

デフォルトでは、 meta-plnx-generated と meta-user の優先度はどちら も 6 です。

ユーザーによる変更を優先する場合は、 meta-user の優先度を 7 に変更します。

注記: meta-user の優先度を変更する と、 システムの変更が可能になり ます。 ユーザーの責任でシステムの安定性を確

保する必要があ り ます。

meta‐user レイヤーの優先度を  7 に変更する手順

1. <plnx-proj-plnx-root>/project-spec/meta-user/conf/layer.conf を開きます。

2. BBFILE_PRIORITY_meta-user の値を 6 から 7 に変更します。

3. これで、 meta-user の優先度が 7 に変更されます。

BBFILE_PRIORITY_meta-user = "7"

<plnx-proj-root>/components/plnx_

workspace/device-tree-generationデバイス ツ リーのビルド関連ファイルを格納するディ レク ト リ

<plnx-projroot>/components/plnx_

workspace/fsblブート ローダーのビルド関連ファイルを格納するディレク ト リ

表 A‐3: PetaLinux プロジェク トのイメージ ディレク ト リ

PetaLinux プロジェク トのイメージ ディレク ト リ 説明

<plnx-proj-root>/images/linux/ Linux サブシステムのブータブル イ メージを格納するディレク ト リ

表 A‐2: PetaLinux プロジェク トのビルド  ディレク ト リ  (続き)

PetaLinux プロジェク トのビルド  ディレク ト リ 説明

リファレンス ガイド 81UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 B

プロジェク ト内での FSBL、 PMUFW および ATF の生成

この手順はオプシ ョ ンです。 デフォルトでは、 上位システム設定で第 1 段階ブート ローダー (FSBL) が生成される

よ うになっています。

注意: PetaLinux で FSBL/FS-BOOT をビルド しないよ うに設定した場合、 これらを手動でビルドする必要があ り ます。

そ う しないと、 システムは正し くブート しません。

menuconfig で FSBL を無効にしている場合、 プロジェク トで FSBL をビルドするよ うに設定するには次の手順を実行

します。

1. 上位のシステム設定メニューを起動して設定を変更します。

$ petalinux-config

a. [linux Components Selection --->] サブメニューを選択します。

b. [First Stage Bootloader] オプシ ョ ンを選択します。

[*] First Stage Bootloader

c. メニューを終了し、 変更を保存します。

これによ り、 PetaLinux プロジェク トのルート ディ レク ト リの components/bootloader/ に FSBL ソースが存在して

いなければ生成されます。 Zynq® UltraScale+™ MPSoC の場合:

components/plnx_workspace/fsbl/zynqmp_fsbl

Zynq-7000 の場合:

components/plnx_workspace/fsbl/zynq_fsbl

MicroBlaze の場合:

components/plnx_workspace/fs-boot

FSBL はローカル プロジェク ト ディレク ト リに置く必要があ り ます。

2. petalinux-build を実行し、 FSBL をビルド します。

プロジェク トのビルド時に FSBL をビルドする場合:

$ petalinux-build

FSBL のみをビルドする場合:

$ petalinux-build -c bootloader

リファレンス ガイド 82UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 B: プロジェク ト内での FSBL、 PMUFW および ATF の生成

ブート ローダーの ELF ファ イルは、 プロジェク ト ルート ディ レク ト リの images/linux に

zynqmp_fsbl.elf (Zynq UltraScale+ MPSoC の場合)、 zynq_fsbl.elf (Zynq-7000 の場合)、 または

fs-boot.elf (MicroBlaze の場合) と してインス トールされます。

ヒン ト : fsbl_bsp と fsbl_bsp は petalinux-build を実行する と自動で更新されます。

ARM ト ラステッ ド  ファームウェア (ATF)

この手順は Zynq UltraScale+ MPSoC 専用です。 この手順は必須です。 デフォルトでは、 上位システム設定で ATF

が生成されるよ うになっています。

ATF の設定可能オプシ ョ ンを変更するには、 次の手順を実行します。

1. 上位のシステム設定メニューを起動して設定を変更します。

$ petalinux-config

a. [ARM Trusted Firmware Compilation Configuration” --->] サブメニューを選択します。

b. 設定を入力します。

c. メニューを終了し、 変更を保存します。

2. プロジェク トのビルド時に ATF をビルドする場合:

$ petalinux-build

ATF のみをビルドする場合:

$ petalinux-build -c arm-trusted-firmware

ATF の ELF ファ イルは、 プロジェク ト ルート ディ レク ト リの images/linux に bl31.elf と してインス トールさ

れます (Zynq UltraScale+ MPSoC のみ)。

PMU ファームウェア (PMUFW)

この手順は Zynq UltraScale+ MPSoC 専用です。 この手順はオプシ ョ ンです。 デフォルトでは、 上位システム設定

で PMUFW が生成されるよ うになっています。

注意: PetaLinux で PMUFW をビルド しないよ うに設定した場合、 これらを手動でビルドする必要があ り ます。

そ う しないと、 システムは正し くブート しません。

プロジェク トで PMUFW をビルドするよ うに設定するには、 次の手順を実行します。

1. 上位のシステム設定メニューを起動して設定を変更します。

$ petalinux-config

a. [linux Components Selection --->] サブメニューを選択します。

b. [PMU Firmware] オプシ ョ ンを選択します。

[*] PMU Firmware

c. メニューを終了し、 変更を保存します。

リファレンス ガイド 83UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 B: プロジェク ト内での FSBL、 PMUFW および ATF の生成

2. プロジェク トのビルド時に PMUFW をビルドする場合:

$ petalinux-build

PMUFW のみをビルドする場合:

$ petalinux-build -c pmufw

PMUFW の ELF ファ イルは、プロジェク ト ルート ディ レク ト リの images/linux に pmufw.elf と してインス トー

ルされます (Zynq UltraScale+ MPSoC のみ)。

FS‐Boot (MicroBlaze プラッ ト フォームのみ)

PetaLinux の FS-Boot は、 MicroBlaze プラ ッ ト フォーム専用の FSBL デモです。 フラ ッシュから メモ リへイ メージを

ロード して、 メモ リにジャンプする方法をデモと して示しています。 FS-Boot を使用する場合、 8KB 以上の BRAM

が必要です。

FS-Boot がサポートするのは、パラレル フラ ッシュ と標準 SPI モードの SPI フラ ッシュのみです。 axi_quad_spi を

使用する場合、 X1 モードでの動作に限られます。

FS-Boot がフラ ッシュのどこからイ メージを取得するかを判断できるよ うに、 CONFIG_FS_BOOT_START マクロを定

義する必要があ り ます。 これは、 PetaLinux ツールで行います。 PetaLinux ツールは、 menuconfig のプライマ リ フラ ッ

シュ パーティシ ョ ン テーブルで設定した boot パーティシ ョ ンに基づいてこのマクロを自動で設定します。 パラレ

ル フラ ッシュの場合、 boot パーティシ ョ ンの開始アドレスに基づいて設定します。 SPI フラ ッシュの場合、 boot

パーティシ ョ ンの開始オフセッ トに基づいて設定します。

フラ ッシュ内部のイ メージには、 BIN ファ イルの直前にラ ッパー ヘッダーが必要です。 FS-Boot はターゲッ ト メモ リ

位置をラ ッパーから取得します。 ラ ッパーには次の情報を含める必要があ り ます。

FS-Boot はラ ッパー ヘッダーのその他のフ ィールドは無視します。 U-Boot BIN ファ イルをラ ップアラウンドするため

のラ ッパー ヘッダーが PetaLinux ツールによって生成されます。

表 B‐1: ラッパーの情報

オフセッ ト 説明 値

00 FS-Boot ブータブル イ メージのマジッ ク コード 0b8b40008

04 BIN イ メージ サイズ ユーザー定義

0100 FS-Boot ブータブル イ メージのターゲッ ト

メモ リ アドレス

ユーザー定義。 menuconfig の [Memory Settings] で設

定した U-Boot テキス ト ベース アドレス オフセッ ト

から PetaLinux ツールが自動的に計算します。

010c BIN ファ イルの開始位置 なし

リファレンス ガイド 84UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

リファレンス ガイド 85UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 C

[Auto Config Settings] サブメニューpetalinux-config を実行する と、 [Auto Config Settings] サブメニューが表示されます。 このサブメニュー

には、 上位のシステム設定に基づいて PetaLinux が自動設定 (autoconfig) を適用可能なコンポーネン トの一覧が表

示されます。 コンポーネン ト を選択して autoconfig を有効にする と、 petalinux-config 実行時にそのコンポーネ

ン トの config ファ イルが自動で更新されます。

表 C‐1: [Auto Config Settings] サブメニュー

メニュー項目 autoconfig を有効にした場合に影響を受けるファイル

[Device tree] • <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

skeleton.dtsi (Zynq-7000 のみ)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

zynq-7000.dtsi (Zynq-7000 のみ)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

zynqmp.dtsi (Zynq UltraScale+ MPSoC のみ)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

zynqmp-clk.dtsi (Zynq UltraScale+ MPSoC のみ)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

pcw.dtsi (Zynq-7000 および Zynq UltraScale+ MPSoC)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

pl.dtsi (MicroBlaze のみ)

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/sys

tem-conf.dtsi

• <plnx-proj-root>/components/plnx_workspace/device-tree-generation/

system-top.dts

[kernel] <plnx-proj-root>/project-spec/meta-plnx-generated/recipes-kernel/

linux/configs/plnx_kernel.cfg

[u-boot] • <plnx-proj-root>/project-spec/meta-plnx-generated/recipes-bsp/

u-boot/configs/config.cfg

• <plnx-proj-root>/project-spec/meta-plnx-generated/recipes-bsp/

u-boot/configs/platform-auto.h

[fsbl] <plnx-proj-root>/components/plnx_workspace/fsbl

[pmufw] <plnx-proj-root>/components/plnx_workspace/pmu-firmware

[fsboot] <plnx-proj-root>/components/plnx_workspace/fs-boot

付録 D

QEMU 仮想ネッ トワーキング モードQEMU には非ルート (デフォルト ) とルート (sudo または root のパーミ ッシ ョ ンが必要) の 2 つの実行モードがあ り ま

す。 これら 2 つのモードの違いは、 仮想ネッ ト ワーク設定にあ り ます。

非ルート モードでは、 QEMU はホス トからゲス トへのネッ ト ワーク ト ラフ ィ ッ クを制限する内部仮想ネッ ト ワーク

をセッ ト アップします。 これは NAT ルーターと同じよ うに動作します。 tcp ポート を リ ダイレク ト しないと このネッ

ト ワークにはアクセスできません。

ルート モードでは、 QEMU は仮想イーサネッ ト アダプターにサブネッ ト を作成し、 ホス ト システムの DHCP サー

バーを利用して動作します。

以降のセクシ ョ ンでは、 非ルート モードでローカル ホス トからのアクセスを可能にする リダイレク トの方法を含

め、 これらモードの使用方法について説明します。

非ルート  モードでのポート  リダイレク ト

デフォルトの非ルート モードで QEMU を実行し、 ホス ト マシンから内部 (仮想) ネッ ト ワークにアクセスしたい場

合 (たとえば GDB または TCF エージェン トでデバッグするなど)、 エ ミ ュレート したシステム ポート を QEMU 仮想

マシン内部からローカル マシンへと リ ダイレク トする必要があ り ます。 このリダイレク トは、 petalinux-boot

--qemu コマンドの --qemu-args オプシ ョ ンを使用して実行します。 次の表に、 リダイレク トに関する引数の例

をいくつか示します。 これは QEMU の標準機能です。 詳細は、 QEMU の資料を参照してください。

表 D‐1: リダイレク トに関する引数

QEMU オプシ ョ ン  スイッチ

目的 ホストからゲストへのアクセス

-tftp <path-to-directory> 指定したディ レク ト リに TFTP サーバーをセッ ト

アップします。 サーバーには QEMU の内部 IP ア

ドレス 10.0.2.2 でアクセスできます。

-redir tcp:10021:

10.0.2.15:21

ホス トのポート 10021 をゲス トのポート 21 (ftp)

にリダイレク ト します。

host> ftp localhost 10021

-redir tcp:10023:

10.0.2.15:23

ホス トのポート 10023 をゲス トのポート 23 (telnet)

にリダイレク ト します。

host> telnet localhost 10023

-redir tcp:10080:

10.0.2.15:80

ホス トのポート 10080 をゲス トのポート 80 (http)

にリダイレク ト します。

ウェブ ブラウザーで

http://localhost:10080 と

入力

-redir tcp:10022:

10.0.2.15:22

ホス トのポート 10022 をゲス トのポート 22 (ssh)

にリダイレク ト します。

ホス トで ssh -P 10022

localhost を実行し、 ターゲッ ト

への SSH セッシ ョ ンを開始

リファレンス ガイド 86UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 D: QEMU 仮想ネッ トワーキング モード

次に、 ポート を リダイレク トするコマンド ラ インの例を示します。

$ petalinux-boot --qemu --kernel --qemu-args "-redir tcp:1534::1534"

この文書では gdbserver と tcf エージェン トでポート 1534 を使用していますが、 任意の空きポートへのリダイレク ト

が可能です。 また、 内部でエミ ュレート したポートがローカル マシンのポート と異なっていてもかまいません。

$ petalinux-boot --qemu --kernel --qemu-args "-redir tcp:1444::1534"

QEMU 仮想サブネッ トの指定

デフォルトでは、 PetaLinux は --root モードの QEMU 仮想サブネッ ト と して 192.168.10.* を使用します。 この

サブネッ トがローカル ネッ ト ワークまたはその他の仮想サブネッ トで使用されている場合、 別のサブネッ ト を使用

したいこ とがあ り ます。 コマンド コンソールで次のよ うに petalinux-boot を実行する と、 QEMU でその他のサ

ブネッ ト を使用するよ うに PetaLinux を設定できます。

注意: この機能を利用するには、 ローカル マシンでの sudo アクセスが必要です。 また、 この機能は --root オプシ ョ ン

と組み合わせて使用する必要があ り ます。

$ petalinux-boot --qemu --root --u-boot --subnet <subnet gateway IP>/<number of the bits of the subnet mask>

例) サブネッ ト 192.168.20.* を使用する場合:

$ petalinux-boot --qemu --root --u-boot --subnet 192.168.20.0/24

リファレンス ガイド 87UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 E

QEMU でサポート されるザイリンクス IP モデル

PetaLinux ツールに付属する QEMU エミ ュレーターは、 次に示すザイ リ ンクス IP モデルをサポート しています。

• Zynq-7000 ARM Cortex-A9 CPU

• Zynq UltraScale+ MPSoC ARM Cortex-A53 MPCore

• Zynq UltraScale+ MPSoC Cortex-R5

• MicroBlaze CPU ( リ トル エンディアン AXI)

• ザイ リ ンクス Zynq-7000/Zynq UltraScale+ MPSoC DDR メモ リ コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC DMA コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC SD/SDIO ペリ フェラル コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC ギガビッ ト イーサネッ ト コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC NAND コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC UART コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC QSPI コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC I2C コン ト ローラー

• ザイ リ ンクス Zynq UltraScale+ MPSoC USB コン ト ローラー (ホス ト サポートのみ)

• ザイ リ ンクス Zynq-7000 ト リプル タイマー カウンター

• ザイ リ ンクス Zynq-7000 DMA コン ト ローラー

• ザイ リ ンクス Zynq-7000 SD/SDIO ペリ フェラル コン ト ローラー

• ザイ リ ンクス Zynq-7000 ギガビッ ト イーサネッ ト コン ト ローラー

• ザイ リ ンクス Zynq-7000 USB コン ト ローラー (ホス ト サポートのみ)

• ザイ リ ンクス Zynq-7000 UART コン ト ローラー

• ザイ リ ンクス Zynq-7000 SPI コン ト ローラー

• ザイ リ ンクス Zynq-7000 QSPI コン ト ローラー

• ザイ リ ンクス Zynq-7000 I2C コン ト ローラー

• ザイ リ ンクス AXI Timer および AXI Interrupt Controller ペリ フェラル

• ザイ リ ンクス AXI External Memory Controller (パラレル フラ ッシュに接続)

• ザイ リ ンクス AXI DMA Controller

• ザイ リ ンクス AXI Ethernet

リファレンス ガイド 88UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 E: QEMU でサポート されるザイリンクス IP モデル

• ザイ リ ンクス AXI Ethernet Lite

• ザイ リ ンクス AXI UART 16650 および Lite

重要: デフォルトでは、 IP モデルが提供されていないデバイスは QEMU で無効にされます。 このため、 カスタマイ

ズした独自の IP コアは、 QEMU 規格に従ってユーザーが C/C++ モデルを作成しない限り QEMU を使用してテス ト

するこ とはできません。

詳細は、 『Zynq UltraScale+ MPSoC QEMU ユーザー ガイ ド』 (UG1169) [参照 5] を参照して ください。

リファレンス ガイド 89UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 F

Xen Zynq Ultrascale+ MPSoC の例このセクシ ョ ンでは、 Xen Zynq® Ultrascale+™ MPSoC の例について説明します。 Zynq Ultrascale+ MPSoC で Xen の上

に Linux を dom0 と してブートする方法について説明します。

前提条件

このセクシ ョ ンでは、 次に示す前提条件が満たされているものと仮定します。

• PetaLinux ツールのソフ ト ウェア プラ ッ ト フォームを使用して実際のハードウェア プラ ッ ト フォームにカスタ

マイズした Linux システムをビルドできる準備が完了しているこ と。 詳細は、 「ハード ウェア コンフ ィギュレー

シ ョ ンのインポート 」 を参照してください。

• ZCU102 リ ファレンス BSP を使用して PetaLinux プロジェク トが作成済みであるこ と。

° pre-built/linux/images ディ レク ト リには、 Xen に関するビルド済みの xen.dtb、 xen.ub、

xen-image および xen-rootfs.cpio.gz.u-boot があ り ます。

ビルド済み Linux を  dom0 と してブートする

1. tftp を使用して U-Boot からロードできるよ うに、ビルド済み Xen イ メージおよび Linux カーネル イ メージを tftp

ディ レク ト リにコピーします。

$ cd <plnx-proj-root>$ cp pre-built/linux/images/xen.dtb <tftpboot>/$ cp pre-built/linux/images/xen.ub <tftpboot>/$ cp pre-built/linux/images/xen-Image <tftpboot>/$ cp pre-built/linux/images/xen-rootfs.cpio.gz.u-boot <tftpboot>/

2. JTAG ブート または SD カードからのブートによ り、 ボード上のビルド済み U-Boot イ メージをブート します。

3. U-Boot から tftp サーバーの IP をセッ ト アップします。

U-Boot-PetaLinux> setenv serverip <TFTP SERVERIP>

4. U-Boot から Xen イ メージおよびカーネル イ メージをロード します。

U-Boot-PetaLinux> tftpboot D80000 xen.dtbU-Boot-PetaLinux> tftpboot 80000 xen-ImageU-Boot-PetaLinux> tftpboot 1000000 xen.ubU-Boot-PetaLinux> tftpboot 2000000 xen-rootfs.cpio.gz.u-bootU-Boot-PetaLinux> bootm 1000000 2000000 D80000

リファレンス ガイド 90UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 F: Xen Zynq Ultrascale+ MPSoC の例

Xen を再ビルドする

Zynq UltraScale + MPSoC 用に PetaLinux プロジェク ト を作成した後、 次の手順を実行して xen イ メージをビルド します。

1. cd <proj root directory> を実行し、 プロジェク トのルート ディ レク ト リに移動します。

2. Petalinux-config コマンドを実行し、 [Image Packaging Configuration]、 [Root filesystem type (INITRD)] の順に

選択します。

3. Petalinux-config -c rootfs コマンドを実行し、 [Filesystem Packages --->]、 [misc --->]、

[packagegroup-petalinux-xen --->] の順に選択し、 [[*] packagegroup-petalinux-xen] を選択します。

4. Xen 関連の config でビルド対象のデバイス ツ リーを編集します。

project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi をエディ ターで開

き、 次の行を追加します。

/include/ "xen-overlay.dtsi".

次に、 編集結果を示します。

/include/ "system-conf.dtsi"/include/ "xen-overlay.dtsi"/ {};

5. project-spec/meta-user/recipes-bsp/device-tree/device-tree-generation_%.bbappend を

エディ ターで開き、 次の行を追加します。 file://xen-overlay.dtsi

次に、 編集結果を示します。

SRC_URI_append ="\ file://system-user.dtsi \

file://xen-overlay.dtsi \"FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

6. 次のよ うに petalinux-build を実行します。 $ petalinux-build

7. ビルド中間生成物は、 プロジェク ト ディレク ト リの images/linux にあ り ます。

注記:デフォルトでは、 petalinux-build コマンドでは Xen はビルド されません。 デフォルトのルート ファ イル システ

ムには Xen ツールは含まれません。 Xen rootfs を使用する必要があ り ます。

ヒン ト : XEN の詳細は、 「PetaLinux 2016.4 以降での Xen ハイパーバイザーのビルド方法」 を参照してください。

リファレンス ガイド 91UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 F: Xen Zynq Ultrascale+ MPSoC の例

OpenAMP を実行する

OpenAMP を実行する手順は次のとおりです。

1. $ cd <plnx-proj-root> を実行し、 プロジェク トのルート ディレク ト リに移動します。

$ cp pre-built/linux/images/openamp.dtb pre-built/linux/images/system.dtb$petalinux-boot --jtag --prebuilt 3 --hw_server-url <hostname:3121>

2. Linux にログインします。

a. echo <echo_test_firmware> > /sys/class/remoteproc/remoteproc0/firmware を実行します。

例) # echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware

b. echo start > /sys/class/remoteproc/remoteproc0/state

c. modprobe rpmsg_user_dev_driver

d. echo_test

OpenAMP の詳細は、 『Zynq デバイス向け OpenAMP フレームワーク』 (UG1186) [参照 7] を参照してください。

リファレンス ガイド 92UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

リファレンス ガイド 93UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 G

廃止された機能このセクシ ョ ンでは、 PetaLinux コマンドで廃止された機能およびオプシ ョ ンについて説明します。

1. petalinux-create

a. -t libs: ラ イブラ リ を開発またはインス トールするには、 -t apps を使用する必要があ り ます。

b. -t libs --priority: このオプシ ョ ンのサポートは終了しました。

c. -t generic: ジェネ リ ッ ク コンポーネン トのサポートは終了しました。

d. --out: このオプシ ョ ンを使用して、 プロジェク トの場所がサポート されていないかど うかを指定できます。

-n も使用できます。

2. petalinux-config

a. --search: 全体のサーチ パス インプリ メンテーシ ョ ンおよびそのすべてのサブ オプシ ョ ンのサポートは終了

しました。

3. petalinux-build

a. --makeenv: 対応する bbappend または Makefile でフラグを指定する必要があ り ます。

4. petalinux-package

a. --bsp --no-extern: ローカルの外部コンポーネン トは明示的にコピーする必要があ り ます。

b. --bsp --no-local: このオプシ ョ ンのサポートは終了しました。

c. --firmware: このオプシ ョ ンのサポートは終了しました。

d. --image -c rootfs: petalinux-config でファイル システム タイプを選択する必要があ り ます。

5. petalinux-boot

a. --qemu --qemu-gdb: --qemu-args オプシ ョ ンを直接使用して gdb を起動するよ うに QEMU に指示できます。

6. petalinux-util

a. --update-sdcard: SD カードは手動で更新する必要があ り ます。 詳細は、 「SD カード外部ファイル システム

ブートの設定」 を参照してください。

付録 H

一般的なエラーと解決方法このセクシ ョ ンでは、 PetaLinux コマンドの実行時に発生する一般的なエラーとその解決手順について説明します。

一般的なエラーとその解決方法には、 次のものがあ り ます。

1. TMPDIR が NFS にある。

「ERROR: OE-core's config sanity checker detected a potential misconfiguration」

このエラーが発生した場合は、原因を修正するか、ユーザーの責任でチェッカーを停止します (sanity.conf 参照)。

次に、 考えられる問題と推奨事項の一覧を示します。

The TMPDIR: /home/user/xilinx-kc705-axi-full-2017.1/build/tmp cannot be located on NFS.

TMPDIR が NFS にある と解析エラーになり ます。 petalinux-config を実行して、 任意のローカル ス ト レージに変

更する必要があ り ます。

Yocto-settings --> TMPDIR

複数の異なる PetaLinux プロジェク トで同じ TMPDIR を設定しないでください。 ビルド エラーが発生します。

2. Bitbake を実行できない。

bitbake は 1 つのプロジェク トで 1 インスタンスしか実行できません。 直前にビルドが異常終了している場合、

bitbake が正常に終了しておらず、 現在のビルドで bitbake を起動できない可能性があ り ます。

to reciver: rm -rf <plnx-proj-root>/build/bitbake.lock

3. アプリ ケーシ ョ ン/モジュール名に 「_」 が含まれる。

「plnx_myapp」 のよ うなアプリ ケーシ ョ ン名の場合、 bitbake でエラーが発生します。 「_」 の後はバージ ョ ン番

号とする必要があ り ます。

たとえば 「myapp_1」 は有効なアプリ ケーシ ョ ン/モジュール名です。

この問題を解決するには、 作成されたアプリ ケーシ ョ ンを削除する と共に、

<plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappen

d で次の行を削除します。

IMAGE_INSTALL_append = " plnx_myapp"

リファレンス ガイド 94UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 H:一般的なエラーと解決方法

4. Ctrl + C キーを 2 回押して PetaLinux を強制終了する と、 次のエラー メ ッセージが表示される。

NOTE: Sending SIGTERM to remaining 1 tasksError in atexit._run_exitfuncs:Traceback (most recent call last): File "/opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/bitbake/lib/bb/ui/knotty.py", line 313, in finish self.termios.tcsetattr(fd, self.termios.TCSADRAIN, self.stdinbackup)termios.error: (5, 'Input/output error')

このエラーが表示される と、 コンソールが文字化けして入力したテキス トが表示されなくな り ます。 コンソー

ルを回復するには、 stty sane を入力し、 Enter キーを 2 回押します。

5. 言語設定が不足しており、 petalinux-config を実行する とエラー メ ッセージ 「Could not find the

/log/cooker/plnx_microblaze in the /tmp directory」 が表示される。

この問題を解決するには、 次のよ うに設定します。

export LC_ALL=en_US.UTF-8export LANG=en_US.UTF-8export LANGUAGE=en_US.UTF-8

6. petalinux-config -c kernel および petalinux-config -c u-boot を実行した場合、 bitbake が内部で新規ターミナルを開こ

う と して失敗し、 次のエラー メ ッセージが表示される。

ERROR: linux-xlnx-4.9-xilinx+gitAUTOINC+a96b8d2e1c-r0 do_menuconfig: Unable to spawn terminal auto: Execution of '/home/user/xilinx-zcu102-2017.1/build/tmp/work/plnx_aarch64-xilinx-linux/linux-xlnx/4.9-xilinx+gitAUTOINC+a96b8d2e1c-r0/temp/run.do_terminal.8249' failed with exit code -6:Fatal Python error: Py_Initialize: Unable to get the locale encodingImportError: No module named 'encodings'Current thread 0x00007fd12b4f8700 (most recent call first):ERROR: linux-xlnx-4.9-xilinx+gitAUTOINC+a96b8d2e1c-r0 do_menuconfig: Function failed: do_menuconfigERROR: Logfile of failure stored in: /home/user/xilinx-zcu102-2017.1/build/tmp/work/plnx_aarch64-xilinx-linux/linux-xlnx/4.9-xilinx+gitAUTOINC+a96b8d2e1c-r0/temp/log.do_menuconfig.8249

デフォルトの OE_TERMINAL ではエラーになるため、 変更する必要があ り ます。

<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf で OE_TERMINAL のコ メン ト をはずし、xterm または

screen に設定します。 そのためには、 対応するユーティ リ ティ を PC にインス トールしておく必要があ り ます。

リファレンス ガイド 95UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 I

その他のリソースおよび法的通知

ザイリンクス リソース

アンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 ザイ リ ンクス サポート サイ ト を参照して

ください。

ソリューシ ョ ン  センター

デバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 デザイ

ン アシスタン ト 、 デザイン アドバイザリ、 ト ラブルシュートのヒ ン ト などが含まれます。

参考資料

注記:日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. PetaLinux 資料 (japan.xilinx.com/petalinux)

2. ザイ リ ンクス アンサー 55776

3. 『Zynq UltraScale+ MPSoC ソフ ト ウェア開発者向けガイ ド』 (UG1137: 英語版、 日本語版)

4. 『PetaLinux ツール資料: PetaLinux コマンド ライン リ ファレンス ガイ ド』 (UG1157)

5. 『Zynq Ultrascale+ MPSoC QEMU ユーザー ガイ ド』 (UG1169)

6. 『PetaLinux ツール資料: ワークフロー チュート リ アル』 (UG1156)

7. 『Zynq デバイス向け OpenAMP フレームワーク』 (UG1186)

リファレンス ガイド 96UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com

付録 I: その他のリソースおよび法的通知

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適

用される法律が許容する 大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供

され、 ザイ リ ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれ

らに限られません)、 すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または

貴社による本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わな

い (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害に

は、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の

損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能で

あったり、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に

含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いま

せん。 事前の書面による同意のない限り、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一

定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件

に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプリ ケー

シ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を

使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性

の機能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セー

フティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用

前または提供前に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品

を使用する リ スクはすべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2017 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれる

その他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれの保有

者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

リファレンス ガイド 97UG1144 (v2017.2) 2017 年 6 月 29 日 japan.xilinx.com