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

UG1144 (v2019.1) 2019 5 22 PetaLinux ツール資料 …...PetaLinux ツール資料 リファレンス ガイド UG1144 (v2019.1) 2019 年 5 月 22 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資

  • Upload
    others

  • View
    71

  • Download
    0

Embed Size (px)

Citation preview

PetaLinux ツール資料リファレンス ガイドUG1144 (v2019.1) 2019 年 5 月 22 日

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

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

セクション 改訂内容2019 年 5 月 22 日 バージョン 2019.1

第 6 章: ワークスペースのアップグレード petalinux-upgrade コマンドのセクションを追加。第 12 章: テクニカル FAQ 「パッケージの管理」セクションを追加。第 10 章: アドバンス設定 「Zynq® UltraScale+™ MPSoC および Zynq-7000 デバイス の

FPGA マネージャーの設定および使用」セクションをアップデート。

改訂履歴

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 2

目次改訂履歴..........................................................................................................................................................................2

第 1 章: 概要................................................................................................................................................................. 6概要..................................................................................................................................................................................6

第 2 章: 環境の設定................................................................................................................................................. 8インストール要件........................................................................................................................................................... 8インストール手順......................................................................................................................................................... 10PetaLinux 作業環境のセットアップ............................................................................................................................12デザイン フローの概要.................................................................................................................................................14

第 3 章: プロジェクトの作成......................................................................................................................... 15PetaLinux BSP のインストール................................................................................................................................... 15Vivado Design Suite でのハードウェア プラットフォームの設定............................................................................16ハードウェア プラットフォームの PetaLinux プロジェクトへのエクスポート.......................................................18新規 PetaLinux プロジェクトの作成...........................................................................................................................18

第 4 章: 設定およびビルド...............................................................................................................................20バージョン管理............................................................................................................................................................. 20ハードウェア コンフィギュレーションのインポート ................................................................................................ 21システム イメージのビルド......................................................................................................................................... 22Zynq UltraScale+ MPSoC 用ブート イメージの生成..................................................................................................25Zynq-7000 デバイス用ブート イメージの生成........................................................................................................... 26MicroBlaze プロセッサ用ブート イメージの生成...................................................................................................... 26MicroBlaze のビットストリーム ファイルの生成...................................................................................................... 27ビルドの最適化............................................................................................................................................................. 27

第 5 章: ブートおよびパッケージ...............................................................................................................32ビルド済みイメージのパッケージ............................................................................................................................... 32ビルド済みイメージでの petalinux-boot コマンドの使用........................................................................................ 32QEMU での PetaLinux イメージのブート...................................................................................................................33SD カードを使用したハードウェア上での PetaLinux イメージのブート.................................................................36JTAG を使用したハードウェア上での PetaLinux イメージのブート.........................................................................39TFTP を使用したハードウェア上での PetaLinux イメージのブート.........................................................................42BSP のパッケージ......................................................................................................................................................... 44

第 6 章: ワークスペースのアップグレード ......................................................................................... 46petalinux-upgrade オプション................................................................................................................................... 46

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 3

PetaLinux ツールのアップグレード............................................................................................................................47PetaLinux プロジェクトのアップグレード.................................................................................................................48

第 7 章: プロジェクトのカスタマイズ....................................................................................................49ファームウェア バージョンの設定.............................................................................................................................. 49ルート ファイル システム タイプの設定.....................................................................................................................49ブート イメージ ストレージの設定............................................................................................................................. 50プライマリ フラッシュ パーティションの設定...........................................................................................................51イメージ サイズの管理.................................................................................................................................................52INITRD ブートの設定................................................................................................................................................... 53INITRAMFS ブートの設定............................................................................................................................................ 54TFTP ブートの設定....................................................................................................................................................... 54NFS ブートの設定......................................................................................................................................................... 55JFFS2 ブートの設定.......................................................................................................................................................57SD カード外部ファイル システム ブートの設定.........................................................................................................58

第 8 章: Rootfs のカスタマイズ.................................................................................................................. 61ビルド済みライブラリを含める................................................................................................................................... 61ビルド済みアプリケーションを含める........................................................................................................................62カスタム ライブラリの作成と追加.............................................................................................................................. 63ユーザー ライブラリのテスト......................................................................................................................................65カスタム アプリケーションの作成と追加................................................................................................................... 66カスタム モジュールの作成と追加.............................................................................................................................. 68ユーザー アプリケーションのビルド.......................................................................................................................... 69ユーザー アプリケーションのテスト.......................................................................................................................... 71ユーザー モジュールのビルド......................................................................................................................................71PetaLinux の自動ログイン...........................................................................................................................................73起動時のアプリケーション自動実行........................................................................................................................... 73レイヤーの追加............................................................................................................................................................. 75RootFS への既存レシピの追加.....................................................................................................................................75パッケージ グループの追加......................................................................................................................................... 76

第 9 章: デバッグ.................................................................................................................................................... 78QEMU による Linux カーネルのデバッグ...................................................................................................................78TCF エージェントによるアプリケーションのデバッグ..............................................................................................79GDB での Zynq UltraScale+ MPSoC アプリケーションのデバッグ..........................................................................84個々の PetaLinux コンポーネントのデバッグ............................................................................................................ 88

第 10 章: アドバンス設定................................................................................................................................. 89menuconfig の使用法.................................................................................................................................................. 89PetaLinux の menuconfig システム........................................................................................................................... 89out-of-tree ビルドの設定.............................................................................................................................................96プロジェクト コンポーネントの設定.......................................................................................................................... 99

第 11 章: Yocto の機能..................................................................................................................................... 104SDK の生成 (ターゲット Sysroot の生成)................................................................................................................. 104

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 4

プロジェクトでの BitBake へのアクセス..................................................................................................................105sstate-cache の共有................................................................................................................................................... 106ミラーのダウンロード................................................................................................................................................106マシン サポート.......................................................................................................................................................... 107SoC バリアント サポート........................................................................................................................................... 108画像機能...................................................................................................................................................................... 108

第 12 章: テクニカル FAQ.............................................................................................................................. 110トラブルシューティング............................................................................................................................................ 110

付録 A: 移行.............................................................................................................................................................. 114ツール ディレクトリ構造........................................................................................................................................... 114DT オーバーレイ サポート......................................................................................................................................... 114ビルドの最適化........................................................................................................................................................... 114

付録 B: PetaLinux プロジェクトの構造..............................................................................................115プロジェクトのレイヤー............................................................................................................................................ 118

付録 C: ブート コンポーネントの生成................................................................................................. 119第 1 段階ブートローダー (FSBL)................................................................................................................................119Arm トラステッド ファームウェア (ATF)................................................................................................................. 120PMU ファームウェア..................................................................................................................................................120FS-Boot (MicroBlaze プラットフォームのみ).......................................................................................................... 121

付録 D: QEMU 仮想ネットワーキング モード............................................................................... 122非ルート モードでのポート リダイレクト................................................................................................................ 122QEMU 仮想サブネットの指定....................................................................................................................................123

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

付録 F: Xen Zynq UltraScale+ MPSoC の例.....................................................................................126前提条件...................................................................................................................................................................... 126

付録 G: その他のリソースおよび法的通知....................................................................................... 129ザイリンクス リソース...............................................................................................................................................129参考資料...................................................................................................................................................................... 129Documentation Navigator およびデザイン ハブ.................................................................................................... 129お読みください: 重要な法的通知...............................................................................................................................130

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 5

第 1 章

概要概要

PetaLinux は、ザイリンクス FPGA ベースのシステム オン チップ (SoC) デザインを開発するためのエンベデッドLinux ソフトウェア開発キット (SDK) です。このユーザー ガイドでは、PetaLinux の全体的な使用方法について説明します。Linux コマンドの実行方法など、Linux に関する基本的な知識があることを前提としています。また、OS のバージョン、Linux ディストリビューション、セキュリティ権限、および基本的な Yocto の概念などについても把握しておく必要があります。PetaLinux ツールには、次のものが含まれます。• Yocto エクステンシブル SDK (eSDK)

• 最小ダウンロード• XSCT およびツールチェーン• PetaLinux CLI ツール注記: ザイリンクス ソフトウェア開発キット (SDK) (XSDK) は、ザイリンクス マイクロプロセッサ上にエンベデッドアプリケーションを作成するための統合設計環境 (IDE) です。PetaLinux SDK は、エンベデッド Linux システムをビルド、開発、テスト、運用するのに必要なすべてのものを含むザイリンクスの開発ツールです。Yocto エクステンシブル SDK

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

パス アーキテクチャ$PETALINUX/components/yocto/source/aarch64 Zynq® UltraScale+™ MPSoC

$PETALINUX/components/yocto/source/arm Zynq-7000 デバイス$PETALINUX/components/yocto/source/microblaze_full

MicroBlaze™ プラットフォーム フル デザイン

$PETALINUX/components/yocto/source/microblaze_lite

MicroBlaze プラットフォーム軽量デザイン

第 1 章: 概要

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 6

最小ダウンロードBitBake は、アップストリームでソース ファイルを検出する前に、PREMIRRORS をチェックします。PREMIRRORSは、DL_DIR 変数で定義されていない共有ディレクトリがある場合に適しています。ツールのプロジェクトはすべてこれらの PREMIRRORS を使用し、ここからソース コードをフェッチします。ツールの PREMIRROR は $PETALINUX/components/yocto/downloads に設定されています。downloads ディレクトリには、Linux カーネル、U-Boot、その他の最小ユーティリティのソース コードが tar アーカイブとして格納されます。詳細は、ミラーのダウンロード を参照してください。

XSCT およびツールチェーンすべてのエンベデッド ソフトウェア アプリケーションに対して、PetaLinux ツールでは XSCT が使用されます。3 つのアーキテクチャすべての Linux ツールチェーンは、Yocto からのものです。

PetaLinux コマンド ライン インターフェイス (CLI) ツール必要なすべての PetaLinux コマンドが含まれます。

第 1 章: 概要

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 7

第 2 章

環境の設定インストール要件

PetaLinux ツールのインストール要件は次のとおりです。• ワークステーションの最小要件

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

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

○ 100 GB のハードディスク空き容量○ サポートされる OS

- Red Hat Enterprise Workstation/Server 7.4、7.5、7.6 (64 ビット)

- CentOS 7.4、7.5、7.6 (64 ビット)

- Ubuntu Linux 16.04.5、18.04.1 (64 ビット)

• 次の表に示す必要なパッケージをインストールするには、ルート アクセス権限が必要です。PetaLinux ツールは、非ルート ユーザーとしてインストールする必要があります。

• PetaLinux を使用するには、多くの標準開発ツールおよびライブラリを Linux ホスト ワークステーションにインストールする必要があります。ホスト Linux にインストールする必要のあるライブラリとツールは、次の表に示すとおりです。次に示す Linux ワークステーション環境はいずれも PetaLinux ツールで必要とされる 32 ビット ライブラリを備えています。ホストに 32 ビット ライブラリを必要とするツール チェーンがある場合は、petalinux-build を実行する前にこれらのライブラリをインストールしてください。次の表に、必要なパッケージおよびこれらパッケージを各種 Linux ワークステーション環境にインストールする方法を示します。

• PetaLinux ツールでは、ホスト システム /bin/sh が bash である必要があります。Ubuntu ディストリビューションを使用しており、/bin/sh が dash の場合、システム管理者に問い合わせて、デフォルトのシステム シェル /bin/sh を sudo dpkg-reconfigure dash コマンドに変更してください。

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

ツール/ライブラリ CentOS 7.4、7.5、7.6 (64 ビット) Red Hat Enterprise Workstation/Server 7.4、7.5、7.6 (64 ビット)

Ubuntu Linux 16.04.5、18.04.1 (64ビット)

dos2unix dos2unix-6.0.3-4.el7.x86_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.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-4.0.2-4.el7.x86_64.rpm gawk (1:4.1.3+dfsg-0.1)

gcc gcc-4.8.5-11.el7.x86_64 gcc-4.8.5-11.el7.x86_64 -

g++ (gcc-c++) gcc-c++-4.8.5-11.el7.x86_64 gcc-c++-4.8.5-11.el7.x86_64 -

make make 3.81 make 3.82 make 3.81

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 8

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

ツール/ライブラリ CentOS 7.4、7.5、7.6 (64 ビット) Red Hat Enterprise Workstation/Server 7.4、7.5、7.6 (64 ビット)

Ubuntu Linux 16.04.5、18.04.1 (64ビット)

netstat net-tools2.0

net-tools2.0

net-tools

ncursesdevel

ncurses-devel5.9-13

ncurses-devel5.9-13

libncurses5-dev

tftp server tftp-server tftp-server tftpd

zlib devel (同じバージョンの 32 ビット版もインストールが必要)

zlib-devel-1.2.7-17.el7.x86_64.rpm

zlib-devel-1.2.7-17.el7.x86_64.rpm

zlib1g:i386

openssldevel

openssl-devel 1.0

openssl-devel 1.0

libssl-dev

flex flex 2.5.37 flex 2.5.37 flex

bison bison-2.7 bison-2.7.4 bison

libselinux libselinux2.2.2

libselinux2.2.2

libselinux1

gnupg gnupg gnupg gnupg

wget wget wget wget

diffstat diffstat diffstat diffstat

chrpath chrpath chrpath chrpath

socat socat socat socat

xterm xterm xterm xterm

autoconf autoconf autoconf autoconf

libtool libtool libtool libtool

tar tar:1.24 tar:1.24 tar:1.24

unzip unzip unzip unzip

texinfo texinfo texinfo texinfo

zlib1g-dev - - zlib1g-dev

gcc-multilib - - gcc-multilib

build-essential - - build-essential

SDL-devel SDL-devel SDL-devel -

glibc-devel glibc-devel glibc-devel -

32 ビット glibc glibc-2.17-157.el7_3.4.i686glibc-2.17-157.el7_3.4.x86_64

glibc-2.17-157.el7_3.4.i686glibc-2.17-157.el7_3.4.x86_64

-

glib2-devel glib2-devel glib2-devel -

automake automake automake -

screen screen screen screen

pax pax pax pax

gzip gzip gzip gzip

libstdc++ libstdc++-4.8.5-11.el7.x86_64libstdc++-4.8.5-11.el7.i686

libstdc++-4.8.5-11.el7.x86_64libstdc++-4.8.5-11.el7.i686

-

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 9

パッケージのクイック インストールUbuntu および Redhat/CentOS 用のパッケージのクイック インストールについて説明します。

Ubuntu

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupgwget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential -devzlib1g:i386 screen pax gzip

Redhat/CentOS

sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python34-pip xz which SDL-devel xterm autoconf libtool zlib-devel automake glib2-devel zlib ncurses-devel openssl-devel dos2unix flex bisonglibc.i686 screen pax glibc-devel.i686 compat-libstdc+-33.i686 libstdc+.i686

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

重要: PetaLinux 2019.1 は Vivado® Design Suite 2019.1 とのみ動作します。

インストール手順前提条件• PetaLinux ツールのインストール要件が満たされている。詳細は、インストール要件 を参照してください。• PetaLinux リリース パッケージをダウンロード済みである。PetaLinux インストーラーは、PetaLinux ダウンロード ページからダウンロードできます。

• Vivado® Design Suite、ザイリンクス SDK、および PetaLinux のバージョンが同じ。

PetaLinux ツール インストーラーの実行オプションを指定しない場合、PetaLinux ツールは現在のディレクトリにインストールされます。代わりに、インストール パスを指定することもできます。たとえば、PetaLinux ツールを /opt/pkg/petalinux/2019.1 にインストールするには、次のコマンドを使用します。$ mkdir -p /opt/pkg/petalinux/2019.1$ ./petalinux-v2019.1-final-installer.run /opt/pkg/petalinux/2019.1

注記: インストーラーの権限を chmod 775 を使用して変更しないでください。そうすると、BitBake エラーが発生します。これにより、PetaLinux ツールが /opt/pkg/petalinux/2019.1 ディレクトリにインストールされます。

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 10

重要: インストール後にインストール ディレクトリを移動またはコピーすることはできません。上記の例では、完全パスが Yocto e-SDK 環境ファイルに保存されるので、/opt/pkg/petalinux を移動またはコピーすることはできません。注記: ツールをルート ユーザーとしてインストールすることはできません。/opt/pkg/petalinux が書き込み可能であることを確認します。インストール後に権限を変更して、グローバル読み出し/実行可能 (0755) にできます。ツールを /opt/pkg/petalinux ディレクトリにインストールする必要はありません。755 権限のディレクトリであればどこにでもインストールできます。PetaLinux ツールをインストールするには、PetaLinux エンド ユーザー使用許諾契約 (EULA) を読んで内容に同意する必要があります。使用許諾契約の内容は、インストール実行前に確認することもできます。使用許諾契約の内容は、次に示すプレーン ASCII 形式のテキスト ファイルとして提供されており、別途保存しておくことができます。• $PETALINUX/etc/license/petalinux_EULA.txt: EULA は PetaLinux に適用される権利と制限についての詳細を規定しています。

• $PETALINUX/etc/license/Third_Party_Software_End_User_License_Agree ment.txt: サードパーティ使用許諾契約は、PetaLinux ツールの再配布可能および再配布不可能コンポーネントの詳細を規定しています。

デフォルトでは、ツールの使用状況に関する統計データをザイリンクスに送信する WebTalk オプションが有効です。WebTalk 機能を無効にするには、petalinux-util --webtalk コマンドを実行します。重要: PetaLinux コマンドを実行する前に、souce コマンドで PetaLinux の settings スクリプトを読み込む必要があります。詳細は、PetaLinux 作業環境のセットアップ を参照してください。

$ petalinux-util --webtalk off

注記: ダウンロード エリアの共有ステートの詳細は、ビルドの最適化 を参照してください。

トラブルシューティングこのセクションでは、PetaLinux ツールをインストールする際に発生する一般的な問題について説明します。PetaLinux ツールのインストールで問題が発生したした場合は、PetaLinux のインストール ディレクトリに$PETALINUX/post-install.log というログ ファイルが生成されます。表 3: PetaLinux のインストールに関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法WARNING: You have less than 1 GBfree space on the installationdrive

問題の説明:この警告メッセージは、インストール先ドライブの空き容量が不足していることを示します。インストール後にハードウェア プロジェクトやソフトウェア プロジェクトを開発するのに十分な空き容量がない可能性があります。解決方法:インストール先ドライブをクリーンアップして空き容量を増やします。または、PetaLinux を別のハード ディスク ドライブにインストールします。

WARNING: No tftp server found 問題の説明:この警告メッセージは、ワークステーションで TFTP サービスが実行されていないことを示します。TFTP サービスが実行されていないと、U-Boot のネットワーク/TFTP 機能を使用して Linux システム イメージをターゲット システムにダウンロードできません。その他のブート モードの場合、この警告メッセージは無視できます。解決方法:ワークステーションで TFTP サービスを有効にします。サービスを有効にする方法がわからない場合は、システム管理者に問い合わせてください。

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 11

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

問題/エラー メッセージ 説明/解決方法ERROR: GCC is not installed -unable to continue. Pleaseinstall and retry

問題の説明:このエラー メッセージは、ホスト ワークステーションに gcc がインストールされていないことを示します。解決方法:Linux ワークステーション パッケージ管理システムを使用して gcc をインストールします。方法がわからない場合は、システム管理者に問い合わせてください。インストール手順 を参照してください。

ERROR: You are missing thefollowing system tools requiredby PetaLinux: missing-tools-list

またはERROR: You are missing thesedevelopment libraries required byPetaLinux: missing-library-list

問題の説明:このエラー メッセージは、missing-tools-list または missing-library-list に示されている必須ツールまたはライブラリが不足していることを示します。解決方法:不足しているツールのパッケージをインストールします。詳細は、インストール要件 を参照してください。

./petalinux-v2019.1-final-installer.run: line 52: /proj/petalinux/petalinux-v2019.1_daily_latest/petalinux_installation_log:Permission denied

問題の説明:このエラー メッセージは、PetaLinux インストール ディレクトリに書き込み権限がないことを示します。解決方法:インストール ディレクトリの権限を 755 に変更します。

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

前提条件このセクションでは、PetaLinux ツール インストールが完了していることを前提としています。詳細は、インストール手順 を参照してください。

PetaLinux 作業環境のセットアップ手順1. 適切な settings スクリプトを実行します。

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

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

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

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

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 12

セットアップ スクリプトを初めて実行すると、次のような出力が表示されます。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 see "PetaLinux SDK Installation Guide" for its impact and solution

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

出力: /opt/pkg/petalinux

環境変数 $PETALINUX には、PetaLinux のインストール パスが設定されている必要があります。実際の出力は、PetaLinux のインストール パスによって上記の例とは異なります。

トラブルシューティングこのセクションでは、PetaLinux 作業環境をセットアップする際に発生する一般的な問題について説明します。表 4: PetaLinux 作業環境に関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法WARNING: /bin/sh is notbash

問題の説明:この警告メッセージは、デフォルトのシェルが dash にリンクされていることを示します。解決方法:PetaLinux ツールでは、ホスト システム /bin/sh が bash である必要があります。Ubuntu ディストリビューションを使用しており、/bin/sh が dash の場合は、システム管理者に問い合わせて、デフォルトのホスト システム /bin/sh を sudo dpkg-reconfigure dash コマンドに変更してください。

Failed to open PetaLinuxlib

問題の説明:このエラー メッセージは、PetaLinux ライブラリを読み込むことができなかったことを示します。次の理由が考えられます。• settings.sh が読み込まれていない。• 動作中の Linux カーネルで SELinux が有効に設定されている。この場合、セキュリティ コンテキストおよびライブラリのロードに関して問題が発生することがあります。

解決方法:

1. 最上位の PetaLinux ディレクトリから source コマンドを使用して settings.shスクリプトを読み込みます。詳細は、PetaLinux 作業環境のセットアップ を参照してください。

2. SELinux をイネーブルにしている場合、SELinux が enforcing モードであるかどうかを確認します。SELinux が enforcing モードに設定されている場合は、permissiveモードに変更するか (SELinux マニュアルを参照)、ライブラリにアクセスできるようにセキュリティ コンテキストを変更します。

$ cd $PETALINUX/tools/xsct/lib/lnx64.o

$ chcon -R -t textrel_shlib_t lib

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 13

デザイン フローの概要通常、PetaLinux ツールは順次ワークフロー モデルに従います。次の表に、サンプル デザインのワークフローを示します。タスクの実行順とそのツールまたはワークフローを順にリストしています。表 5: デザイン フローの概要

デザイン フロー段階 ツール/ワークフローハードウェア プラットフォームの作成 (カスタム ハードウェアのみ)

Vivado® デザイン ツール

PetaLinux プロジェクトの作成 petalinux-create -t project

PetaLinux プロジェクトの初期化 (カスタム ハードウェアのみ) petalinux-config --get-hw-description

システム レベル オプションの設定 petalinux-config

ユーザー コンポーネントの作成 petalinux-create -t COMPONENT

Linux カーネルの設定 petalinux-config -c kernel

ルート ファイルシステムの設定 petalinux-config -c rootfs

システムのビルド petalinux-build

システム運用のためのパッケージ化 petalinux-package

テスト用にシステムをブート petalinux-boot

第 2 章: 環境の設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 14

第 3 章

プロジェクトの作成PetaLinux BSP のインストール

PetaLinux リファレンス ボード サポート パッケージ (BSP) はサポートされるボード用のリファレンス デザインで、そのまま使用するか、必要に応じてカスタマイズできます。これらのデザインをベースとして使用し、サポートされるボード用に独自のプロジェクトを作成することもできます。PetaLinux BSP はインストール可能 BSP ファイルの形で提供され、必要なデザイン ファイルおよびコンフィギュレーション ファイル、ビルド済みおよびテスト済みのハードウェア イメージとソフトウェア イメージがすべて含まれており、ボードにダウンロードまたは QEMU システム エミュレーション環境でブートできます。BSP は、任意の場所にダウンロードできます。BSP リファレンス デザインは PetaLinux ツールのインストールには含まれていないので、個別にダウンロードおよびインストールする必要があります。PetaLinux BSP パッケージは、ザイリンクス ダウンロード センターから入手できます。各 BSP には、BSP の詳細を説明する README が含まれています。注記: 必要な BSP のみをダウンロードしてください。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• PetaLinux BSP がダウンロードされている。PetaLinux BSP は、PetaLinux ダウンロード ページからダウンロードできます。

• PetaLinux 作業環境のセットアップが完了している。詳細は、PetaLinux 作業環境のセットアップ を参照してください。

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-v2019.1INFO: has been successfully installed to /home/user/INFO: New project successfully created in /home/user/

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 15

上記の例では、コマンドを実行すると、BSP から抽出されてインストールされたプロジェクトが示されます。指定したディレクトリが NFS (ネットワーク ファイル システム) にある場合、TMPDIR が /tmp/<projname_timestamp> に変更されます。それ以外の場合は、$PROOT/build/tmp に設定されます。/tmp/<projname_timestamp> も NFS にある場合はエラーが発生します。TMPDIR は、petalinux-config → [Yocto-settings] を使用していつでも変更できます。2 つの異なる PetaLinux プロジェクトに対して TMPDIR に同じディレクトリを設定しないでください。ビルド エラーが発生する可能性があります。/home/user で ls を実行すると、インストール済みプロジェクトが表示されます。PetaLinux プロジェクトの構造の詳細は、付録 B: PetaLinux プロジェクトの構造 を参照してください。

注意: PetaLinux プロジェクトをインストール エリアに作成しないでください。また、インストール エリアを一時ビルド エリアとして使用しないでください。

トラブルシューティングこのセクションでは、PetaLinux BSP をインストールする際に発生する一般的な問題について説明します。表 6: PetaLinux BSP のインストールに関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法petalinux-create: command not found 問題の説明:

このメッセージは、petalinux-create コマンドが見つからず、BSP のインストールが中止されたことを示します。解決方法:PetaLinux ツールの環境をセットアップする必要があります。詳細は、PetaLinux 作業環境のセットアップ を参照してください。

Vivado Design Suite でのハードウェア プラットフォームの設定

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

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• Vivado® Design Suite がインストールされている。Vivado Design Suite は、Vivado デザイン ツールのダウンロード ページからダウンロードできます。

• Vivado ツールの作業環境が設定されている。設定されていない場合は、次のように適切な settings スクリプトを読み込みます。$ source <path-to-installed-Xilinx-Vivado>/settings64.sh

• Vivado Design Suite および ザイリンクス SDK ツールの使用方法を理解している。詳細は、『Vivado Design Suiteユーザー ガイド: 入門』 (UG910) を参照してください。

第 3 章: プロジェクトの作成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 16

Linux 用にハードウェア プラットフォームを設定するVivado® を使用して独自のハードウェア プラットフォームを作成できます。ハードウェア プラットフォームをどのような方法で作成および設定したかにかかわらず、ハードウェア プラットフォームを Linux で使用できるようにするには、いくつかのハードウェア IP およびソフトウェア プラットフォームの設定変更が必要です。次に、具体的な方法を示します。

Zynq UltraScale+ MPSoC

Zynq® UltraScale+™ MPSoC ハードウェア プロジェクトで Linux をブートするためのハードウェア要件は次のとおりです。1. 64 MB 以上の外部メモリ (必須)

2. シリアル コンソールの UART (必須)

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

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

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

Zynq-7000 デバイスZynq-7000 ハードウェア プロジェクトで Linux をブートするためのハードウェア要件は次のとおりです。1. 1 個のトリプル タイマー カウンター (TTC) (必須)

重要: 複数の TTC を有効にした場合、Zynq-7000 Linux カーネルはデバイス ツリーの最初の TTC ブロックを使用します。この TTC がほかで使用されていないことを確認する必要があります。2. 外部メモリ コントローラーと 32 MB 以上のメモリ (必須)

3. シリアル コンソールの UART (必須)

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

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

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

MicroBlaze プロセッサ (AXI)

MicroBlaze™ ハードウェア プロジェクトで Linux をブートするための要件は次のとおりです。1. IP コアのチェックリスト:

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

• 割り込み接続を持つデュアル チャネル タイマー (必須)

• シリアル コンソールの割り込み接続を持つ UART (必須)

• リニア フラッシュ、SPI フラッシュなどの不揮発性メモリ (必須)

• 割り込み接続を持つイーサネット (オプション、ネットワーク アクセスを利用する場合は必要)

2. MicroBlaze プロセッサの設定:

第 3 章: プロジェクトの作成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 17

• MMU サポートを含む MicroBlaze プロセッサでは、MicroBlaze 設定ウィザードで [Linux with MMU] または[Low-end Linux with MMU] 設定テンプレートを選択します。注記: テンプレートでイネーブルに設定されている命令セットに関するオプションは、変更した場合の影響を理解している場合以外は、ディスエーブルにしないでください。

• MicroBlaze プロセッサの初期ブートローダー fs-boot には、システムが不揮発性メモリからブートする場合、パラレル フラッシュに 4 KB 以上のブロック RAM、SPI フラッシュに 8 KB 以上のブロック RAM が必要です。

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

このセクションでは、ハードウェア プラットフォームを PetaLinux プロジェクトにエクスポートする方法を説明します。注記: デバイス サポート アーカイブ (DSA) は、Vivado® Design Suite 2019.1 で導入されるハードウェア記述フォーマットです。DSA は HDF の上位セットで、XSCT/XSDK で変更可能な追加の設定が含まれます。

前提条件このセクションでは、Vivado Design Suite でハードウェア プラットフォームを作成済みであることを前提としています。詳細は、Vivado Design Suite でのハードウェア プラットフォームの設定 を参照してください。

ハードウェア プラットフォームのエクスポートハードウェア プロジェクトの設定が完了したら、ハードウェア ビットストリームをビルドします。PetaLinux プロジェクトでは、プロセッシング システムに関する情報を含んだハードウェア記述ファイル (.hdf/.dsa ファイル) が必要です。ハードウェア記述ファイルは、Vivado® Design Suite で [Export Hardware] を実行すると生成できます。プロジェクトの初期化 (アップデート) 時に、PetaLinux によりデバイス ツリー ソース ファイル、U-Boot コンフィギュレーション ヘッダー ファイルが生成され、ハードウェア記述ファイルに基づいて Linux カーネル ドライバーがイネーブルに成ります。詳細は、付録 B: PetaLinux プロジェクトの構造 を参照してください。Zynq® UltraScale+™ MPSoC プラットフォームの場合、プラットフォーム管理ユニット (PMU) ファームウェアおよびATF を使用してブートする必要があります。PMU ファームウェアおよび ATF のビルド方法は、付録 C: ブート コンポーネントの生成 を参照してください。Cortex™-R5F ブートに FSBL (第 1 段階ブートローダー) が必要な場合は、PetaLinux ツールでの FSBL のビルドは Cortex-A53 ブートなので、ザイリンクス SDK でもビルドする必要があります。ザイリンクス SDK で Cortex-R5F 用の FSBL をビルドする方法は、『Zynq UltraScale+ MPSoC: ソフトウェア開発者向けガイド』 (UG1137: 英語版、日本語版) を参照してください。

新規 PetaLinux プロジェクトの作成このセクションでは、新規 PetaLinux プロジェクトを作成する方法について説明します。テンプレートから作成したプロジェクトは、ビルドする前に実際のハードウェア インスタンスを指定する必要があります。

第 3 章: プロジェクトの作成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 18

前提条件このセクションでは、PetaLinux 作業環境のセットアップが完了していることを前提としています。詳細は、PetaLinux作業環境のセットアップ を参照してください。

新規プロジェクトの作成新規 PetaLinux プロジェクトを作成するには、petalinux-create コマンドを実行します。$ petalinux-create --type project --template <PLATFORM> --name <PROJECT_NAME>

パラメーターは次のとおりです。• --template <PLATFORM>: 次のプラットフォーム タイプを指定できます。

○ zynqMP (UltraScale+™ MPSoC)

○ zynq (Zynq-7000 デバイス)

○ microblaze (MicroBlaze™ CPU)

注記: MicroBlaze オプションは、プログラマブル ロジック (PL) の Zynq-7000 または Zynq UltraScale+ デザインと共に使用することはできません。

• --name <PROJECT_NAME>: ビルドするプロジェクトの名前を指定します。このコマンドを実行すると、デフォルト テンプレートから新規 PetaLinux プロジェクト フォルダーが作成されます。次の手順を使用して、先に作成したハードウェア プロジェクトに合わせてこれらの設定をカスタマイズします。BSP の代わりに --template オプションを使用する場合、次のように petalinux-config コマンドを使用してボード デザインに近いデフォルト ボード設定を選択できます。1. petalinux-config --get-hw-description=<PATH-TO-HDF/DSA-DIRECTORY>

2. CONFIG_SUBSYSTEM_MACHINE_NAME を必要に応じて設定します。• 設定可能な値は、ac701-full、ac701-lite、kc705-full、kcu105、zc1275-revb、zcu1285-reva、zc1751-dc1、

zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-revc、zcu102-rev1.0、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、vcu118- rev2.0、sp701-rev1.0 です。

• petalinux-config で [DTG Settings] → [(template) MACHINE_NAME] を選択し、テンプレートを上記の値のいずれかに変更します。

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

注意: PetaLinux プロジェクトを NFS に作成した場合、petalinux-create により TMPDIR が /tmp/<projname_timestamp> に自動的に変更されます。/tmp も NFS にある場合はエラーが発生します。TMPDIR をローカル ストレージに変更するには、petalinux-config → [Yocto-settings] → [TMPDIR] を選択します。複数の異なるPetaLinux プロジェクトで TMPDIR に同じディレクトリを設定しないでください。同じディレクトリを設定するとビルド エラーになります。TMPDIR が /tmp/.. にある場合は、プロジェクトを削除してもクリーンアップされません。この手順を明示的に実行するか、petalinux-build -x mrproper を使用する必要があります。

第 3 章: プロジェクトの作成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 19

第 4 章

設定およびビルドバージョン管理

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

前提条件このセクションでは、新規 PetaLinux プロジェクトが作成されいるか、または PetaLinux プロジェクトが既に存在していることを前提としています。PetaLinux プロジェクトの作成方法の詳細は、新規 PetaLinux プロジェクトの作成を参照してください。

バージョン管理PetaLinux プロジェクト ディレクトリ <plnx-proj-root> の次のファイルを除くファイルに対して、バージョン管理が可能です。• <plnx-proj-root>/.petalinux

• <plnx-proj-root>/!.petalinux/metadata

• <plnx-proj-root>/build/

• <plnx-proj-root>/images/linux

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

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

• <plnx-proj-root>/components/plnx-workspace/

• <plnx-proj-root>/*/*/config.old

• <plnx-proj-root>/*/*/rootfs_config.old

• <plnx-proj-root>/*.o

• <plnx-proj-root>/*.log

• <plnx-proj-root>/*.jou

デフォルトでは、これらのファイルはプロジェクトの作成時に .gitignore に追加されます。注記: ソース管理に送信する前に、petalinux-build -x mrproper を使用して PetaLinux プロジェクトをクリーンアップする必要があります。重要: バージョン管理は、現在開発中の機能です。プロジェクトを BSP 手法で共有することをお勧めします。

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 20

注記: 同時開発では、petalinux-config の TMPDIR は各ユーザーに固有である必要があります。プロジェクトをバージョン管理にチェックインする前に、${PROOT} を参照として使用して、TMPDIR の相対パスを指定してください。

ハードウェア コンフィギュレーションのインポートこのセクションでは、既存の (または新規作成した) PetaLinux プロジェクトを新しいハードウェア コンフィギュレーションで更新する方法を説明します。これにより、PetaLinux ツールのソフトウェア プラットフォームを使用して、新しいハードウェア プラットフォームにカスタマイズした Linux システムをビルドできるようになります。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• ハードウェア プラットフォームのエクスポートと .hdf/.dsa ファイルの生成が完了している。詳細は、ハードウェア プラットフォームのエクスポート を参照してください。

• 新規 PetaLinux プロジェクトを作成したか、または既存の PetaLinux プロジェクトが存在する。PetaLinux プロジェクトの作成方法の詳細は、新規 PetaLinux プロジェクトの作成 を参照してください。

ハードウェア コンフィギュレーションのインポート手順ハードウェア コンフィギュレーションをインポートする手順は次のとおりです。1. PetaLinux プロジェクト ディレクトリに移動します。

$ cd <plnx-proj-root>

2. 次のように .hdf/.dsa ファイルのあるディレクトリへのパスを指定して petalinux-config コマンドを実行し、ハードウェア記述をインポートします。$ petalinux-config --get-hw-description=<path-to-directory-containing-hardware description-file>

注記: ハードウェア記述ディレクトリに DSA および HDF ファイルの両方がある場合は、HDF ファイルよりも DSA ファイルが優先されます。PetaLinux プロジェクトで初めて petalinux-config --get-hw-description を実行した場合、またはシステムのプライマリ ハードウェア候補の変更がツールによって検出された場合は、次のような最上位システム コンフィギュレーション メニューが表示されます。-*- ZYNQMP ConfigurationLinux Components Selection ---> Auto Config Settings ---> -*- Subsystem AUTO Hardware Settings --->DTG Settings --->ARM Trusted Firmware Compilation Configuration --->PMU FIRMWARE Configuration --->FPGA Manager --->u-boot Configuration --->Image Packaging Configuration --->Firmware Version Configuration --->Yocto Settings --->

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 21

[Subsystem AUTO Hardware Settings] を選択すると、次のようなメニューが表示されます。Subsystem AUTO Hardware Settings System Processor (psu_cortexa53_0) ---> Memory Settings ---> Serial Settings ---> Ethernet Settings ---> Flash Settings ---> SD/SDIO Settings ---> 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] メニューの詳細は、設定 を参照してください。--oldconfig/--silentconfig オプションを使用すると、以前のコンフィギュレーションを再利用できます。以前のコンフィギュレーションは、自動アップデートに指定されたコンポーネントを含むディレクトリ内にCONFIG.old というファイル名で保存されています。注記: --oldconfig オプションは、今後のリリースで廃止予定であるため、代わりに --silentconfig を使用してください。

システム イメージのビルド前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

PetaLinux システム イメージのビルド手順1. PetaLinux プロジェクト ディレクトリに移動します。

$ cd <plnx-proj-root>

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

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 22

この手順では、デバイス ツリー DTB ファイル、FSBL (第 1 段階ブートローダー) (選択している場合)、U-Boot、Linux カーネル、およびルート ファイル システム イメージを生成します。最後に、必要なブート イメージが生成されます。

3. コンソールにコンパイルの進捗状況が表示されます。コンパイルが終了するまで待ちます。ヒント: 詳細なコンパイル ログは、<plnx-proj-root>/build/build.log にあります。

ビルドが完了すると、生成されたイメージは <plnx-proj-root>/ images および /tftpboot ディレクトリに格納されます。コンパイルの進行状況がコンソールに表示されます。次に例を示します。[INFO] building project[INFO] generating Kconfig for project[INFO] silentconfig project[INFO] sourcing bitbake[INFO] generating plnxtool conf[INFO] generating meta-plnx-generated layer[INFO] generating bbappends for project . This may take time ![INFO] generating u-boot configuration files[INFO] generating kernel configuration files[INFO] generating user layers[INFO] generating kconfig for Rootfs[INFO] silentconfig rootfs[INFO] generating petalinux-user-image.bbINFO: bitbake petalinux-user-imageParsing recipes: 100% |#####################################################################################################################| Time: 0:00:29Parsing of 2777 .bb files complete (0 cached, 2777 parsed). 3812 targets, 147 skipped, 0 masked, 0 errors.NOTE: Resolving any missing task queue dependenciesInitialising tasks: 100% |##################################################################################################################| Time: 0:00:05Checking sstate mirror object availability: 100% |##########################################################################################| Time: 0:00:10Sstate summary: Wanted 923 Found 685 Missed 476 Current 0 (74% match, 0% complete)NOTE: Executing SetScene TasksNOTE: Executing RunQueue TasksNOTE: Tasks Summary: Attempted 3316 tasks of which 2254 didn't need to be rerun and all succeeded.INFO: Copying Images from deploy to imagesINFO: Creating images/linux directoryNOTE: Failed to copy built images to tftp dir: /tftpboot[INFO] successfully built project

デフォルト イメージpetalinux-build を実行すると、Zynq®-7000 デバイスおよび MicroBlaze™ プラットフォーム用の FIT イメージが生成されます。RAM ディスク イメージ rootfs.cpio.gz.u-boot も生成されます。

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 23

完全なコンパイル ログは、PetaLinux プロジェクトの build サブディレクトリにディレクトリに build.log として格納されます。最終的なイメージ <plnx-proj-root>/images/linux/image.ub, は、FIT イメージです。RootFSを含むカーネル イメージは、Zynq® UltraScale+™ MPSoC では Image、Zynq-7000 デバイスでは zImage、MicroBlazeプロセッサでは image.elf です。ビルド イメージは、<plnx-proj-root>/images/linux ディレクトリに配置されます。PetaLinux プロジェクトのシステム レベル設定でイネーブルにしている場合は、コピーが /tftpboot ディレクトリにも配置されます。重要: デフォルトでは、PetaLinux プロジェクトはカーネル、RootFS、および U-Boot に加えて FSBL (第 1 段階ブーブートローダー) も生成およびビルドするよう設定されています。FSBL の自動生成の詳細は、付録 C: ブート コンポーネントの生成 を参照してください。

トラブルシューティングこのセクションでは、PetaLinux イメージをビルドする際によく発生する一般的な問題について説明します。警告/エラー:

<package-name> do_package: Could not copy license file /opt/pkg/petalinux/components/yocto/source/<arch>/layers/core/meta/files/common-licenses/ to /opt/pkg/petalinux/build/tmp/work/<machine-name>-xilinx-linux/image/usr/share/licenses/<package-name>/COPYING.MIT: [Errno 1] Operation not permitted:

説明:

ツールをインストールすると、/opt/pkg/petalinux/components/yocto/source/<arch>/layers/core/meta/files/common-licenses/ 内のライセンス ファイルの権限は 644 になります。つまり、ライセンス ファイルはほかのユーザーが読み出すことはできますが、書き込みはできません。

解決方法:

• 方法 1: レイヤーからのライセンス ファイルの権限を手動で変更します。$ chmod 666 /opt/pkg/petalinux/components/yocto/source/<arch>/layers/core/meta/files/common-licenses/*

ハード リンクを作成する場合は、ユーザーにリンクのソースに対して書き込み権限があります。• 方法 2: カーネルのハード リンク保護をディスエーブルにします。

$ sysctl fs.protected_hardlinks=0

ハード リンクを作成すると、現在のユーザーがソースに書き込むことはできません。• 方法 3: <plnx-proj>/meta-user/conf/petalinuxbsp.conf で次の yocto 変数を設定します。

LICENSE_CREATE_PACKAGE_forcevariable = "0" SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "none"

ビルド システムではリンクは作成されませんが、ライセンスは最終イメージにも含まれません。

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 24

uImage の生成uImage を使用する場合は、petalinux-package --image を使用します。次に例を示します。$ petalinux-package --image -c kernel --format uImage

注記: このオプションは、Zynq-7000 デバイスおよび MicroBlaze™ プロセッサでのみサポートされます。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 ブート コマンドを定義します。注記: uImage は petalinux-build で生成されるので、このオプションは今後のリリースで廃止される予定です。

Zynq UltraScale+ MPSoC 用ブート イメージの生成このセクションは Zynq® UltraScale+™ MPSoC 用で、Zynq UltraScale+ MPSoC 用に BOOT.BIN を生成する方法を説明します。

前提条件このセクションでは、PetaLinux システム イメージのビルドが完了していることを前提としています。詳細は、システム イメージのビルド を参照してください。

ブート イメージの生成ここからの手順は、ハードウェア ビットストリームのビルドが完了してから実行してください。ブート イメージはフラッシュまたは SD カードに格納できます。ボードに電源を投入すると、ブート イメージからブートできます。通常、ブート イメージには FSBL (第 1 段階ブートローダー) イメージ、FPGA ビットストリーム (オプション)、PMU ファームウェア、ATF、および U-Boot が含まれます。次のコマンドを実行して、.BIN フォーマットのブート イメージを生成します。petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/*.bit --forceINFO: File in BOOT BIN: "<plnx-proj-root>/images/linux/zynqmp_fsbl.elf"INFO: File in BOOT BIN: "/images/linux/pmufw.elf"INFO: File in BOOT BIN: "/images/linux/system.bit"INFO: File in BOOT BIN: "/images/linux/bl31.elf"INFO: File in BOOT BIN: "/images/linux/u-boot.elf"INFO: Generating zynqmp binary package BOOT.BIN...

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 25

このコマンドの詳細は、--help オプションを使用するか、『PetaLinux ツール資料: PetaLinux コマンド ライン リファレンス』 (UG1157) を参照してください。

Zynq-7000 デバイス用ブート イメージの生成このセクションは Zynq-7000 デバイス専用で、BOOT.BIN を生成する方法を説明します。

前提条件このセクションでは、PetaLinux システム イメージのビルドが完了していることを前提としています。詳細は、システム イメージのビルド を参照してください。

ブート イメージの生成ここからの手順は、ハードウェア ビットストリームのビルドが完了してから実行してください。ブート イメージはフラッシュまたは SD カードに格納できます。ボードに電源を投入すると、ブート イメージからブートできます。通常、ブート イメージには FSBL (第 1 段階ブートローダー) イメージ、FPGA ビットストリーム (オプション)、およびU-Boot が含まれます。次のコマンドを実行して、.BIN フォーマットのブート イメージを生成します。$ petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot

このコマンドの詳細は、--help オプションを使用するか、『PetaLinux ツール資料: PetaLinux コマンド ライン リファレンス』 (UG1157) を参照してください。

MicroBlaze プロセッサ用ブート イメージの生成このセクションは MicroBlaze™ プロセッサ専用で、MicroBlaze プロセッサ用に MCS ファイルを生成する方法について説明します。

前提条件このセクションでは、PetaLinux システム イメージのビルドが完了していることを前提としています。詳細は、システム イメージのビルド を参照してください。

ブート イメージの生成次のコマンドを実行して、MicroBlaze プロセッサ用の MCS ブート ファイルを生成します。$ petalinux-package --boot --fpga <FPGA bitstream> --u-boot --kernel

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 26

boot.mcs が作業ディレクトリに生成され、<plnx-proj-root>/images/linux/ ディレクトリにコピーされます。上記のコマンドを実行すると、MCS ファイルに FPGA ビットストリーム、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) を参照してください。

MicroBlaze のビットストリーム ファイルの生成前提条件このセクションでは、PetaLinux システム イメージおよび FSBL のビルドが完了していることを前提としています。詳細は、システム イメージのビルド を参照してください。

ビットストリームの生成次のコマンドを実行して、MicroBlaze™ プロセッサ用のビットストリーム ファイルを生成します。$ petalinux-package --boot --fpga <FPGA bitstream> --fsbl <FSBL_ELF> --format DOWNLOAD.BIT

これにより、<plnx-proj-root>images/linux/ ディレクトリに download.bit が生成されます。上記のコマンドは、ELF データをデザインのブロック RAM のメモリ マップ情報にマップすることにより、fs-boot を FPGA ビットストリームに組み込みます。このコマンドの詳細は、--help オプションを使用するか、『PetaLinux ツール資料:PetaLinux コマンド ライン リファレンス』 (UG1157) を参照してください。

ビルドの最適化このセクションでは、PetaLinux ツールでのビルド最適化手法を説明します。

デフォルト コンポーネントのディスエーブルデフォルトのコンポーネントが不要な場合は、ディスエーブルにできます。FSBL および PMU ファームウェアをディスエーブルにするには、petalinux-config → [Linux Components Selection] を選択し、次のものの選択を解除します。• [FSBL] → [ [ ] First Stage Boot Loader]

• [PMUFW] → [ [ ] PMU Firmware]

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 27

これらのコンポーネントの選択を解除すると、デフォルトのビルド フローから削除されます。注記: FSBL および PMU ファームウェアを PetaLinux でビルドしない場合は、ザイリンクス SDK でビルドする必要があります。ローカル ミラー サーバーNFS またはウェブ サーバーに内部ミラーを設定すると、ビルドを高速化できます。デフォルトでは、PetaLinux はsstate-cache を使用して petalinux.xilinx.com からミラーをダウンロードします。PetaLinux の sstate のローカル、NFS、内部ウェブ サーバーを操作するには、次の手順に従います。sstate は、ダウンロード エリアから PetaLinux と共にダウンロードできます。表 7: ローカル ミラー サーバー

サーバー 説明downloads ダウンロード ファイルのソースは http://petalinux.xilinx.com/sswreleases/rel-v$

{PETALINUX_VER}/downloads にあります。aarch64 Zynq® UltraScale+™ MPSoC の sstate ミラーarm Zynq UltraScale+ MPSoC の sstate ミラーmb-full MicroBlaze™ プロセッサの sstate ミラーmb-lite MicroBlaze デザインの sstate ミラー

注意: Zynq UltraScale+ MPSoC PetaLinux BSP をビデオ コーデックと共にビルドするには、petalinux.xilinx.com またはローカルを介してこの sstate にアクセスする必要があります。

ソース ミラーソース ミラーは、petalinux-config → [Yocto-settings] → [Add pre-mirror URL] を選択し、すべてのプロジェクトに対して file:///<sstate path>/downloads に設定します。ダウンロード ミラーを使用する設定を保存してbuild/conf/plnxtool.conf で変更を確認します。たとえば、file:///proj/petalinux/released/Petalinux-v${PETALINUX_VER}/sstate-rel-v${PETALINUX_VER}/downloads のようになります。

ビルド時間の短縮ネットワーク sstate フィードをディスエーブルにしてビルド時間を短縮するには、petalinux-config → [YoctoSettings] → [Enable Network sstate feeds] の選択を解除します。

sstate フィードsstate フィードは、petalinux-config で設定できます。• NFS 上に sstate フィードを設定するには、petalinux-config → [Yocto Settings] → [Local sstate feeds settings] を選択し、sstate ディレクトリの完全パスを入力します。このオプションをイネーブルにすると、NFS/ローカル マウント ポイントで使用可能な独自の共有ステートをポイントできます。

• ウェブ サーバー上に sstate フィードを設定するには、petalinux-config → [Yocto Settings] → [Enable Networksstate feeds] → [Network sstate feeds URL] を選択し、sstate フィードの URL を入力します。

注記: これは、デフォルトでは http://petalinux.xilinx.com/sswreleases/rel-v${PETALINUX_VER}/aarch64/sstate-cache に設定されています。

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 28

依存性を無視したビルドデフォルトのイメージ設定では、initramfs がイネーブルになっています。これにより、次のような依存性が発生します。• initramfs 用にビルドするためカーネルに RootFS が必要です。• RootFS をビルドすると、FSBL、PMU ファームウェア、および ATF がビルドされます。これらは完全なイメージの一部です。

• デバイス ツリーにカーネル ヘッダーが必要です。• U-Boot が Linux デバイス ツリーと共にコンパイルされるので、U-Boot にデバイス ツリーが必要です。依存性を明示的に処理 (petalinux-build -b component) することにより、コンポーネントを個別にビルドできます。このオプションでは、指定のレシピ/タスクが依存性を無視してビルドされるので、十分な注意が必要です。ユーザーが明示的に依存性を指定しない場合は、断続的なエラーが複数発生する可能性があります。プロジェクトで断続的なエラーが発生しないようにするには、petalinux-build -x mrproper を使用します。

initramfs モードPetaLinux BSP のデフォルト モードは、initramfs モードです。これモードには、次のような依存性があります。• initramfs 用にビルドするためカーネルに RootFS が必要です。• RootFS をビルドすると、FSBL、PMU ファームウェア、および ATF がビルドされます。• デバイス ツリーにカーネル ヘッダーが必要です。• U-Boot が Linux デバイス ツリーと共にコンパイルされるので、U-Boot にデバイス ツリーが必要です。そのため、デバイス ツリーをビルドするとすべてのコンポーネントがビルドされます。

例 1: デバイス ツリーのみをビルド次の例に、PetaLinux プロジェクトからデバイス ツリーを生成する手順を示します。デバイス ツリー レシピは、HDF、ネイティブ ツール (dtc、python-yaml など)、カーネル ヘッダーに依存しています。セットアップ コマンドは次のとおりです。1. HDF をワークスペースにインポートします。

petalinux-config --get-hw-description=<PATH-to-HDF/DSA-DIRECTORY>

上記のコマンドは、ハードウェア デザインのみを外部ロケーションから petalinux project <proj-root>/project-spec/hw-description/ にコピーします。external-hdf は Yocto のレシピで、HDF をこのロケーションから Yocto ワークスペースにインポートします。HDF 依存のレシピはすべて、Yocto ワークスペースからのハードウェア デザインを使用します。デフォルトでは、この依存性はレシピ内で処理されます。依存性なしでビルドする場合は、ハードウェア デザインをアップデートするたびに次のコマンドを実行する必要があります。petalinux-build -c external-hdf

2. すべての前提条件 (ネイティブ ユーティリティ ) を準備します。このコマンドは、初回のみ実行する必要があります。クリーニングした場合にのみ再実行が必要です。petalinux-build -c device-tree -x do_prepare_recipe_sysroot

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 29

注記: この機能は、今後のリリースで廃止予定です。petalinux-build コマンドの一部としてコンポーネントの個別のタスクをビルドするために petalinux-build -c <app/package/component> -x <task> を使用する機能は、廃止予定です。

3. 次のコマンドを使用して、依存タスクを無視してデバイス ツリーをビルドします。petalinux-build -b device-tree

このコマンドにより、デバイス ツリーがすべての依存性を無視してビルドされ、images/linux/ ディレクトリで運用されます。満たされない依存性がある場合、エラーが表示されます。上記のコマンドは、インクリメンタル ビルドにも使用できます。

注記: 上記の個別のコマンドは、-b オプションを使用して実行する必要があります。petalinux-build -cdevice-tree の 1 回の実行で、上記のすべての機能を得られます。すべての依存性が自動的に削除され、さらにいくつかの依存コンポーネントがビルドされます。例 2: U-Boot のみをビルド次の例では、依存性を無視した U-Boot のビルド方法を示します。u-boot-xlnx レシピは、HDF、デバイス ツリー、およびネイティブ ツール (mkimage、dtc など) に依存します。1. デバイス ツリーの依存性は必須でスキップできません。その代わりに、上記の例を使用してデバイス ツリーを

ビルドします。2. U-Boot レシピのネイティブ ツールをセットアップします。これには、次のコマンドを使用します。

petalinux-build -c u-boot-xlnx -x do_prepare_recipe_sysroot

上記のコマンドは、初回とクリーニング後に実行する必要があります。注記: この機能は、今後のリリースで廃止予定です。petalinux-build コマンドの一部としてコンポーネントの個別のタスクをビルドするために petalinux-build -c <app/package/component> -x <task> を使用する機能は、廃止予定です。

3. U-Boot を依存性を無視してビルドします。これには、次のコマンドを使用します。petalinux-build -b u-boot-xlnx_2019.1

上記のコマンドにより、U-Boot とパッケージが images/linux にビルドされます。-b オプションを使用してレシピの完全なパス/名前を指定する必要があります。そうしないと、仮想ターゲットが機能しません。表 8: レシピのパス

レシピ パスkernel、virtual/kernel linux-xlnx_2019.1

u-boot、virtual/bootloader u-boot-xlnx-2019.1

device-tree device-tree

レシピのパスを見つけるには、次のコマンドを使用します。petalinux-build -c "-e virtual/kernel" | grep "^FILE="

virtual/kernel を任意の仮想ターゲットまたはレシピ名に置き換えます。

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 30

注記: petalinux-build -b を実行するには、すべての前提条件をユーザーが明示的に実行しておく必要があります。petalinux-build -c では、すべての依存性が自動的に処理されます。個々のコマンドを明示的に実行する必要はありません。今後のリリースで廃止予定のコマンド• petalinux-build -c rootfs

• petalinux-build -c <package_group>

• petalinux-build -x distclean(for image)

• petalinux-build -c component -x <task> (<task> は fetch、unpack、compile など)

第 4 章: 設定およびビルド

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 31

第 5 章

ブートおよびパッケージビルド済みイメージのパッケージ

このセクションでは、新規にビルドしたイメージを prebuilt ディレクトリにパッケージする方法を説明します。この手順は通常、プロジェクトを BSP としてほかのユーザーに配布する場合に実行されます。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• Zynq®-7000 デバイスの場合、ブート イメージの生成が完了している。詳細は、Zynq UltraScale+ MPSoC 用ブート イメージの生成 を参照してください。

• MicroBlaze™ CPU の場合、システム イメージの生成が完了している。詳細は、システム イメージのビルド を参照してください。

ビルド済みイメージのパッケージ手順1. プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

このコマンドの詳細は、--help オプションを使用するか、『PetaLinux ツール資料: PetaLinux コマンド ライン リファレンス』 (UG1157) を参照してください。

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

PetaLinux イメージをブートするには、petalinux-boot コマンドを使用します。ハードウェア ボードで --qemuオプションおよび --jtag を使用して、イメージをソフトウェア エミュレーション (QEMU) にブートします。このセクションでは、prebuilt オプションの異なるブート レベルについて説明します。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 32

前提条件このセクションでは、ビルド済みイメージのパッケージが完了していることを前提としています。詳細は、ビルド済みイメージのパッケージ を参照してください。

prebuilt オプションのブート レベル--prebuilt <BOOT_LEVEL> オプションを指定すると、すべての設定をオーバーライドしてビルド済みイメージがブートされます。サポートされるブート レベルは 1 ~ 3 です。• レベル 1: ビルド済み FPGA ビットストリームをダウンロードします。

○ Zynq® UltraScale+™ MPSoC 用に FSBL と PMU ファームウェアをブートします。○ Zynq-7000 デバイス用に FSBL をブートします。

• レベル 2: ビルド済み FPGA ビットストリームをダウンロードし、ビルド済み U-Boot をブートします。○ Zynq-7000: U-Boot をブートする前に FSBL をブートします。○ Zynq UltraScale+ MPSoC: U-Boot をブートする前に PMU ファームウェア、FSBL、および ATF をブートします。

• レベル 3:

○ MicroBlaze™ プロセッサ: ビルド済み FPGA ビットストリームをダウンロードし、ターゲット上のビルド済みカーネル イメージをブートします。

○ Zynq-7000 デバイス: ビルド済み FPGA ビットストリームと FSBL をダウンロードし、ビルド済み U-Boot をブートし、ターゲット上のビルド済みカーネルをブートします。

○ Zynq UltraScale+ MPSoC: PMU ファームウェア、ビルド済み FSBL、ビルド済みカーネル、ビルド済み FPGAビットストリーム、linux-boot.elf、DTB、およびビルド済み ATF をターゲットにダウンロードします。

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

QEMU での PetaLinux イメージのブートこのセクションでは、ソフトウェア エミュレーション (QEMU) 環境で PetaLinux イメージをブートする方法を説明します。QEMU でサポートされるザイリンクス IP モデルの詳細は、付録 E: QEMU でサポートされるザイリンクス IP モデルを参照してください。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• PetaLinux BSP をインストール (PetaLinux BSP のインストール参照) または独自の PetaLinux プロジェクトをビルド (システム イメージのビルド参照) しており、PetaLinux システム イメージが存在している。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 33

• QEMU ブートで --prebuilt オプションを使用する場合、ビルド済みイメージがパッケージされている。詳細は、ビルド済みイメージのパッケージ を参照してください。

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

QEMU で PetaLinux イメージをブートする手順PetaLinux では、PetaLinux ソフトウェア イメージをハードウェアなしのシミュレーション環境でテストするためのQEMU がサポートされています。QEMU で PetaLinux リファレンス デザインをテストするには、次の手順に従います。1. プロジェクト ディレクトリに移動し、ビルド済みの Linux カーネル イメージをブートします。

$ petalinux-boot --qemu --prebuilt 3

QEMU ブートに --prebuilt オプションを使用しない場合は、QEMU でのその他のブート方法 を参照してください。--qemu オプションを指定すると、petalinux-boot で実際のハードウェアを JTAG を介してブートする代わりに QEMU がブートされます。--prebuilt 3 を指定すると、PMUFW がバックグランドで実行された Linux カーネルがブートします。• --prebuilt 1 を指定すると、レベル 1 (FPGA ビットストリーム) ブートが実行されます。このオプションは、QEMU では使用できません。

• レベル 2 ブートには、U-Boot が含まれます。• レベル 3 ブートには、ビルド済み Linux イメージが含まれます。--prebuilt オプションの各ブート レベルの詳細は、ビルド済みイメージでの petalinux-boot コマンドの使用 を参照してください。次に、petalinux-kernel が正常に実行された場合にコンソールに表示されるカーネル ブート ログ メッセージの例を示します。

[ 10.709243] Freeing unused kernel memory: 5568K (ffffffc000c20000 - ffffffc001190000)[ 13.448003] udevd[1666]: starting version 3.2[ 13.458788] random: udevd: uninitialized urandom read (16 bytes read)[ 13.556064] udevd[1667]: starting eudev-3.2[ 14.045406] random: udevd: uninitialized urandom read (16 bytes read)[ 37.446360] random: dd: uninitialized urandom read (512 bytes read)[ 40.406936] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ 41.460975] macb ff0e0000.ethernet eth0: link up (100/Full)[ 41.474152] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready[ 44.787172] random: dropbearkey: uninitialized urandom read (32 bytes read)

PetaLinux 2019.1 xilinx-zcu102-2019_1 /dev/ttyPS0

xilinx-zcu102-2019_1 login: rootPassword: root@xilinx-zcu102-2019_1:~# root@xilinx-zcu102-2019_1:~#

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

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 34

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

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

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

○ Zynq® UltraScale+™ MPSoC の場合、<plnx-proj-root>/images/linux/u-boot.elf が読み込まれ、ATF イメージ <plnx-proj-root>/images/linux/bl31.elf が QEMU でブートします。その後、ATF が読み込まれた U-Boot イメージをブートします。petalinux-build を使用してシステム イメージをビルドします。

○ MicroBlaze™ CPU にはおよび Zynq-7000 デバイスの場合、<plnx-proj-root>/images/linux/u-boot.elf が QEMU でブートします。

• 新規にビルドしたカーネルを 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 でブートし、PMU ファームウェアがバックグランドで実行されている状態で、ATF が読み込まれたカーネル イメージをブートします。

注記: Zynq UltraScale+ MPSoC カーネル ブートの場合は、pre-built/linux/images/ フォルダーを作成してZynq UltraScale+ MPSoC BSP プロジェクトから pmu_rom_qemu_sha3.elf をコピーする必要があります。または、--pmu-qemu-args を使用して pmu_rom_qemu_sha3.elf を渡すこともできます。cd <project directory>mkdir -p pre-built/linux/imagescp <zynq UltraScale+ bsp project directory>/pre-built/linux/images/pmu_rom_qemu_sha3.elf pre-built/linux/images/

またはpetalinux-boot --qemu --uboot --pmu-qemu-args "-kernel pmu_rom_qemu_sha3.elf"

起動中、次に示すように、通常の Linux ブート プロセスが終了し、ログイン プロンプトが表示されます。[ 10.709243] Freeing unused kernel memory: 5568K (ffffffc000c20000 -ffffffc001190000)[ 13.448003] udevd[1666]: starting version 3.2[ 13.458788] random: udevd: uninitialized urandom read (16 bytes read)[ 13.556064] udevd[1667]: starting eudev-3.2[ 14.045406] random: udevd: uninitialized urandom read (16 bytes read)[ 37.446360] random: dd: uninitialized urandom read (512 bytes read)[ 40.406936] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ 41.460975] macb ff0e0000.ethernet eth0: link up (100/Full)[ 41.474152] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready[ 44.787172] random: dropbearkey: uninitialized urandom read (32 bytes read)

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 35

PetaLinux 2019.1 xilinx-zcu102-2019_1 /dev/ttyPS0xilinx-zcu102-2019_1 login: rootPassword:root@xilinx-zcu102-2019_1:~#root@xilinx-zcu102-2019_1:~#

テストに使用する Linux イメージと設定によって、上記の例とは表示される出力が異なる場合があります。エミュレーターのコンソールにログイン プロンプトが表示されたら、ユーザー名 root およびパスワード root を使用して仮想システムにログインします。ls、ifconfig、cat/proc/cpuinfo などの Linux コマンドを実行してみます。実際のハードウェア上でと同様に機能します。エミュレーターを終了するには、Ctrl + A キーを押して放した後、X キーを押します。• 特定の Linux イメージをブート:

petalinux-boot ツールでイメージ オプション (-i または --image) を使用して特定の Linux イメージをブートすることもできます。$ petalinux-boot --qemu --image <path-to-Linux-image-file>

例:

$ petalinux-boot --qemu --image ./images/linux/zImage

• 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 の場合)。または、--dtb オプションを次のように使用できます。$ petalinux-boot --qemu --image ./images/linux/zImage --dtb ./images/linux/system.dtb

注記: QEMU のバージョンが 2.6 にアップグレードされました。これらの旧オプションは新バージョンでは廃止予定ですが、以前と同様に動作します。旧オプションを使用していると、PetaLinux ツールで警告メッセージが表示されます。このメッセージは無視しても問題ありません。次に、Zynq UltraScale+ MPSoC の警告メッセージを示します。qemu-system-aarch64: -tftp /home/user/xilinx-zcu102-2019.1/images/linux: The -tftp option is deprecated. Please use '-netdev user,tftp=...' instead.g

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

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

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 36

このセクションは、SD カードからのブートをサポートする Zynq® UltraScale+™ MPSoC および Zynq-7000 デバイスのみを対象としています。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• Linux ワークステーションに PetaLinux ツールがインストールされていること。インストールしていない場合は、インストール手順 を参照してください。

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

• minicom/kermit/gtkterm などのシリアル通信プログラムがインストールされていること (シリアル通信プログラムのボー レートは 115200bps に設定)。

SD カードを使用してハードウェア上で PetaLinux イメージをブートする手順1. ホスト マシンに SD カードをマウントします。2. <plnx-proj-root>/pre-built/linux/images/ にある次のファイルを、SD カードの FAT32 でフォーマットされた第 1 パーティションのルート ディレクトリにコピーします。• BOOT.BIN

• image.ub

3. ボードのシリアル ポートをワークステーションに接続します。4. ワークステーションでコンソールを開き、kermit、minicom、gtkterm などのシリアル通信プログラムを起動しま

す。コンソールでボー レートを 115200 に設定します。5. ボードの電源をオフにします。6. ボードのブート モードを SD ブートに設定します。詳細は、ボードの資料を参照してください。7. SD カードをボードに挿入します。8. ボードに電源を投入します。9. シリアル コンソールに、次のようなブート メッセージが表示されます。

[ 5.546354] clk: Not disabling unused clocks[ 5.550616] ALSA device list:[ 5.553528] #0: DisplayPort monitor[ 5.576326] sd 1:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB)[ 5.583894] sd 1:0:0:0: [sda] Write Protect is off[ 5.588699] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA[ 5.630942] sda:[ 5.633210] sd 1:0:0:0: [sda] Attached SCSI disk[ 5.637897] Freeing unused kernel memory: 512K (ffffffc000c20000 - ffffffc000ca0000)INIT: version 2.88 bootingStarting udev[ 5.746538] udevd[1772]: starting version 3.2[ 5.754868] udevd[1773]: starting eudev-3.2Populating dev cache

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 37

Starting internet superserver: inetd.Running postinst /etc/rpm-postinsts/100-sysvinit-inittab...Running postinst /etc/rpm-postinsts/libglib-2.0-0...update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)INIT: Entering runlevel: 5Configuring network interfaces... [ 6.607236] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not readyudhcpc (v1.24.1) startedSending discover...[ 7.628323] macb ff0e0000.ethernet eth0: link up (1000/Full)[ 7.633980] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes readySending discover...Sending select for 10.10.70.1...Lease of 10.10.70.1 obtained, lease time 600/etc/udhcpc.d/50default: Adding DNS 172.19.128.1/etc/udhcpc.d/50default: Adding DNS 172.19.129.1Done.Starting Dropbear SSH server: Generating key, this may take a while...Public key portion is:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxGtijKDWcJgnDxRCGiUPJJIMapFc0tcsCkMGyjJEDs9LRugWzgaa8XA+pGy4aTvZqHvGnFTvkMw4gZE/O+BBgO8mMK9dFei2BvENbljm8M4NotG5LXRCFDaw6bXBCtg4ekCKWNU6lUQU+PPdpmj9X+JgnTHnHnNB3jP6MrymCuS5wfFbyHfKdrwWXwfLmCycZr7DjRumee7T/3SrBU3oRJoLcCVj2lf5Z7673+rOT1GM3QFzO2HWCCzyz/3IUcEh9mhKpjzgs4iNEKmxwyi29rl37x7PD7zRsQbaW8uUtheCain3M1mjKfPnnygopdVh6IFsAT3FFMK4PYJ1GPL+h root@xilinx-zcu102-zu9-es2-rev1_0-2019.1Fingerprint: md5 f2:ce:1d:f2:50:e6:e2:55:5a:96:6f:bc:98:8f:82:99dropbear.Starting syslogd/klogd: doneStarting domain watchdog daemon: xenwatchdogd startupPetaLinux 2019.1 xilinx-zcu102-zu9-es2-rev1_0-2019.1 /dev/ttyPS0xilinx-zcu102-zu9-es2-rev1_0-2019.1 login: rootPassword: root@xilinx-zcu102-zu9-es2-rev1_0-2019:~#

ヒント: 自動ブートを停止する場合は、コンソールに「Hit any key to stop autoboot:」というメッセージが表示されたときに任意のキーを押します。10. シリアル コンソールにユーザー名 root とパスワード root を入力して PetaLinux システムにログインします。

トラブルシューティングこのセクションでは、SD カードを使用してハードウェア上で PetaLinux イメージをブートする際に発生する一般的な問題について説明します。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 38

表 9: ハードウェア上での PetaLinux イメージに関するトラブルシューティング問題/エラー メッセージ 説明/解決方法

Wrong Image Format for bootcommand.

ERROR: Can’t get kernel image!

問題の説明:このエラー メッセージは、U-Boot ブートローダーでカーネル イメージを見つけることができないことを示します。bootcmd 環境変数が正しく設定されていない可能性があります。解決方法:デフォルトのブート デバイスを確認するには、U-Boot コンソールで次のコマンドを実行して bootcmd 環境変数を確認します。U-Boot-PetaLinux> print bootcmd

sdboot フローを使用して実行しない場合、次のオプションがあります。• 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 用ブート イメージの生成 を参照してください。

ヒント: U-Boot オプションの詳細は、$ U-Boot-PetaLinux> printenv コマンドを実行してください。

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

このセクションでは、JTAG を使用してハードウェア上で PetaLinux イメージをブートする方法について説明します。JTAG ブートは XSDB と通信し、XSDB は hw_server と通信します。使用される TCP ポートは 3121 です。このポートでファイアウォールがディスエーブルになっていることを確認してください。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• PetaLinux BSP をインストール (PetaLinux BSP のインストール参照) または独自の PetaLinux プロジェクトをビルド (システム イメージのビルド参照) しており、PetaLinux システム イメージが存在している。

• この条件はオプションで、JTAG ブートで prebuilt 機能を使用する場合のみ必要です。ビルド済みイメージがパッケージされている (ビルド済みイメージのパッケージ を参照)。

• minicom/kermit/gtkterm などのシリアル通信プログラムがインストールされていること (シリアル通信プログラムのボー レートは 115200bps に設定)。

• 適切な JTAG ケーブル ドライバーがインストールされている。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 39

JTAG を使用してハードウェア上で PetaLinux イメージをブートする手順1. ボードの電源をオフにします。2. ボードの JTAG ポートを JTAG ケーブル経由でワークステーションに接続します。3. ボードのシリアル ポートをワークステーションに接続します。4. システムにイーサネットが含まれる場合、ボードのイーサネット ポートをローカル ネットワークに接続します。5. Zynq-7000 デバイス ボードの場合、モード スイッチが JTAG モードになっていることを確認します。詳細は、

ボードの資料を参照してください。6. ボードに電源を投入します。7. ワークステーションでコンソールを開き、kermit、minicom などのシリアル通信プログラムを起動します。コン

ソールでボー レートを 115200 に設定します。8. ワークステーションで次の petalinux-boot コマンドを実行します。

$ petalinux-boot --jtag --prebuilt 3

注記: JTAG ブートに --prebuilt オプションを使用しない場合は、JTAG でのブートの追加オプション を参照してください。petalinux-boot で --jtag オプションを指定するとハードウェアが JTAG を介してブートし、--prebuilt3 オプションを指定すると Linux カーネルがブートします。コマンドが完了してから、コマンド コンソールにシェル プロンプトが表示するまで待ちます。注記: --prebuilt オプションの各ブート レベルの詳細は、ビルド済みイメージでの petalinux-boot コマンドの使用を参照してください。petalinux-boot の実行が正しく完了すると、ワークステーションのコマンド コンソールに次のようなメッセージが表示されます。

INIT: Entering runlevel: 5Configuring network interfaces... [ 6.607236] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not readyudhcpc (v1.24.1) startedSending discover...[ 7.628323] macb ff0e0000.ethernet eth0: link up (1000/Full)[ 7.633980] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes readySending discover...Sending select for 10.10.70.1...Lease of 10.10.70.1 obtained, lease time 600/etc/udhcpc.d/50default: Adding DNS 172.19.128.1/etc/udhcpc.d/50default: Adding DNS 172.19.129.1Done.Starting Dropbear SSH server: Generating key, this may take a while...Public key portion is:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxGtijKDWcJgnDxRCGiUPJJIMapFc0tcsCkMGyjJEDs9LRugWzgaa8XA+pGy4aTvZqHvGnFTvkMw4gZE/O+BBgO8mMK9dFei2BvENbljm8M4NotG5LXRCFDaw6bXBCtg4ekCKWNU6lUQU+PPdpmj9X+JgnTHnHnNB3jP6MrymCuS5wfFbyHfKdrwWXwfLmCycZr7DjRumee7T/3SrBU3oRJoLcCVj2lf5Z7673+rOT1GM3QFzO2HWCCzyz/3IUcEh9mhKpjzgs4iNEKmxwyi29rl37x7PD7zRsQbaW8uUtheCain3M1mjKfPnnygopdVh6IFsAT3FFMK4PYJ1GPL+h root@xilinx-zcu102-zu9-es2-

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 40

rev1_0-2019.1

Fingerprint: md5 f2:ce:1d:f2:50:e6:e2:55:5a:96:6f:bc:98:8f:82:99dropbear.Starting syslogd/klogd: doneStarting domain watchdog daemon: xenwatchdogd startupPetaLinux 2019.1 xilinx-zcu102-zu9-es2-rev1_0-2019.1 /dev/ttyPS0xilinx-zcu102-zu9-es2-rev1_0-2019.1 login: rootPassword: root@xilinx-zcu102-zu9-es2-rev1_0-2019:~

デフォルトでは、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® UltraScale+™ MPSoC の場合、<plnx-proj-root>/images/linux/Image がターゲット ボード上でブートします。

○ Zynq-7000 デバイスの場合、<plnx-proj-root>/images/linux/zImage がターゲット ボード上でブートします。

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

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

上記のコマンドを実行するとビットストリームの後に U-Boot イメージがダウンロードされます。• -v オプションを使用して JTAG ブートの詳細出力を表示:

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

JTAG ブート中の Tcl/XSDB ログJTAG ブート中に使用する XSDB コマンドのログを記録するには、次のコマンドを使用します。このコマンドを実行すると、Tcl スクリプト (およびそれにより実行される XSDB コマンド) のデータが test.txt にダンプされます。$ cd <plnx-proj-root>$ petalinux-boot --jtag --prebuilt 3 --tcl test.txt

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 41

トラブルシューティングこのセクションでは、JTAG を使用してハードウェア上で PetaLinux イメージをブートする際に発生する一般的な問題について説明します。表 10: JTAG を使用したハードウェア上での PetaLinux イメージに関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法ERROR: This tool requires ’xsdb’and it is missing. Please sourceXilinx 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 コアに設定されていることを確認します。

○ システム イメージをビルドします (システム イメージのビルド を参照)。

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

このセクションでは、TFTP (Trivial File Transfer Protocol) を使用して PetaLinux イメージをブートする方法について説明します。TFTP ブートは、JTAG ブートよりもはるかに高速で、カーネル ソースを変更するたびにイメージをフラッシュ メモリに書き込む必要がないので、時間を大幅に短縮できます。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• TFTP サーバーが動作するホスト環境のセットアップが完了しており、TFTP ブート用の PetaLinux イメージがビルドされている。詳細は、TFTP ブートの設定 を参照してください。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 42

• ビルド済みイメージがパッケージされている。詳細は、ビルド済みイメージのパッケージ を参照してください。• minicom/kermit/gtkterm などのシリアル通信プログラムがインストールされていること (シリアル通信プログラムのボー レートは 115200bps に設定)。

• ホストと Linux ターゲットの間でイーサネット接続が正しくセットアップされている。• 適切な JTAG ケーブル ドライバーがインストールされている。

TFTP を使用してハードウェア上で PetaLinux イメージをブートする手順1. ボードの電源をオフにします。2. ボードの JTAG ポートを JTAG ケーブル経由でワークステーションに接続します。3. ボードのシリアル ポートをワークステーションに接続します。4. ボードのイーサネット ポートをネットワーク スイッチ経由でローカル ネットワークに接続します。5. Zynq®-7000 デバイスおよび Zynq UltraScale+ MPSoC デバイス ボードでは、モード スイッチが JTAG モードになっていることを確認します。詳細は、ボードの資料を参照してください。

6. ボードに電源を投入します。7. ワークステーションでコンソールを開き、kermit、minicom などのシリアル通信プログラムを起動し、コンソールでボー レートを 115200 に設定します。

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

--jtag オプションは petalinux-boot で JTAG を介してハードウェア上でブートすることを指定し、--prebuilt 2 オプションはビルド済みビットストリーム (および Zynq-7000 デバイスの場合は FSBL) をターゲット ボードにダウンロードした後、ターゲット ボード上でビルド済み U-Boot をブートするよう指定します。

9. 自動ブートが開始したら、任意のキーを押して停止します。次に、U-Boot のダウンロードが正しく完了した場合のワークステーション コンソール出力の例を示します。U-Boot 2019.01-07106-gec1e403dd6 (Apr 29 2019 - 09:12:44 +0000)

Board: Xilinx ZynqMP

I2C: readyDRAM: 4 GiBEL Level: EL2Chip ID: xczuunknMMC: Card did not respond to voltage select!sdhci@ff170000 - probe failed: -95Card did not respond to voltage select!

zynqmp_qspi_ofdata_to_platdata: CLK 104156250SF: 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-id

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 43

Warning: ethernet@ff0e0000 MAC addresses don't match:Address in SROM is ff:ff:ff:ff:ff:ffAddress in environment is 00:0a:35:00:22:01eth0: ethernet@ff0e0000U-BOOT for xilinx-zcu102-2019_1

BOOTP broadcast 1DHCP client bound to address 10.0.2.15 (2 ms)Hit any key to stop autoboot: 0 ZynqMP>

10. TFTP サーバーの IP アドレスが、イメージの存在するホストの IP アドレスに設定されていることを確認します。これには、次のコマンドを実行します。ZynqMP> print serverip

11. 次のコマンドを使用して、サーバーの IP アドレスをホストの IP アドレスに設定します。ZynqMP> set serverip <HOST IP ADDRESS>; saveenv

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

トラブルシューティング表 11: TFTP を使用したハードウェア上での PetaLinux イメージ

問題/エラー メッセージ 説明/解決方法Error: "serverip" not defined. 問題の説明:

このエラー メッセージは、U-Boot 環境変数 serverip が設定されていないことを示します。イメージの存在するホストの IPアドレスに設定する必要があります。解決方法:次のコマンドを実行して、serverip を設定します。ZynqMP> set serverip <HOST IP ADDRESS>;saveenv

BSP のパッケージBSP は、チーム内およびカスタマーに配布するのに便利です。カスタマイズされた PetaLinux プロジェクトは、BSPを使用して次のレベルのチームまたは外部カスタマーに配布できます。このセクションでは、PetaLinux プロジェクトで BSP をパッケージする方法を、例を示しながら説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 44

BSP のパッケージ手順サービス リクエストを作成してデバッグが行えるようにプロジェクトをパッケージする手順は次のとおりです。1. petalinux-package コマンドは、PetaLinux プロジェクト ディレクトリ以外からでも実行できます。2. 次のコマンドを実行して、BSP をパッケージします。

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

これにより、MY.BSP が生成されます。これには、指定したプロジェクトの次の要素が含まれます。• <plnx-proj-root>/project-spec/

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

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

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

• <plnx-proj-root>/.gitignore

• <plnx-proj-root>/components

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 をパッケージする必要があります。

第 5 章: ブートおよびパッケージ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 45

第 6 章

ワークスペースのアップグレードPetaLinux ツールには、システム ソフトウェア コンポーネント (エンベデッド SW、ATF、Linux、U-Boot、OpenAMP、および Yocto フレームワーク) およびホスト ツール コンポーネント (Vivado® Design Suite、ザイリンクス ソフトウェア開発キット (SDK)、HSI など) が含まれます。最新のシステム ソフトウェア コンポーネントにアップグレードするには、対応するホスト ツール (Vivado) をインストールする必要があります。たとえば、2019.1 リリースに付属する 4.18 カーネルがあり、これを 2019.2 に付属する 4.19 カーネルにアップグレードする場合は、2019.2PetaLinux ツールおよび 2019.2 Vivado ハードウェア プロジェクトをインストールする必要があります。petalinux-upgrade コマンドを使用すると、ホスト ツール コンポーネントを変更せずに、システム ソフトウェアコンポーネントをアップグレードできます。システム ソフトウェア コンポーネントをアップグレードするには、まず PetaLinux ツールをアップグレードし、その後個々の PetaLinux プロジェクトをアップグレードします。これにより、最新バージョンの Vivado ハードウェア プロジェクトまたは XSDK をインストールせずにアップグレードできます。注記: petalinux-upgrade は、2019.1 で導入されたコマンドです。重要: このアップグレード コマンドは、マイナー アップグレードでのみ機能します。つまり、petalinux-upgradeを使用して 2019.1 から 2019.2 にアップグレードすることはできますが、2019.1 から 2020.1 にアップグレードすることはできません。

petalinux-upgrade オプション表 12: petalinux-upgrade オプション

オプション 機能の説明 値の範囲 デフォルト範囲-h --help 使用法を表示します。 なし なし-f --file ターゲット システム ソフトウェア コンポーネントへのローカル パス。 ユーザー指定。ディレクトリ構造は次のように指定します。

• <file/esdks>

• <file/downloads>

なし

-u --url ターゲット システム ソフトウェア コンポーネントへの URL。 ユーザー指定。URL は次のように指定します。• <url/esdks>

• <url/downloads>

なし

-w, --wget-args コマンドに追加の wget 引数を渡します。 追加の wget オプション なし

第 6 章: ワークスペースのアップグレード

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 46

PetaLinux ツールのアップグレードローカル ファイルからのアップグレードサーバー URL http://petalinux.xilinx.com/sswreleases/rel-v2019/ からターゲット システム ソフトウェア コンポーネントの内容をダウンロードします。petalinux-upgrade コマンドには、入力としてダウンロード パスを指定する必要があります。1. ツールがインストールされていない場合は、インストールします。

注記: インストール エリアが書き込み可能であることを確認します。2. cd <plnx-tool> コマンドを使用してインストールされている PetaLinux ツールのディレクトリに移動しま

す。3. 「source settings.sh」と入力します。4. 「petalinux-upgrade -f <downloaded esdk path>」と入力します。例:

petalinux-upgrade -f “/scratch/ws/upgrade-workspace/eSDK”

注記: このオプションは、オフライン アップグレード用です。

リモート サーバーからのアップグレードインストールされているツール ターゲット システムのソフトウェア コンポーネントをリモート サーバーからアップグレードするには、次の手順に従います。1. ツールがインストールされていない場合は、インストールします。注記: ツールに R/W 権限が必要です。

2. インストール ディレクトリに移動します。3. 「source settings.sh」と入力します。4. 「petalinux-upgrade -u <url>」と入力します。例:

petalinux-upgrade -u “http://petalinux.xilinx.com/sswreleases/rel-v2019/sdkupdate/”

重要: 現在のリリースでは、マイナー バージョン アップグレードのみがサポートされます。

第 6 章: ワークスペースのアップグレード

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 47

PetaLinux プロジェクトのアップグレードアップグレードされたツールを使用した既存のプロジェクトのアップグレードアップグレードされたツールを使用して既存のプロジェクトをアップグレードするには、次の手順に従います。1. ツールをアップグレードします。ローカル ファイルからアップグレードするには、ローカル ファイルからのア

ップグレード を参照してください。リモート サーバーからアップグレードするには、リモート サーバーからのアップグレード を参照してください。

2. アップグレードする PetaLinux プロジェクトに移動します。3. 「petalinux-build -x mrproper」と入力します。4. 「petalinux-build」と入力してプロジェクトを新しいシステム コンポーネントでアップグレードします。

アップグレードされたツールを使用した新規プロジェクトの作成アップグレードされたツールを使用して新規プロジェクトを作成するには、次の手順に従います。注意: 新規プロジェクトを作成するには、最新の Vivado® Design Suite および PetaLinux ツールを使用することをお勧めします。次のオプションは、最新の ssw コンポーネントが必要だが以前のバージョンの Vivado ハードウェア プロジェクトを使用する必要がある場合にのみ使用してください。1. ツールをアップグレードします。ローカル ファイルからアップグレードするには、ローカル ファイルからのアップグレード を参照してください。リモート サーバーからアップグレードするには、リモート サーバーからのアップグレード を参照してください。

2. PetaLinux プロジェクトを作成します。3. petalinux-build コマンドを使用して、新しいシステム コンポーネントでプロジェクトをビルドします。

第 6 章: ワークスペースのアップグレード

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 48

第 7 章

プロジェクトのカスタマイズファームウェア バージョンの設定

このセクションでは、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. メニューを終了し、設定を保存するかどうかを尋ねるメッセージが表示されたら <Yes> を選択します。6. ターゲットがブートしたら、cat /etc/hostname でホスト名、cat /etc/petalinux/product で製品名、

cat /etc/petalinux/version でファームウェア バージョンを確認します。

ルート ファイル システム タイプの設定このセクションでは、petalinux-config コマンドを使用して RootFS タイプを設定する方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 49

ルート ファイル システム タイプの設定手順1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Image Packaging Configuration] → [Root File System Type] を選択します。4. 必要に応じて [INITRAMFS]、[INITRD]、[JFFS2]、[NFS]、[SD card] のいずれかを選択します。注記: SD ブートでは、RootFS を ext4 パーティションにマウントし、その他のブート イメージを FAT32 パーティションにマウントする必要があります。

5. 設定を保存します。

ブート イメージ ストレージの設定このセクションでは、petalinux-config コマンドを使用してフラッシュや SD/MMC などのブート デバイスを設定する方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

ブート イメージ ストレージの設定手順1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Subsystem AUTO Hardware Settings] → [Advanced Bootable Images Storage Settings] を選択します。4. [Advanced Bootable Images Storage Settings] サブメニューには、次のオプションがあります。

• [boot image settings] (BOOT.BIN - FSBL、PMU firmware、ATF、U-Boot)

要件に応じてブート デバイスを選択します。○ フラッシュをブート デバイスに設定するには、[primary flash] を選択します。○ SD カードをブート デバイスに設定するには、[primary sd] を選択します。

• [u-boot env partition settings]

• [kernel image settings] (image.ub - Linux kernel、DTB、および RootFS)

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 50

必要に応じてストレージ デバイスを選択します。○ フラッシュをブート デバイスに設定するには、[primary flash] を選択します。○ SD カードをブート デバイスに設定するには、[primary sd] を選択します。

• [jffs2 RootFS image settings]

• [dtb settings]

トラブルシューティングこのセクションでは、ブート デバイスを設定する際に発生する一般的な問題について説明します。表 13: ブート イメージ ストレージに関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法ERROR: Failed to config linux/kernel! 問題の説明:

このエラー メッセージは、menuconfig で Linux カーネル コンポーネントを設定できなかったことを示します。解決方法:必要なライブラリ/パッケージが正しくインストールされていることを確認します。詳細は、インストール要件 を参照してください。

プライマリ フラッシュ パーティションの設定このセクションでは、PetaLinux の menuconfig でフラッシュ パーティションを設定する方法について説明します。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Subsystem AUTO Hardware Settings] → [Flash Settings] を選択します。4. [Primary Flash] としてフラッシュ デバイスを選択します。5. 各パーティションの名前とサイズを設定します。注記: PetaLinux ツールでは、'boot'、'bootenv'、'kernel' が使用されます。'boot' は 'BOOT.BIN' を格納します。'bootenv'は U-Boot 環境変数を格納します。'kernel' は 'image.ub' を格納します。PetaLinux ツールは、パラレル フラッシュの開始アドレスまたは SPI フラッシュの開始オフセットと上記パーティションのサイズを使用して、次の U-Boot コマンドを生成します。• update_boot: ブート イメージ (MicroBlaze™ プロセッサの場合は U-Boot イメージ、Zynq®-7000 デバイスの場合は BOOT.BIN イメージ) をプライマリ フラッシュに格納するように選択している場合。

• update_kernel および load_kernel: カーネル イメージ (FIT イメージ image.ub) をフラッシュに格納するように選択している場合。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 51

イメージ サイズの管理エンベデッド環境では、フラッシュに格納するカーネル イメージのサイズ、および RAM におけるカーネル イメージの静的サイズを縮小することが重要です。このセクションでは、config 項目がカーネル サイズおよび RAM 使用量に与える影響について説明します。デフォルトのブータブル イメージ フォーマットは FIT イメージです。デフォルトでは、FIT イメージはカーネル イメージ、DTB、および RootFS イメージで構成されます。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

イメージ サイズの管理手順FIT イメージのサイズを縮小するには、次の手順を実行します。1. 次のコマンドを実行して、RootFS 設定メニューを起動します。

$ cd <plnx-proj-root>$ petalinux-config -c rootfs

2. [File System Packages] をクリックします。このサブメニューには、RootFS パッケージに対応するオプションのリストが表示されます。この中に不要なパッケージがある場合、これらを無効にすると RootFS イメージのサイズを縮小できます。

3. 次のコマンドを実行して、カーネル設定メニューを起動します。$ cd <plnx-proj-root>$ petalinux-config -c kernel

4. [General Setup] を選択します。このサブサブメニューには、config の項目を設定するオプションがあります。システムで必須でない項目がある場合、これらを無効にするとカーネル イメージのサイズを縮小できます。たとえば、CONFIG_SHMEM、CONFIG_AIO、CONFIG_SWAP、CONFIG_SYSVIPC です。詳細は、Linux カーネルの資料を参照してください。注記: 一部の config 項目をディスエーブルにすると、ブートできないことがあります。config の項目をディスエーブルにする場合は、これらの項目に関する知識が必要です。余分な config 項目とファイル システム パッケージを含めると、カーネル イメージ サイズと RootFS サイズがそれぞれ大きくなります。カーネルまたは RootFS のサイズが 128 MB を超える場合は、次の手順を実行する必要があります。a. <plnx_proj>/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h で

Bootm の長さを定義します。#define CONFIG_SYS_BOOTM_LEN <value greater then image size>

b. <plnx_proj>/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h でCONFIG_SYS_BOOTMAPSZ の定義を解除します。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 52

INITRD ブートの設定初期 RAM ディスク (INITRD) は、PetaLinux 起動プロセス時にブートローダーで RAM ディスクを読み込めるようにします。Linux カーネルはこれを RootFS としてマウントし、初期化プロセスを開始します。このセクションでは、INITRD ブートの設定手順を説明します。

前提条件このセクションでは、新規 PetaLinux プロジェクトが作成されており (新規 PetaLinux プロジェクトの作成 を参照)、ハードウェア プラットフォームがインポートされている (ハードウェア コンフィギュレーションのインポート を参照) ことを前提としています。

INITRD ブートの設定手順1. RootFS タイプを INITRD に設定します。詳細は、ルート ファイル システム タイプの設定 を参照してください。2. RAMDISK loadaddr を設定します。loadaddr がカーネルまたは DTB アドレスとオーバーラップしておらず、有効

な DDR アドレスであることを確認してください。3. システム イメージをビルドします。詳細は、システム イメージのビルド を参照してください。4. 次のいずれかの方法でシステム イメージをブートします。

a. SD カードを使用したハードウェア上での PetaLinux イメージのブートは、SD カードを使用したハードウェア上での PetaLinux イメージのブート を参照してください。

b. JTAG を使用したハードウェア上での PetaLinux イメージのブートは、JTAG を使用したハードウェア上でのPetaLinux イメージのブート を参照してください。• ホストで TFTP サーバーを設定していることを確認します。• U-Boot プロンプトで次のコマンドを使用して、サーバーの IP アドレスをホストの IP アドレスに設定します。ZynqMP> set serverip <HOST IP ADDRESS>; saveenv

• 次のコマンドを使用して、イメージを読み込みます。ZynqMP> tftpb <dtb load address> system.dtb;tftpb <kernel load address> Image; tftpb <rootfs load address> rootfs.cpio.gz.u-boot.

• 次のコマンドを使用して、イメージをブートします。ZynqMP> booti <kernel load address> <rootfs loadaddress> <device tree load address>

重要: PetaLinux のデフォルト RootFS は INITRAMFS です。INITRD モードでは、RootFS はカーネル イメージに含まれません。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 53

INITRAMFS ブートの設定初期 RAM ファイル システム (INITRAMFS) は 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 です。

INITRAMFS モードでは、RootFS はカーネル イメージに含まれます。• Image → Image (kernel) +rootfs.cpio (Zynq® UltraScale+™ MPSoC)

• zImage → zImage (kernel) +rootfs.cpio (Zynq-7000 デバイス)

• image.elf → simpleImage.mb (kernel) + rootfs.cpio (MicroBlaze™ プロセッサ)

RootFS コンポーネントを選択すると、そのサイズが相対的に増加します。

TFTP ブートの設定このセクションでは、ホストと PetaLinux イメージを TFTP ブートに設定する方法を説明します。TFTP ブートは、JTAG ブートよりもはるかに高速で、カーネル ソースを変更するたびにイメージをフラッシュ メモリに書き込む必要がないので、時間を大幅に短縮できます。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 54

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• 新規 PetaLinux プロジェクトが作成されており (新規 PetaLinux プロジェクトの作成 を参照)、ハードウェア プラットフォームがインポートされている (ハードウェア コンフィギュレーションのインポート を参照)。

• ホスト上で TFTP サーバーが動作している。

PetaLinux の設定とシステム イメージのビルドPetaLinux を TFTP ブート用に設定し、システム イメージをビルドする手順は次のとおりです。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Image Packaging Configuration] を選択します。4. [Copy final images to tftpboot] を選択し、tftpboot ディレクトリを設定します。デフォルトでは、TFTP ディレク

トリ ID は /tftpboot です。これがホストの TFTP サーバー設定と一致していることを確認します。5. 設定を保存し、システム イメージのビルドで説明した手順でシステム イメージをビルドします。

NFS ブートの設定Linux システムの最も重要なコンポーネントの 1 つがルート ファイル システムです。適切に開発されたルート ファイル システムでは、PetaLinux プロジェクトでの作業に便利なツールが提供されます。ルート ファイル システムはサイズが大きくなることが多いため、フラッシュ メモリに格納するのは困難です。このような場合、ルート ファイル システム全体をネットワークからマウントし、ホスト システムとターゲットで同じファイルを共有できるようにすると便利です。ルート ファイル システムは短時間で変更でき、システム実行中にオンザフライでも変更できます。このようなシステムをセットアップする方法の 1 つとして最もよく使われるのが、NFS です。NFS の場合、新規ファイルに対する手動での更新は必要ありません。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• 新規 PetaLinux プロジェクトが作成されており (新規 PetaLinux プロジェクトの作成 を参照)、ハードウェア プラットフォームがインポートされている (ハードウェア コンフィギュレーションのインポート を参照)。

• Linux ファイルおよびディレクトリに権限がある。• ホスト上で NFS サーバーがセットアップされている。この例では、/home/NFSshare としてセットアップされていると想定しています。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 55

PetaLinux の設定とシステム イメージのビルドPetaLinux を NFS ブート用に設定し、システム イメージをビルドする手順は次のとおりです。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Image Packaging Configuration] → [Root File System Type] を選択します。4. RootFS タイプとして [NFS] を選択します。5. [Location of NFS root directory] を選択し、/home/NFSshare に設定します。6. menuconfig を終了し、設定を保存します。自動生成 DTSI 内のブート引数は、自動的にアップデートされます。

<plnx-proj-root>/components/plnx_workspace/device-tree/device-tr ee/plnx_aarch64-system.dts で確認できます。

7. カーネル設定メニューを起動します。$petalinux-config -c kernel

8. [Networking support] → [IP: kernel level configuration] を選択します。• [IP:DHCP support]

• [IP:BOOTP support]

• [IP:RARP support]

9. NFS で [File systems] → [Network file systems] → [Root file systems] を選択します。10. システム イメージをビルドします。

注記: 詳細は、システム イメージのビルド を参照してください。11. bootargs の変更は、ビルド後に反映されます。

NFS によるブートNFS ブートでは、RootFS は NFS 経由でマウントされますが、ブートローダー (FSBL、ビットストリーム、U-Boot) とカーネルは、次に示す方法でダウンロードできます。1. JTAG: ブートローダーとカーネルが JTAG 経由でターゲットにダウンロードされます。詳細は、JTAG を使用した

ハードウェア上での PetaLinux イメージのブート を参照してください。ヒント: JTAG ブートで prebuilt 機能を使用する場合、イメージを prebuilt ディレクトリにパッケージする必要があります。詳細は、ビルド済みイメージのパッケージ を参照してください。1. TFTPBOOT: ブートローダーは JTAG 経由でダウンロードされ、カーネルは TFTPBOOT 経由でターゲットにダウンロードされます。詳細は、TFTP を使用したハードウェア上での PetaLinux イメージのブート を参照してください。

2. SD カード: ブートローダー (BOOT.BIN) とカーネル イメージ (image.ub) は SD カードにコピーされ、SD カードからダウンロードされます。詳細は、SD カードを使用したハードウェア上での PetaLinux イメージのブート を参照してください。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 56

JFFS2 ブートの設定Journalling Flash File System バージョン 2 (JFFS2) は、フラッシュ メモリ デバイスで使用するためのログ構造ファイル システムです。このセクションでは、JFFS2 ブートの設定手順を説明します。

必要な環境このセクションでは、新規 PetaLinux プロジェクトが作成されており (新規 PetaLinux プロジェクトの作成 を参照)、ハードウェア プラットフォームがインポートされている (ハードウェア コンフィギュレーションのインポート を参照) ことを前提としています。

JFFS2 ブートの設定手順1. RootFS タイプを JFFS2 に設定します。詳細は、ルート ファイル システム タイプの設定 を参照してください。2. ブート デバイスおよびブート イメージ ストレージとしてプライマリ フラッシュを設定します。詳細は、ブート

イメージ ストレージの設定 および プライマリ フラッシュ パーティションの設定 を参照してください。3. システム イメージをビルドします。詳細は、システム イメージのビルド を参照してください。4. JTAG を使用したハードウェア上での PetaLinux イメージのブートは、SD カードを使用したハードウェア上での

PetaLinux イメージのブート を参照してください。5. ホストで TFTP サーバーを設定していることを確認します。6. U-Boot プロンプトで次のコマンドを使用して、サーバーの IP アドレスをホストの IP アドレスに設定します。

ZynqMP> set serverip <HOST IP ADDRESS>; saveenv

a. フラッシュ メモリを検出します。ZynqMP> sf probe 0 0 0

b. フラッシュ メモリを消去します。ZynqMP> sf erase 0 0x5000000

c. メモリにイメージを読み込んで、フラッシュに書き込みます。• BOOT.BIN を読み込みます。

ZynqMP> tftpboot 0x80000 BOOT.BIN

• BOOT.BIN を書き込みます。ZynqMP> sf write 0x80000 0 <size of boot.bin>

例: sf write 0x80000 0 0x10EF48

• image.ub を読み込みます。ZynqMP> tftpboot 0x80000 image.ub

• image.ub を書き込みます。ZynqMP>sf write 0x80000 <loading address of kernel> <size of image.ub>

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 57

例: sf write 0x80000 0x580000 0x6cb0e4

• rootfs.jffs2 を読み込みます。ZynqMP> tftpboot 0x80000 rootfs.jffs2

• rootfs.jffs2 を書き込みます。ZynqMP> sf write 0x80000 <loading address of rootfs.jffs2> <size of rootfs.jffs2>

例: sf write 0x80000 0x1980000 0x7d4000

注記: system.dts のカーネルおよび RootFS の読み込みアドレスを確認します。7. ボードで QSPI フラッシュ ブート モードをイネーブルにします。8. ボードをリセットします (ブートはフラッシュから開始)。

SD カード外部ファイル システム ブートの設定前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• 新規 PetaLinux プロジェクトが作成されており (新規 PetaLinux プロジェクトの作成 を参照)、ハードウェア プラットフォームがインポートされている (ハードウェア コンフィギュレーションのインポート を参照)。

• 容量 4 GB 以上の SD メモリ カード。十分なファイル転送速度が得られるように、スピード グレード 6 以上のカードを推奨します。

SD カードを準備PetaLinux SD カード外部ファイル システム ブート用に SD カードを準備するには、次の手順に従います。1. gparted などのパーティション エディターを使用して SD カードを 2 つのパーティションにフォーマットします。

2. 第 1 パーティションは、サイズを 60 MB 以上にし、FAT32 ファイル システムでフォーマットする必要があります。このパーティションの前には 4 MB の未割り当て領域が必要です。第 1 パーティションには、ブーブートローダー、デバイス ツリー、およびカーネル イメージが含まれます。このパーティションは、ラベル名を BOOTとします。

3. 第 2 パーティションは ext4 ファイル システムでフォーマットする必要があり、SD カードの残り領域全体を割り当てることができます。このパーティションは、システム ルート ファイル システムを格納します。このパーティションは、ラベル名を RootFS とします。

最大限の性能を得るには、SD カードのパーティションを 4 MB 境界に揃える必要があります。

PetaLinux の設定とシステム イメージのビルドPetaLinux を SD カード外部ファイル システム ブート用に設定し、システム イメージをビルドする手順は次のとおりです。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 58

1. PetaLinux プロジェクトのルート ディレクトリに移動します。$ cd <plnx-proj-root>

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

3. [Image Packaging Configuration] → [Root filesystem type] を選択します。4. RootFS タイプとして [SD card] を選択します。5. menuconfig を終了し、設定を保存します。

注記: ブート引数は、<plnx-proj-root>/components/plnx_workspace/device-tree/device-tree/syst em-conf.dtsi で自動的にアップデートされます。これらの変更はビルド後に反映されます。

6. PetaLinux イメージをビルドします。詳細は、システム イメージのビルド を参照してください。7. ブート イメージを生成します。詳細は、Zynq UltraScale+ MPSoC 用ブート イメージの生成 を参照してください。

8. 生成された rootfs.tar.gz ファイルは images/linux ディレクトリにあります。解凍するには、tar xvfrootfs.tar.gz を使用します。

イメージ ファイルのコピーこのセクションでは、イメージ ファイルを SD カードの各パーティションにコピーする方法について説明します。2つのパーティションが /media/BOOT および /media/rootfs にマウントされていると想定しています。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.tar.gz ファイルを SD カードの RootFS パーティションにコピーし、ファイル システムを抽出します。$ sudo tar xvf rootfs.tar.gz -C /media/rootfs

この SD カードの外部イメージをブートする方法は、SD カードを使用したハードウェア上での PetaLinux イメージのブートを参照してください。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 59

トラブルシューティング表 14: SD カード外部ファイル システム ブートの設定

問題/エラー メッセージ 説明/解決方法EXT4-fs (mmcblk0p2): mounted filesystem withordered data mode. Opts: (null) Kernel panic -not syncing: No working init found.

問題の説明:このメッセージは、Linux カーネルが EXT4 ファイル システムをマウントできず、working init を検出できなかったことを示します。解決方法:SD カードの rootfs パーティションで RootFS を抽出します。詳細は、イメージ ファイルのコピー を参照してください。

第 7 章: プロジェクトのカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 60

第 8 章

Rootfs のカスタマイズビルド済みライブラリを含める

このセクションでは、コンパイル済みライブラリを PetaLinux ルート ファイル システムに含める方法を説明します。ライブラリを PetaLinux 以外の環境で開発した場合、そのライブラリを PetaLinux のルート ファイル システムに追加するだけの場合があります。この場合、アプリケーション テンプレートを作成して、既存の内容をターゲット ファイル システム システムに追加できるようにします。アプリケーション、ライブラリ、モジュール名にアンダースコア ( _ ) が含まれる場合は、レシピ名にアンダースコア( _ ) が含まれる を参照してください。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

ビルド済みアプリケーションを含める手順ビルド済みアプリケーション (ここに示す例では mylib.so) を PetaLinux ルート ファイル システムに含めるには、次の手順を実行します。1. コンパイル済みコードが、MicroBlaze™ プロセッサや Arm® コアなどの PetaLinux ターゲット アーキテクチャ用にコンパイルされていることを確認します。

2. 次のコマンドを実行してアプリケーションを作成します。$ petalinux-create -t apps --template install --name mylib --enable

3. 作成されたアプリケーション ディレクトリに移動します。$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/mylib/files/

4. 既存の mylib を削除し、ビルド済み mylib.so を mylib/files ディレクトリにコピーします。$ rm mylib$ cp <path-to-prebuilt-mylib.so> ./

5. <plnx-proj-root>/project-spec/meta-user/recipes-apps/mylib/mylib.bb を編集します。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 61

ファイルは次のようになります。# This file is the libs recipe.#

SUMMARY = "Simple libs application"SECTION = "PETALINUX/apps"LICENSE = "MIT"LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://mylib.so \ "

S = "${WORKDIR}"

TARGET_CC_ARCH += "${LDFLAGS}"

do_install() { install -d ${D}${libdir} install -m 0655 ${S}/mylib.so ${D}${libdir}}

FILES_${PN} += "${libdir}"FILES_SOLIBSDEV = ""

6. petalinux-build -c rootfs を実行します。注記: petalinux-build -c rootfs を使用して RootFS をビルドする機能は、今後のリリースで廃止予定です。代わりに petalinux-build を使用してください。

重要: インストール テンプレート アプリケーションによってターゲット ファイル システムにインストールされるバイナリ データが、実際のシステムの基盤ハードウェア インプリメンテーションと互換であることを確認する必要があります。

ビルド済みアプリケーションを含めるザイリンクス SDK など、 PetaLinux 以外の環境でアプリケーションを開発した場合、アプリケーションのバイナリを単に PetaLinux のルート ファイル システムに追加するだけの場合があります。この場合、アプリケーション テンプレートを作成して、既存の内容をターゲット ファイル システム システムに追加できるようにします。このセクションでは、コンパイル済みアプリケーションを PetaLinux ルート ファイル システムに取り込む方法について説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

ビルド済みアプリケーションを含める手順ビルド済みアプリケーション (この例では myapp) を PetaLinux ルート ファイル システムに含めるには、次の手順を実行します。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 62

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 を myapp/files ディレクトリにコピーします。$ rm myapp$ cp <path-to-prebuilt-app> ./

重要: インストール テンプレート アプリケーションによってターゲット ファイル システムにインストールされるバイナリ データが、実際のシステムの基盤ハードウェア インプリメンテーションと互換であることを確認する必要があります。

カスタム ライブラリの作成と追加このセクションでは、カスタム ライブラリを PetaLinux ルート ファイル システムに追加する方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

カスタム ライブラリの追加手順基本的な手順は次のとおりです。1. ワークステーションで PetaLinux プロジェクト内から petalinux-create -t apps を実行してユーザー アプリケーションを作成します。$ cd <plnx-proj-root>$ petalinux-create -t apps --template c --name <user-library-name> --enable

例:

$ petalinux-create -t apps --template c --name libsample --enable

注記: アプリケーション名にアンダースコア ( _ ) が含まれる場合は、レシピ名にアンダースコア ( _ ) が含まれるを参照してください。新しいアプリケーション ソースは、<plnx-proj-root>/project-spec/meta-user/recipes-apps/libsample ディレクトリに作成されます。

2. 作成されたアプリケーション ディレクトリに移動します。$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/libsample

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 63

3. project-spec/meta-user/recipes-apps/libsample/libsample.bb ファイルを編集します。ファイルは次のようになります。

# # This file is the libsample recipe. # SUMMARY = "Simple libsample application" SECTION = "libs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://libsample.c \ file://libsample.h \ file://Makefile \ "

S = "${WORKDIR}" PACKAGE_ARCH = "${MACHINE_ARCH}" PROVIDES = "sample" TARGET_CC_ARCH += "${LDFLAGS}"

do_install() { install -d ${D}${libdir} install -d ${D}${includedir} oe_libinstall -so libsample ${D}${libdir} install -d -m 0655 ${D}${includedir}/SAMPLE install -m 0644 ${S}/*.h ${D}${includedir}/SAMPLE/ }

FILES_${PN} = "${libdir}/*.so.* ${includedir}/*" FILES_${PN}-dev = "${libdir}/*.so"

4. project-spec/meta-user/recipes-apps/libsample/files/libsample.c ファイルを編集します。ファイルは次のようになります。#include <stdio.h> #include "libsample.h"

int main(int argc, char **argv) { printf("Hello World!\n"); return 0; }

void samplelib() { printf("Hello, Welcome to PetaLinux -- samplelib !\n"); }

5. 新しいファイル project-spec/meta-user/recipes-apps/libsample/files/libsample.h を作成し、次の行を追加します。void samplelib();

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 64

6. project-spec/meta-user/recipes-apps/libsample/files/Makefile ファイルを編集します。ファイルは次のようになります。APP = sample LIBSOURCES=*.c OUTS = *.o NAME := sample MAJOR = 1.0 MINOR = 1 VERSION = $(MAJOR).$(MINOR)

all: lib$(NAME).so

lib$(NAME).so.$(VERSION): $(OUTS) $(CC) $(LDFLAGS) $(OUTS) -shared -Wl,-soname,lib$(NAME).so.$(MAJOR) -o lib $(NAME).so.$(VERSION)

lib$(NAME).so: lib$(NAME).so.$(VERSION) rm -f lib$(NAME).so.$(MAJOR) lib$(NAME).so ln -s lib$(NAME).so.$(VERSION) lib$(NAME).so.$(MAJOR) ln -s lib$(NAME).so.$(MAJOR) lib$(NAME).so

%.o: %.c $(CC) $(CFLAGS) -c -fPIC $(LIBSOURCES)

clean: rm -rf *.o *.so *.so.*

7. レシピをビルドします。petalinux-build -c libsample

ユーザー ライブラリのテスト前提条件このセクションでは、コンパイル済み/カスタム ユーザー アプリケーションのビルドとインストールが完了していることを前提としています。

ユーザー ライブラリのテスト手順1. 次のコマンドを実行してアプリケーションを作成します。

petalinux-create -t apps --template c -n sampleapp --enable

2. <plnx-proj-root>/project-spec/meta-user/recipes-apps/sampleapp/sampleapp.bb ファイルを次のように変更します。

## This file is the sampleapp recipe.#

SUMMARY = "Simple sampleapp application"

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 65

SECTION = "PETALINUX/apps"LICENSE = "MIT"LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://sampleapp.c \ "S = "${WORKDIR}"

DEPENDS = " sample"

do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} -o testsamplelib testsamplelib.c -lsample}

do_install() { install -d ${D}${bindir} install -m 0755 sampleapp ${D}${bindir}}FILES_${PN} += "sampleapp"

3. project-spec/meta-user/recipes-apps/sampleapp/files/sampleapp.c ファイルを編集します。

#include <stdio.h>#include <SAMPLE/libsample.h>

int main(int argc, char **argv){ printf("Hello World!\n"); samplelib(); return 0;}

4. 次のコマンドを使用してアプリケーションをビルドします。petalinux-build -c sampleapp5. 新規に作成したシステム イメージをブートします。6. ターゲット システムのコンソールでユーザー アプリケーションを実行します。たとえば、ユーザー アプリケー

ション sampleapp を実行するには、次のように入力します。# sampleapp

7. アプリケーションの実行結果が予測どおりであることを確認します。

カスタム アプリケーションの作成と追加このセクションでは、カスタム アプリケーションを PetaLinux ルート ファイル システムに追加する方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 66

カスタム アプリケーションの追加手順基本的な手順は次のとおりです。1. ワークステーションで PetaLinux プロジェクト内から petalinux-create -t apps を実行してユーザー ア

プリケーションを作成します。$ cd <plnx-proj-root>$ petalinux-create -t apps [--template TYPE] --name <user-application-name> --enable

たとえば 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

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 のテンプレートで生成された次のファイルがあります。表 15: カスタム アプリケーション ファイルの追加

テンプレート 説明<plnx-proj-root>/project- spec/meta-user/recipes-co re/images/petalinux-image -full.bbappend

コンフィギュレーション ファイル テンプレート。このファイルは、カスタム アプリケーションを PetaLinux RootFS メニュー コンフィギュレーションにどのように統合するかを制御します。また、app および dev、dbg パッケージをターゲット ルート ファイル システムに含めるかどうかもこのファイルで決定します。Makefile コンパイル ファイル テンプレート。カスタム アプリケーションをビルドしてルート ファイル システムにインストールするためのターゲットを含む基本的な Makefile です。ソース コード ファイルをプロジェクトに追加した場合、このファイルを編集する必要があります。README ユーザー アプリケーションのビルド方法について説明したファイル。C の場合は myapp.cC++ の場合は myapp.cpp

ユーザーの指定に応じて C または C++ で記述したシンプルなアプリケーション プログラム。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 67

注記: サードパーティ ユーティリティでのデバッグでビルド中間ファイルを使用する場合は、<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。RM_WORK_EXCLUDE += "myapp"

注記: すべてのビルド中間ファイルは、${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.0-r0/ にあります。

ヒント: レシピで makefile クリーンを do_clean にマップすることはお勧めしません。Yocto には独自の do_clean があります。3. myapp.c/myapp.cpp ファイルは編集可能で、アプリケーションの実際のソース コードで置き換えることがで

きます。後でカスタム ユーザー アプリケーションを変更する場合は、このファイルを編集します。注意: 不要になったアプリケーション ディレクトリは削除できます。アプリケーション ディレクトリを削除するのに加え、<plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image-full.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 の使用法は、-h または --help オプションを使用すると確認できます。新しいモジュール レシピは、<plnx-proj-root>/project-spec/meta-user/recipes-modules/mymodule ディレクトリに作成されます。注記: モジュール名にアンダースコア ( _ ) が含まれる場合は、レシピ名にアンダースコア ( _ ) が含まれる を参照してください。

2. 新規に作成されたモジュール ディレクトリに移動します。$ cd <plnx-proj-root>/project-spec/meta-user/recipes-modules/mymodule

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 68

このディレクトリには、PetaLinux のテンプレートで生成された次のファイルがあります。表 16: カスタム モジュール ファイルの追加

テンプレート 説明Makefile コンパイル ファイル テンプレート。カスタム モジュールをビルドしてルート ファイル システムにインストールするためのターゲットを含む基本的な Makefile です。ソース コード ファイルをプロジェクトに追加した場合、このファイルを編集する必要があります。Makefile のカスタマイズ方法は、こちらを参照してください。README ユーザー モジュールのビルド方法について説明したファイル。mymodule.c C で記述したシンプルなカーネル モジュール。<plnx-proj-root>/project- spec/meta-user/recipes-co re/images/petalinux-image -full.bbappened

コンフィギュレーション ファイル テンプレート。application/modules/libs を PetaLinux RooFS メニュー コンフィギュレーション システムにどのように統合するかを制御します。また、app および dev、dbg パッケージをターゲット ルート ファイル システムに含めるかどうかもこのファイルで決定します。

3. mymodule.c ファイルは編集可能で、モジュールの実際のソース コードで置き換えることができます。後でカスタム ユーザー モジュールを変更する場合は、このファイルを編集します。注記: サードパーティ ユーティリティでのデバッグでビルド中間ファイルを使用する場合は、project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。RM_WORK_EXCLUDE += "mymodule"

注記: すべてのビルド中間ファイルは、${TMPDIR}/work/aarch64-xilinx-linux/mymodule/1.0-r0/ にあります。注意: 不要になったモジュール ディレクトリは削除できます。モジュール ディレクトリを削除するのに加え、<plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappendから IMAGE_INSTALL_append= "mymodule" 行を削除する必要があります。petalinux-image-full.bbappend にこの行を残したままディレクトリを削除すると、エラーになります。

ユーザー アプリケーションのビルドこのセクションでは、コンパイル済み/カスタム ユーザー アプリケーションをビルドして PetaLinux ルート ファイルシステムにインストールする方法について説明します。

前提条件このセクションでは、カスタム アプリケーションが PetaLinux ルート ファイル システムに追加されていることを前提としています (カスタム アプリケーションの作成と追加 を参照)。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 69

ユーザー アプリケーションのビルド手順プロジェクト ディレクトリ <plnx-proj-root> で petalinux-build を実行すると、選択したユーザー アプリケーション (myapp) を含むシステム イメージが再ビルドされます。このビルド プロセスの出力ディレクトリは<TMPDIR>/work/aarch64-xilinx-linux/myapp/1.0-r0/ です。$ petalinux-build

myapp を既存のシステム イメージに含めてビルドするには、次を実行します。$ cd <plnx-proj-root>$ petalinux-build -c rootfs$ petalinux-build -x package

注記: petalinux-build -c rootfs を使用して RootFS をビルドする機能は、今後のリリースで廃止予定です。代わりに petalinux-build を使用してください。petalinux-build のその他のオプションについては、--help を使用すると確認できます。ここでは、一部のオプションについて説明します。• 選択したユーザー アプリケーションをクリーンアップ:

$ petalinux-build -c myapp -x do_clean

• 選択したユーザー アプリケーションを再ビルド:

$ petalinux-build -c myapp

この場合、アプリケーションのみがコンパイルされます。コンパイル済み実行ファイルは ${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.0-r0/ ディレクトリに格納されます。サードパーティ ユーティリティでのデバッグでビルド中間ファイルを使用する場合は、<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に「RM_WORK_EXCLUDE += "myapp"」という行を追加します。この行がないと、ビルド後にすべてのビルド中間ファイルが BitBake により削除されます。

• myapp のすべてのタスクをリスト表示:

petalinux-build -c myapp -x listtasks

• 選択したユーザー アプリケーションをインストール:

$ petalinux-build -c myapp -x do_install

注記: petalinux-build -c <app/package/component> -x <task> は、今後のリリースで廃止予定です。petalinux-build コマンドの一部としてコンポーネントの個別のタスクを実行する機能は、廃止予定です。このコマンドを実行すると、アプリケーションがターゲットの RootFS ホスト コピー <TMPDIR>/work/<MACHINE_NAME>-xilinx-linux/petalinux-user-image/1.0-r0/rootfs/ にインストールされます。TMPDIR は、petalinux-config → [Yocto-settings] → [TMPDIR] にあります。プロジェクトがローカル ストレージにある場合、TMPDIR は <plnx-proj-root>/build/tmp/ です。サードパーティ ユーティリティでのデバッグでビルド中間ファイルを使用する場合は、project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。RM_WORK_EXCLUDE += "myapp"

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 70

ユーザー アプリケーションのテスト前提条件このセクションでは、コンパイル済み/カスタム ユーザー アプリケーションのビルドとインストールが完了していることを前提としています。詳細は、ユーザー アプリケーションのビルド を参照してください。

ユーザー アプリケーションのテスト手順1. ターゲットまたは QEMU で新しく作成したシステム イメージをブートします。2. ターゲット システムのログイン コンソールで次のコマンドを実行し、ユーザー アプリケーションが PetaLinuxシステムに存在することを確認します。# ls /usr/bin

makefile でユーザー アプリケーションの位置を変更していない限り、ユーザー アプリケーションは /usr/binディレクトリに置かれます。

3. ターゲット システムのコンソールでユーザー アプリケーションを実行します。たとえばユーザー アプリケーションが myapp の場合、次のように実行します。# myapp

4. アプリケーションの実行結果が予測どおりであることを確認します。ターゲット ファイル システムに新規アプリケーションがない場合、前のセクションで説明した petalinux-build-x package の手順を完了していることを確認してください。これにより、アプリケーション バイナリがルート ファイル システムのステージング エリアにコピーされ、ターゲット システム イメージがこの新しいファイル システムで更新されます。

ユーザー モジュールのビルドこのセクションでは、カスタム ユーザー カーネル モジュールをビルドして PetaLinux ルート ファイル システムにインストールする方法を説明します。

前提条件このセクションでは、カスタム モジュールが PetaLinux ルート ファイル システムに追加されていることを前提としています (カスタム モジュールの作成と追加 を参照)。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 71

ユーザー モジュールのビルド手順プロジェクト ディレクトリ <plnx-proj-root> で petalinux-build を実行すると、選択したユーザー アプリケーション (mymodule) を含むシステム イメージが再ビルドされます。このビルド プロセスの出力ディレクトリは<TMPDIR>/work/<MANCHINE_NAME>-xilinx-linux/mymodule/1.0-r0/ です。$ petalinux-build

mymodule を既存のシステム イメージに含めてビルドするには、次を実行します。$ cd <plnx-proj-root>$ petalinux-build -c rootfs$ petalinux-build -x package

注記: petalinux-build -c rootfs を使用して RootFS をビルドする機能は、今後のリリースで廃止予定です。代わりに petalinux-build を使用してください。petalinux-build のその他のオプションについては、--help を使用すると確認できます。ここでは、一部のオプションについて説明します。• 選択したユーザー モジュールをクリーンアップ :

$ petalinux-build -c mymodule -x do_cleansstate

• 選択したユーザー モジュールを再ビルド:

$ petalinux-build -c mymodule

この場合、モジュールのみがコンパイルされます。コンパイル済み実行ファイルは <TMPDIR>/work/<MANCHINE_NAME>-xilinx-linux/mymodule/1.0-r0/ ディレクトリに格納されます。

• このモジュールのすべてのタスクをリスト表示:

$ petalinux-build -c mymodule -x listtasks

• 選択したユーザー モジュールをインストール :

$ petalinux-build -c mymodule -x do_install

注記: petalinux-build -c <app/package/component> -x <task> は、今後のリリースで廃止予定です。petalinux-build コマンドの一部としてコンポーネントの個別のタスクを実行する機能は、廃止予定です。このコマンドを実行すると、モジュールがターゲットの RootFS ホスト コピー <TMPDIR>/work/<MACHINE_NAME>-xilinx-linux/petalinux-user-image/1.0-r0/rootfs/ にインストールされます。TMPDIR は、petalinux-config → [Yocto-settings] → [TMPDIR] にあります。プロジェクトがローカル ストレージにある場合、TMPDIR は <${PROOT}>/build/tmp/ です。サードパーティ ユーティリティでのデバッグでビルド中間ファイルを使用する場合は、project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。RM_WORK_EXCLUDE += "mymodule"

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 72

PetaLinux の自動ログインこのセクションでは、ログイン情報を入力せずにブートから直接ログインする方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

PetaLinux の自動ログイン手順PetaLinux に自動ログインする手順は次のとおりです。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

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 ルート ファイル システムにインストールする場合は、カスタム アプリケーションの作成と追加 を参照してください。終了することのないブロッキング アプリケーションを自動実行する場合は、このアプリケーションをデーモンとして実行してください。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 73

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 をデーモンとして実行するには、project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init ファイルを編集します。ファイルは次のようになります。#!/bin/shDAEMON=/usr/bin/myappstart (){ echo " Starting myapp" start-stop-daemon -S -o --background -x $DAEMON}stop (){ echo " Stoping myapp" start-stop-daemon -K -x $DAEMON}restart(){ stop start}[ -e $DAEMON ] || exit 1

case "$1" in start) start; ;; stop)

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 74

stop; ;; restart) restart; ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esacexit $?

4. petalinux-build を実行します。

レイヤーの追加PetaLinux プロジェクトにレイヤーを追加できます。THUD バージョンのアップストリーム レイヤーは、ここにあります。次に、PetaLinux プロジェクトに meta-my レイヤーを追加する手順を示します。1. <proj_root>/project-spec/meta-mylayer にレイヤーをコピーするか作成します。2. petalinux-config → [Yocto Settings] → [User Layers] を実行します。3. 次のコマンドを入力します。

${proot}/project-spec/meta-mylayer

4. 保存して終了します。5. <proj_root>/build/conf/bblayers.conf のファイルを確認します。注記: 2019.1 PetaLinux は THUD ベース ラインにあります。レイヤー/レシピは、THUD ブランチのみから選択する必要があります。一部のレイヤー/レシピは、ザイリンクス アーキテクチャと互換性がない可能性があります。レイヤー/レシピは、ユーザーの責任で追加してください。注記: プロジェクト外のレイヤーを追加して、複数のプロジェクト間でレイヤーを共有することもできます。重要: レイヤーの優先順位を変更するには、${proot}/project-spec/meta-mylayer/conf/local.conf ファイルで BBFILE_PRIORITY_meta-mylayer = 6 (0 ~ 10 の値を指定、数値が大きいほど優先順位が高い) を変更します。

RootFS への既存レシピの追加RootFS menuconfig のほとんどは固定されています。これらは、ザイリンクスでサポートされるユーティリティです。プロジェクトに独自のレイヤーを追加したり、PetaLinux の既存のレイヤーから既存のレシピを追加したりすることができます。PetaLinux のレイヤーは、/opt/pkg/petalinux/components/yocto/source/aarch64/ にあります (Zynq® UltraScale+™ MPSoC の場合)。デフォルトでは、iperf3 は RootFS menuconfig には含まれません。次に、RootFS menuconfig に iperf3 を追加する例を示します。1. レシピの場所は /opt/pkg/petalinux/components/yocto/source/aarch64/layers/meta-

openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb です。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 75

2. <plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image-full.bbappend に次の行を追加します。IMAGE_INSTALL_append = " iperf3"

重要: 「_append」を使用する場合、「= “」の後にスペースが必要です。3. petalinux-config -c rootfs を実行します。4. [user packages] → [iperf3] を選択します。イネーブルにして保存し、終了します。5. petalinux-build を実行します。注記: PetaLinux デフォルト RootFS menuconfig 以外に PletaLinux ツールで使用可能なレイヤーのレシピを追加するのは、ユーザーの責任で行ってください。注記: 上記の手順は、ユーザー レイヤーからのレシピにのみ使用可能です。

重要: petalinux-image-full に含まれるレシピはすべて、sstate がロックされています。ロックを解除するには、project-spec/meta-user/conf/petalinuxbsp.conf に SIGGEN_UNLOCKED_RECIPES += "my-recipe"を追加する必要があります。たとえば、mtd-utils パッケージに変更を加える必要がある場合に、project-spec/meta-user/conf/petalinuxbsp.conf に SIGGEN_UNLOCKED_RECIPES += "mtd-utils" なしの .bbappend を作成したとします。この場合、プロジェクトのビルド中に次のような警告メッセージが表示され、ビルドにパッケージへの変更が含まれないことが示されます。"The mtd-utils:do_fetch sig is computed to be 92c59aa3a7c524ea790282e817080d0a, but the sig is locked to 9a10549c7af85144d164d9728e8fe23f in SIGGEN_LOCKEDSIGS_t"

パッケージ グループの追加イメージをカスタマイズする場合、カスタム パッケージ グループを作成し、これを使用してイメージをビルドするという方法が推奨されます。PetaLinux ツールには、いくつかのパッケージ グループ レシピが付属しています。例:

$PETALINUX/components/yocto/source/aarch64/layers/meta-petalinux/recipes-core/packagegroups/packagegroup-petalinux-self-hosted.bb

パッケージ グループの名前は、既存のレシピ名と競合しない一意の名前とする必要があります。次に、例として ALSA という名前のカスタム パッケージ グループを作成する方法を示します。

DESCRIPTION = "PetaLinux ALSA supported Packages"

inherit packagegroup

ALSA_PACKAGES = " \ alsa-lib \ alsa-plugins \ alsa-tools \ alsa-utils \ alsa-utils-scripts \

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 76

pulseaudio \ "RDEPENDS_${PN}_append += " \ ${ALSA_PACKAGES} \ "

これは、<plnx-proj-root>/meta-user/recipes-core/packagegroups/packagegroup-petalinux-alsa.bb に追加できます。このパッケージ グループを RootFS menuconfig に追加するには、<plnx-proj-root>/project-spec/meta-user/recipes-core/petalinux-image.bbappend に IMAGE_INSTALL_append = " packagegroup-petalinux-alsa" を追加します。その後 petalinux-config -c rootfs を実行し、[user packages] → [packagegroup-petalinux-alsa] を選択して保存し、終了します。そして、petalinux-build を実行します。

第 8 章: Rootfs のカスタマイズ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 77

第 9 章

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

このセクションでは、QEMU 環境で GNU デバッガー (GDB) を使用して Linux カーネルをデバッグする方法を説明します。この機能は、Zynq®-7000 デバイスでのみテストされています。

前提条件このセクションでは、PetaLinux システム イメージのビルドが完了していることを前提としています。詳細は、システム イメージのビルド を参照してください。

QEMU による Linux カーネルのデバッグ手順1. 次のコマンドを実行し、現在ビルド済みの Linux を使用して QEMU を起動します。

$ petalinux-boot --qemu --kernel

2. QEMU のコンソールを確認します。QEMU コマンドの詳細を表示します。-gdb tcp:<TCP_PORT> から GDBTCP を取得します。

3. PetaLinux の settings スクリプトが実行済みであることを確認して別のコマンド コンソールを開き、Linux ディレクトリに移動します。$ cd "<plnx-proj-root>/images/linux"

4. vmlinux カーネル イメージに対してコマンド モードで GDB を起動します。$ petalinux-util --gdb vmlinux

GDB プロンプトが表示されます。次に例を示します。GNU gdb (Linaro GDB 2019.1) 7.12.1.20170130-gitCopyright (C) 2019 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/>.

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 78

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 の出力を見て、どのポートが使用されているかを確認してください。たとえば、「INFO: qemu-system-arm ... -gdb tcp::9001 ...」と表示される場合は、ポート 9001 が使用されています。ヒント: カーネル設定メニューでカーネルのデバッグをイネーブルにして (petalinux-config --kernel → [Kernelhacking] → [Kernel debugging])、イメージにカーネル デバッグ シンボルが含まれるようにすることをお勧めします。

トラブルシューティングこのセクションでは、QEMU で Linux カーネルをデバッグする際に発生する一般的な問題について説明します。表 17: QEMU による Linux カーネルのデバッグに関するトラブルシューティング

問題/エラー メッセージ 説明/解決方法(gdb) target remote W.X.Y.Z:9000:9000:Connection refused.

問題の説明:GDB から QEMU ターゲットへの接続に失敗しました。QEMU がポート 9000 を使用していないことが考えられます。解決方法:QEMU コンソールをチェックし、QEMU が動作していることを確認します。Linux ホスト コマンド ライン コンソールを確認します。ここにはすべての QEMU コマンドが表示されるため、QEMU が使用しているポートを確認できます。

TCF エージェントによるアプリケーションのデバッグこのセクションでは、Eclipse TCF (Target Communication Framework) エージェントを使用してユーザー アプリケーションをデバッグする方法について説明します。TCF エージェントを使用してアプリケーションをデバッグする手順は、Zynq® UltraScale+™ MPSoC、および Zynq-7000 デバイスで同じです。このセクションでは、Zynq プラットフォーム ユーザー アプリケーション myapp を例に、基本的なデバッグ手順について説明します。

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

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 79

• XSDK ツールの使用経験があること。詳細は、SDK ヘルプを参照してください。• PetaLinux の作業環境が正しく設定されている。詳細は、PetaLinux 作業環境のセットアップ を参照してください。• ユーザー アプリケーションを作成済みで、選択したユーザー アプリケーションを含むシステム イメージをビルド済みであること。詳細は、ユーザー アプリケーションのビルド を参照してください。

デバッグ用のビルド システムの準備1. プロジェクト ディレクトリに移動します。

$ cd <plnx-proj-root>

2. コマンド コンソールで petalinux-config -c rootfs を実行します。$ petalinux-config -c rootfs

3. [Linux/RootFS Configuration] メニューを下方へスクロールし、[File System Packages] を選択します。admin ---> audio ---> base ---> baseutils ---> benchmark ---> bootloader ---> console ---> devel ---> fonts ---> kernel ---> libs ---> misc ---> multimedia ---> net ---> network ---> optional ---> power management --->utils ---> x11 --->

4. [misc] サブメニューを選択します。admin ---> audio ---> base ---> baseutils ---> benchmark ---> bootloader ---> console ---> devel ---> fonts ---> kernel ---> libs ---> misc ---> multimedia ---> net ---> network ---> optional ---> power management --->utils ---> x11 --->

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 80

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

8. [console/network] → サブメニュー → [openssh] を選択します。[openssh-sftp-server] が選択されていることを確認します。

9. メニューを終了します。10. 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/system.dsa を見つけます。これらのファイルは、<plnx-proj-

root>/project-spec/hw-description にあります。8. [Run] → [Debug Configurations] をクリックし、[Debug Launch Configuration] ウィンドウを開きます。9. 新しい [Xilinx C/C++ application (System Debugger)] を作成し、設定を起動します。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 81

10. [Debug Type] を [Linux Application Debug] に設定します。11. [New] をクリックして接続の詳細を入力します。

12. ターゲット接続に名前を付け、ホスト (ターゲットの IP アドレス) を指定します。13. tcf-agent のポートを設定して [OK] をクリックします。重要: QEMU でデバッグを実行する場合、非ルート (デフォルト) またはルート モードでテストする際の IP およびポート リダイレクトの詳細は、付録 D: QEMU 仮想ネットワーキング モードを参照してください。たとえば非ルート モードでテストする場合、以降の手順でターゲット IP として localhost を使用する必要があります。14. [Application] タブをクリックします。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 82

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] をクリックすると設定が適用され、デバッグ セッションが開始します。[Debug] パースペクティブに切り替えるかどうかを尋ねるメッセージが表示された場合は、承諾します。

18. これで、標準 XSDK デバッグ フローを開始できます。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 83

ヒント: コードの解析とデバッグには、次のショートカット キーを使用できます。• Step Into (F5)

• Step Over (F6)

• Step Return (F7)

• Resume (F8)

GDB での Zynq UltraScale+ MPSoC アプリケーションのデバッグ

PetaLinux は、GDB による Zynq® UltraScale+™ MPSoC ユーザー アプリケーションのデバッグをサポートしています。このセクションでは、基本的なデバッグ手順について説明します。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• PetaLinux の作業環境が正しく設定されている。詳細は、PetaLinux 作業環境のセットアップ を参照してください。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 84

• ユーザー アプリケーションを作成済みで、選択したユーザー アプリケーションを含むシステム イメージをビルド済みであること。詳細は、ユーザー アプリケーションのビルド を参照してください。

デバッグ用のビルド システムの準備1. プロジェクト ディレクトリに移動します。

$ cd <plnx-proj-root>

2. <plnx-proj-root>/project-spec/meta-user/recipes-core/images/peta linux-image.bbappend に次の行を追加します。IMAGE_INSTALL_append = " myapp-dev"IMAGE_INSTALL_append = " myapp-dbg"

3. コマンド コンソールで petalinux-config -c rootfs を実行します。$ petalinux-config -c rootfs

4. [user packages Configuration] メニューを下方へスクロールし、[Debugging] を選択します。Filesystem Packages ---> PetaLinux Package Groups --->apps ---> user packages --->PetaLinux RootFS Settings --->

5. [user packages] を選択し、次を選択します。[X] myapp-dbg

[ ] myapp-dev

6. [myapp-dbg] を選択します。myapp サブメニューを終了します。7. [user packages] サブメニューを終了し、[Filesystem Packages] → [misc] → [gdb] を選択します。8. [gdb] を選択し、[gdbserver] がイネーブルになっていることを確認します。

[ ] gdb

[ ] gdb-dev

[X] gdbserver

[ ] gdb-dbg

9. メニューを終了し、<Yes> を選択して設定を保存します。10. ターゲット システム イメージを再ビルドします。<plnx-proj-root>/project-spec/meta-user/conf/

petalinuxbsp.conf に次の行を追加します。RM_WORK_EXCLUDE += "myapp"

詳細は、システム イメージのビルド を参照してください。

デバッグ セッションの実行手順1. 上で作成した新しいイメージでボード (または QEMU) をブートします。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 85

2. ターゲット システム コンソールでユーザー アプリケーションに対して gdbserver を実行します (ポート 1534をリッスンするように設定)。root@plnx_aarch64:~# gdbserver host:1534 /usr/bin/myappProcess /bin/myapp created; pid = 73Listening on port 1534

1534 は gdbserver ポートです。未使用ポートであればほかのポートでもかまいません。3. ワークステーションで、コンパイル済みユーザー アプリケーションのディレクトリに移動します。

$ cd <<TMPDIR>/work/aarch64-xilinx-linux/myapp1/1.0-r0/image/usr/bin/myapp

4. GDB クライアントを実行します。$ petalinux-util --gdb myapp

5. GDB コンソールが開始します。...GNU gdb (crosstool-NG 1.18.0) 7.6.0.20130721-cvs...(gdb)

6. GDB コンソールで次のコマンドを実行し、ターゲット マシンに接続します。• ターゲット システムの IP アドレスを使用する (例:192.168.0.10)。IP アドレスがわからない場合は、ターゲット コンソールで ifconfig を実行して確認します。

• ポート 1534 を使用する。前の手順で GDB サーバーのポート番号を変更している場合は、その値を使用します。

重要: QEMU でデバッグを実行する場合、非ルート (デフォルト) またはルート モードでテストする際の IP およびポート リダイレクトの詳細は、「QEMU 仮想ネットワーキング モード」を参照してください。たとえば非ルート モードでテストする場合、以降の手順でターゲット IP として localhost を使用する必要があります。

(gdb) target remote 192.168.0.10:1534

GDB コンソールがリモート ターゲットに接続します。ターゲット コンソールの GDB サーバーにより、ホスト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");

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 86

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 の詳細詳細は、www.gnu.org を参照してください。GDB の一般的な使用法は、GDB プロジェクトの資料を参照してください。

トラブルシューティングこのセクションでは、GDB でアプリケーションをデバッグする際に発生する一般的な問題について説明します。表 18: GDB トラブルシューティングによる Zynq UltraScale+ MPSoC アプリケーションのデバッグ

問題/エラー メッセージ 説明/解決方法GDB error message: <IP Address>:<port>:Connection refused. GDB cannot connect to thetarget board using <IP>: <port>

問題の説明:GDB クライアントが GDB サーバーに接続できなかったことを示すエラー メッセージです。解決方法:ターゲット システムで gdbserver が動作していることを確認します。既に別の GDB クライアントが GDB サーバーに接続していないか確認します。これは、ターゲット コンソールの表示を見て確認します。「Remote Debugging from host <IP>」と表示される場合は、既に別の GDB クライアントがサーバーに接続しています。IP アドレスとポートが正しく設定されていることを確認します。

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 87

個々の PetaLinux コンポーネントのデバッグPMU ファームウェアhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841724/PMU+Firmware#PMUFirmware-DebuggingPMUFWusingSDK

FSBLhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842019/FSBL#FSBL-WhatarevariouslevelsofdebugprintsinFSBL

U-Boothttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842557/Debug+U-boot

Linux

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/123011167/Linux+Debug+infrastructure+KProbe+UProbe+LTTng

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/123011146/Linux+Debug+infrastructure+Kernel+debugging+using+KGDB

第 9 章: デバッグ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 88

第 10 章

アドバンス設定menuconfig の使用法

選択が解除されているメニュー/サブメニューを選択するには、下方向キー (↓) または上方向キー (↑) を押してメニューをスクロールし、目的のメニューまでカーソルを移動して y キーを押します。メニュー/サブメニューの選択を解除するには、同じ手順に従って最後に n キーを押します。

PetaLinux の menuconfig システムこのリリースのサブメニューから使用可能な Linux システム コンポーネントは、次のとおりです。• FSBL (第 1 段階ブートローダー)

• PMU ファームウェア (Zynq® UltraScale+™ MPSoC のみ)

• U-Boot

• カーネル• ATF (Zynq UltraScale+ MPSoC のみ)

ATF、U-Boot、およびカーネルには、次の 3 つのオプションがあります。1. デフォルトデフォルト コンポーネントは PetaLinux ツールで配布されます。

2. 外部ソースコンポーネントを指定のロケーションにダウンロードしている場合、このコンフィギュレーション オプションを使用して、デフォルトの代わりにユーザー コンポーネントを供給できます。注記: 外部ソース フォルダーは、プロジェクトおよびユーザーに固有のものである必要がありますが、その内容は変更できます。外部ソースが Git リポジトリである場合は、そのチェックアウト ステータスがこのプロジェクトをビルドするのに適したものである必要があります。

3. リモートカスタム Git リポジトリ上にあったコンポーネントをビルドする場合は、このコンフィギュレーション オプションを使用する必要があります。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 89

設定システム レベルの menuconfig で自動設定 (autoconfig) をイネーブルにするためにコンポーネントを選択した場合、petalinux-config を実行したときに設定ファイルが自動的にアップデートされます。表 19: コンポーネントとその設定ファイル

メニュー項目 autoconfig を有効にした場合に影響を受けるファイルデバイス ツリー <plnx-proj-root>/components/plnx_workspace/device-tree/device-tree/に次のファイルが含まれます。

• skeleton.dtsi (Zynq-7000 デバイスのみ)

• zynq-7000.dtsi (Zynq UltraScale+ MPSoC のみ)

• zynqmp-clk-ccf.dtsi (Zynq UltraScale+ MPSoC のみ)

• pcw.dtsi (Zynq-7000 デバイス および Zynq UltraScale+ MPSoC)

• pl.dtsi

• system-conf.dtsi

• system-top.dts

• <board>.dtsi

カーネル <plnx-proj-root>/project-spec/meta-plnx-generated/recipes-kernel/linux/configs/ に次のファイルが含まれます。plnx_kernel.cfg

bsp.cfg

U-Boot <plnx-proj-root>/project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs/ に次のファイルが含まれます。config.cfg

config.mk (MicroBlaze™ のみ)platform-auto.h

[Subsystem AUTO Hardware Settings] メニュー[Subsystem AUTO Hardware Settings] メニューでは、Linux システムのハードウェア プラットフォームとのやり取りをカスタマイズします。

[System Processor]

[System Processor] メニューでは、システムを実行する CPU プロセッサを指定します。

[Memory Settings]

[Memory Settings] メニューでは、次を指定します。• プライマリ システム メモリとするメモリ IP を選択します。• システム メモリのベース アドレスを設定します。• システム メモリのサイズを設定します。• U-Boot テキスト ベース アドレスのメモリ ハイ アドレスに対するオフセットを設定します。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 90

このメニューの設定は、デバイス ツリーおよび U-Boot の自動設定 (autoconfig) ファイルに影響します。プライマリ メモリとして manual を選択した場合は、システムのメモリ設定が適切であることをユーザーが確認する必要があります。

[Serial Settings]

[Serial Settings] サブメニューは、システムのプライマリ STDIN/STDOUT インターフェイスとして使用するシリアルデバイスを選択します。プライマリ シリアルとして manual を選択した場合は、システムのシリアル インターフェイス設定が適切であることをユーザーが確認する必要があります。

[Ethernet Settings]

[Ethernet Settings] サブメニューでは、次を指定します。• システムのプライマリ イーサネットを選択します。• MAC アドレスをランダムにします。• プライマリ イーサネットの MAC アドレスを設定します。MAC アドレスは、EEPROM にプログラムされます。ここでは空にします。EEPROM をプログラムおよび設定するコマンドについては、U-Boot を参照してください。• プライマリ イーサネットで DHCP またはスタティック IP アドレスのどちらを使用するかを設定します。プライマリ イーサネットとして manual を選択した場合は、システムのイーサネット設定が適切であることをユーザーが確認する必要があります。

[Flash Settings]

[Flash Settings] サブメニューでは、次を指定します。• システムのプライマリ フラッシュ メモリを選択します。• フラッシュ パーティションの表を設定します。プライマリ フラッシュとして manual を選択した場合は、システムのフラッシュ設定が適切であることをユーザーが確認する必要があります。

[SD/SDIO Settings]

[SD/SDIO Settings] サブメニューは、Zynq-7000 デバイスおよび Zynq UltraScale+ MPSoC のみで設定できます。システムのプライマリ SD カード インターフェイスとして使用する SD コントローラーを選択します。プライマリ フラッシュとして manual を選択した場合は、システムのフラッシュ設定が適切であることをユーザーが確認する必要があります。

[Timer Settings]

[Timer Settings] サブメニューは、MicroBlaze プロセッサおよび Zynq UltraScale+ MPSoC で設定できます。プライマリ タイマーを選択します。重要: MicroBlaze システムにはプライマリ タイマーが必要です。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 91

[Reset GPIO Settings]

[Reset IP Settings] サブメニューは、MicroBlaze プロセッサのみで設定できます。システム リセット GPIO を選択します。ヒント: MicroBlaze システムでは、GPIO がリセット入力として使用されます。リセット GPIO を選択した場合、Linuxからシステムを再ブートできます。

[RTC Settings]

Linux カーネルのプライマリ タイマーとして使用する RTC インスタンスを選択します。RTC をリストに含めないようにする場合は、[manual] を選択して RTC に適切なカーネル ドライバーをイネーブルにします。

[Advanced Bootable Images Storage Settings]

[Advanced Bootable Images Storage Settings] サブメニューでは、ブータブル イメージの場所を指定します。このサブメニューの設定は、PetaLinux で U-Boot を設定する際に使用されます。このサブメニューをディスエーブルにした場合、PetaLinux でブータブル イメージの場所の定義に [Flash Settings] サブメニューで指定されたパーティションの表が使用されます。表 20: フラッシュ パーティションの表ブータブル イメージ/U-Boot 環境のパーティション デフォルト パーティション名 説明ブート イメージ boot BOOT.BIN (Zynq-7000 デバイス および Zynq UltraScale+ MPSoC)

MicroBlaze プロセッサの場合は再配置可能 U-Boot BIN ファイル (u-boot-s.bin)

U-Boot 環境のパーティション bootenv U-Boot 環境の変数パーティション。[primary sd] を選択した場合、U-Boot 環境は第 1 パーティションに保存されます。[primary flash] を選択した場合は、U-Boot 環境はフラッシュ パーティション名オプションで指定されたパーティションに保存されます。

カーネル イメージ kernel カーネル イメージ (image.ub) (FIT フォーマット)

DTB イメージ dtb [Advanced bootable images storage Settings] をディスエーブルにしていて、フラッシュ パーティションの表設定に DTB パーティションが見つかった場合は、PetaLinux で U-Boot がパーティションの表からDTB を読み込むように指定されます。そうでない場合は、DTB はカーネル イメージに含まれると想定されます。

[Kernel Bootargs]

[Kernel Bootargs] サブメニューでは、PetaLinux で DTS にカーネル ブート コマンド ライン設定が自動的に生成されるようにするか、ユーザー定義カーネル ブート コマンド ライン設定を PetaLinux に渡すかを選択します。デフォルトの bootargs は次のとおりです。Microblaze-full -- console=ttyS0,115200 earlyprintkMicroblaze-lite -- console=ttyUL0,115200 earlyprintkzynq -- console=ttyPS0,115200 earlyprintkzynqmp -- earlycon clk_ignore_unused root=/dev/ram rw

注記: Zynq UltraScale+ MPSoC でコンソールにカーネル パニックを表示する場合は、earlyconconsole=<device>,<baud rate> clk_ignore_unused root=/dev/ram rw を追加します。たとえば、system_user.dtsi に earlycon console=/dev/ttyPS0,115200 clk_ignore_unused root=/dev/ramrw を追加します。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 92

詳細は、カーネルの資料を参照してください。

[ATF Compilation Configuration]

[ATF Compilation Configuration] メニューは、Zynq UltraScale+ MPSoC プラットフォームの場合にのみ表示されます。このサブメニューでは、次を設定できます。• 追加 ATF コンパイル設定• bl31 バイナリのベース アドレスを変更します。• bl31 バイナリのサイズを変更します。[Power Management Kernel Configuration]

[Power Management Kernel] オプションでは、PetaLinux に消費電力に関連するカーネル設定を追加します。このオプションを選択すると、plnx-kernel.cfg を使用して消費電力管理に関連するカーネル設定をイネーブル/ディスエーブルにできるようになります。これらの設定は、後でカーネル defconfig (xilinx_zynqmp_defconfig) に適用されます。このオプションを選択しない場合、カーネル設定は PetaLinux で明示的にイネーブル/ディスエーブルにできません。Linux defconfig からのデフォルト設定は、PetaLinux プロジェクトに保持されます。

[u-boot Configuration]

[u-boot Configuration] サブメニューでは、PetaLinux で U-Boot 自動設定 (autoconfig) を使用するか、U-Boot ボードコンフィギュレーション ターゲットを使用するかを選択します。

[Image Packaging Configuration]

[Image Packaging Configuration] サブメニューでは、次のイメージ パッケージ設定を指定します。• ルート ファイル システム タイプ• 生成されたブータブル カーネル イメージのファイル名• Linux カーネル イメージのハッシュ関数• DTB パディング サイズ• ブータブル イメージをホスト TFTP サーバー ディレクトリにコピーするかどうかを指定します。ヒント: petalinux-build ツールでは、常にカーネル イメージとして FIT イメージが生成されます。

[Firmware Version Configuration]

[Firmware Version Configuration] サブメニューでは、次のファームウェア バージョン情報を設定します。表 21: ファームウェア バージョンのオプション

ファームウェア バージョンのオプション ターゲット Target RootFS のファイルホスト名 /etc/hostname

製品名 /etc/petalinux/product

ファームウェア バージョン /etc/petalinux/version

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 93

ヒント: ホスト名はアップデートされません。詳細は、ザイリンクス アンサー 69122 を参照してください。

Zynq-7000 デバイスおよび Zynq UltraScale+ MPSoC の FPGA マネージャーの設定および使用FPGA マネージャーは、プログラマブル ロジック (PL) をコンフィギュレーションするための Linux 用のインターフェイスです。ビットストリームおよび dtbos を RootFS の /lib/firmware ディレクトリに配置します。Zynq UltraScale+ MPSoC 用の PetaLinux プロジェクトを作成した後、次の手順を実行して FPGA マネージャー サポートをビルドします。1. cd <proj root directory> に移動します。2. petalinux-config コマンドを実行し、[FPGA Manager] → [[*] Fpga Manager] を選択します。注記: このオプションを選択すると、PetaLinux FPGA マネージャーは次を実行します。1. pl.dtsi ノードを dt オーバーレイ (dtbo) として生成します。2. .bin フォーマットのビットストリームおよび dtbos を RootFS の /lib/firmware/base ディレクトリに配置します。

3. petalinux-package コマンドで生成された BOOT.BIN には、ビットストリームは含まれません。3. [FPGA Manager] → [() Specify hw directory path] で追加の hw ファイルを指定します。注記: この手順はオプションです。これは、同じ PS と対応する dtbos の複数のビットストリームを RootFS に配置する必要がある場合にのみ必要です。これにより、.bin フォーマットのビットストリームと dtbos が RootFSの /lib/firmware/<DSA/HDF name> ディレクトリに配置されます。PS デザインが DSA/HDF に対して hwディレクトリ パスと <PROOT>/project-spec/hw-description/system<.hdf/.dsa> で同じであることを確認してください。

4. petalinux-build を実行します。次に、フル ビットストリームをターゲットに読み込む例を示します。root@xilinx-zcu102-2019_1:~# fpgautil -o /lib/firmware/base/pl.dtbo -b /lib/firmware/base/design_1_wrapper.bit.bin

Time taken to load DTBO is 239.000000 milli seconds. DTBO loaded through ZynqMP FPGA manager successfully.

BOOT.BIN の生成については、petalinux-package コマンドを参照してください。次に、sysfs を介してフル ビットストリームを読み込む例を示します (ビットストリームの読み込みのみ)。root@xilinx-zcu102-2019_1:~# fpgautil -b /mnt/design_1_wrapper.bit.bin

Time taken to load BIN is 213.000000 milli seconds. BIN FILE loaded through zynqMP FPGA manager successfully.

その他のオプションは、root@xilinx-zcu102-2019_1:~# fpgautil -h のヘルプを参照してください。詳細は、http://www.wiki.xilinx.com/Solution+ZynqMP+PL+Programming を参照してください。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 94

Zynq-7000 デバイスおよび Zynq UltraScale+ MPSoC のデバイスツリー オーバーレイの設定このオプションは、PL をベース DTB から分離し、pl.dtsi をビルドして pl.dtbo を生成する際に選択します。PetaLinux プロジェクトを作成した後、次の手順を実行してオーバーレイ サポートを追加します。1. cd <proj root directory> を実行してプロジェクトのルート ディレクトリに移動します。2. petalinux-config コマンドを実行し、[DTG Settings] → [Device tree overlay] を選択します。3. petalinux-build を実行します。4. images/linux ディレクトリに pl.dtbo が生成されます。これらのオプションはすべて、FPGA マネージャーにより上書きされます。これは、FPGA マネージャーが選択されていない場合にのみ影響します。

ビットストリームを .bit から .bin に変換1. 次の内容の .bif ファイルを生成します。

all: { [destination_device = pl] <bitstream in .bit> ( Ex: systemdesign_1_wrapper.bit ) }

2. 次のコマンドを実行します。 bootgen -image bitstream.bif -arch zynqmp -process_bitstream bin

注記: .bit/.bin のファイル名は、pl.dtsi で指定されたのと同じ名前 (design_1_wrapper.bit.bin) である必要があります。

PL デバイス ツリーの削除設定PL IP に依存しない場合に PL ノードをスキップするには、この設定オプションを選択します。また、DTG の PL IP のいずれかでエラーが発生した場合に、このフラグをイネーブルにして、DTG で PL ノードが生成されないようにすることができます。1. cd <proj root directory> を実行してプロジェクトのルート ディレクトリに移動します。2. petalinux-config コマンドで、デバイス ツリーから [DTG Settings] → [Remove PL] を選択します。3. petalinux-build を実行します。注記: これらのオプションはすべて、FPGA マネージャーにより上書きされます。これは、FPGA マネージャーが選択されていない場合にのみ影響します。注記: デバイス ツリー オーバーレイを選択し、デバイス ツリーから PL を削除している場合は、ベース DTB にオーバーレイ サポートのエントリが含まれますが、PL DTBO は生成されません。

Yocto 設定Yocto 設定を使用すると、プロジェクトで使用可能なさまざまな Yocto 機能を設定できます。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 95

表 22: Yocto 設定パラメーター 説明

TMPDIR Location このディレクトリは、BitBake でログおよびビルド中間ファイルを保存するために使用されます。YOCTO_MACHINE_NAME プロジェクトの Yocto マシン名を指定しますParallel thread execution BitBake インスタンスのスレッド数を制限します。Add pre-mirror url コンポーネントのソース コードをダウンロードするミラー サイトを追加します。Local sstate feeds settings 指定のロケーションのローカル sstate キャッシュを使用します。Enable Debug Tweaks パスワードなしでターゲットにログインします。Enable Network sstate feeds NW sstate フィードをイネーブルにします。User layers プロジェクトにユーザー レイヤーを追加します。BB_NO_NETWORK ビルド マシンでインターネット アクセスをディスエーブルにします。

out-of-tree ビルドの設定PetaLinux には、最新版のカーネル/U-Boot ソース コードを Git リポジトリから自動的にダウンロードする機能があります。このセクションでは、この機能のしくみおよびシステム レベルの menuconfig での使用法について説明します。このセクションで説明するように、out-of-tree ビルドには 2 つの方法があります。

前提条件このセクションでは、次に示す条件が満たされていることを前提としています。• PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了している。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。

• インターネット経由で git にアクセスできる。

ツリー外ビルドの設定手順UBOOT/Kernel ツリー外ビルドを設定するには、次の手順を使用します。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

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

3. [Linux Components Selection] サブメニューを選択します。• カーネルに対して、[linux-kernel ()] → [remote] を選択します。

( ) linux-xlnx

(X) remote

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 96

( ) ext-local-src

• U-Boot に対して、[u-boot ()] → [remote] を選択します。( ) u-boot-xlnx

(X) remote

( ) ext-local-src

4. カーネルに対して、[Remote linux-kernel settings] → [Remote linux-kernel git URL] を選択し、Linux カーネルの gitURL を入力します。たとえば、https://github.com/Xilinx/linux-xlnx を使用するには、次のように入力します。git://github.com/Xilinx/linux-xlnx.git;protocol=https

U-Boot に対して、[Remote U-Boot settings] → [Remote u-boot git URL] を選択し、U-Boot の git URL を入力します。次に例を示します。git://github.com/Xilinx/u-boot-xlnx.git;protocol=https

リモート git リンクを指定したら、[git TAG/Commit ID] に次のいずれかの値を指定する必要があります。そうしないとエラー メッセージが表示されます。次に示すいずれかの値を設定しないと、エラー メッセージが表示されます。• 現在チェックアウトされているブランチのリポジトリの HEAD をポイントする場合:

s${AUTOREV}

• タグをポイントする場合:

tag/mytag

• コミット ID をポイントする場合:

commit id sha key

git タグ/コミット ID を選択すると、次の図に示すように、文字列値を入力するよう指示するメッセージが表示されます。上記の設定値のいずれかを入力します。

5. メニューを終了し、設定を保存します。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 97

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

( ) remote

(X) ext-local-src

• U-Boot に対して、[u-boot ()] → [ext-local-src] を選択します。( ) u-boot-xlnx

( ) remote

(X) ext-local-src

4. 外部ソース パスを追加します。• カーネルに対して、[External linux-kernel local source settings] を選択します。パスを入力します。

${TOPDIR}/../components/ext_sources/<MY-KERNEL>

• U-Boot に対して、[External u-boot local source settings] を選択します。パスを入力します。${TOPDIR}/../components/ext_sources/<MY-U-BOOT>

${TOPDIR} は、<plnx-proj-root>/build ディレクトリをポイントする Yocto ディレクトリです。ソースの絶対パスを指定することもできます。ソースはプロジェクト外部にも配置できます。

注記: プロジェクトで外部ソースを使用して BSP を作成する場合、ユーザーの責任でソースをプロジェクトにコピーしてパッケージする必要があります。詳細は、BSP のパッケージ を参照してください。

重要: 外部ソースを components/ ディレクトリに配置する必要はありません。プロジェクト外のどの場所でも指定できます。ただし、BSP をパッケージする際は、外部ソースを components/ にコピーして、相対パスを設定する必要があります。注記: 外部ソースが Git リポジトリである場合は、そのチェックアウト ステータスがこのプロジェクトをビルドするのに適したものである必要があります。

トラブルシューティングこのセクションでは、ツリー外 (out-of-tree) ビルドを設定する際に発生する一般的な問題について説明します。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 98

表 23: ツリー外ビルドの設定に関するトラブルシューティング問題/エラー メッセージ

fatal: The remote end hung up unexpectedlyERROR: 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/

システム イメージを再ビルドします。詳細は、システム イメージのビルド を参照してください。

プロジェクト コンポーネントの設定Linux カーネル オプションのイネーブルやフラッシュ パーティションの設定など、アドバンス PetaLinux プロジェクト設定を指定するには、petalinux-config ツールを適切な -c COMPONENT オプションを指定して実行する必要があります。重要: ザイリンクス テクニカル サポートでは、Linux カーネル設定のザイリンクス ドライバーまたは最適化のみがサポートされます。Linux 用のザイリンクス ドライバーの詳細は、https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers を参照してください。次の例に、petalinux-config を使用して PetaLinux プロジェクト設定を確認または変更する方法を示します。1. PetaLinux プロジェクトのルート ディレクトリに移動します。

$ cd <plnx-proj-root>

2. 最上位のシステム設定メニューを起動し、要件に応じて設定します。$ petalinux-config

3. Linux カーネル設定メニューを起動し、要件に応じて設定します。$ petalinux-config -c kernel

4. ルート ファイル システム設定メニューを起動し、要件に応じて設定します。$ petalinux-config -c rootfs

ヒント: petalinux-config menuconfig で U-Boot ターゲットをカスタム ボードの要件に応じて設定します。$petalinux-config Set MACHINE_NAME を要件に応じて設定します。設定可能な値は、ac701-full、ac701-lite、kc705-full、kc705-lite、kcu105、zc1254-reva、zc1275-reva、zc1275-revb、zc1751-dc1、zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-reva、zcu100-revb、zcu100-revc、zcu102-rev1.0、zcu102-reva、zcu102-revb、zcu104-reva、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、sp701-rev1.0、vcu118-rev2.0、zcu1285-reva です。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 99

注記: ボードおよびユーザー特定の dtsi エントリが project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi に追加されていることを確認してください。テンプレート フローを使用している場合は、zcu102 および zcu106 ボードに対して、<plnx-proj-root>/project-spec/meta-user/recipes-bsp/fsbl/fsbl_%.bba ppend に FSBL を初期化するための次の行を追加します。YAML_COMPILER_FLAGS_append = " -DXPS_BOARD_ZCU102" #for zcu102YAML_COMPILER_FLAGS_append = " -DXPS_BOARD_ZCU106" # for zcu106

PetaLinux での現在のシステム自動化では、これらのマクロは追加されません。

デバイス ツリーの設定このセクションでは、デバイス ツリーの設定時に編集しても安全なファイル、およびデバイス ツリーに新しい情報を追加する方法を説明します。

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポート を参照してください。デフォルトの DTS をカスタマイズするには、DTS 構文に関する知識が必要です。

デバイス ツリーの設定ユーザーが変更可能な PetaLinux デバイス ツリーの設定は、<plnx-projroot>/project-spec/meta-user/recipes-bsp/device-tree/files/ にある次の設定ファイルに関連付けられています。• multi-arch/

• system-user.dtsi

• xen.dtsi

• zynqmp-qemu-arm.dts

• openamp.dtsi

• xen-qemu.dtsi

生成されたファイルは <plnx-projroot>/components/plnx_workspace/device-tree/device-tree/ ディレクトリにあります。注意: 上記の DTSI ファイルはすべてツールによって生成されます。これらのファイルを編集することは推奨しません。デバイス ツリー ファイルの詳細は、付録 B: PetaLinux プロジェクトの構造 を参照してください。注意: 上記の *.dtsi ファイルは自動生成されるので、編集しないでください。

イーサネット PHY などの情報を追加する場合は、system-user.dtsi ファイルに追加してください。この場合、情報 (ここではイーサネット PHY の情報) はボード レベルおよびボード特定であるため、デバイス ツリーにはご使用のプラットフォーム特定の情報を含める必要があります。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 100

注記: このように手動での操作が必要なのは、一部の情報はボード レベルであり、何を含めるべきかをツールが判断できないためです。各デバイスのバインディングの詳細は、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 アドレスおよび互換文字列が、実際のシステムの命名規則に対応している必要があります。次に、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. file://system-user-1.dtsi を project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbappend に追加します。ファイルは次のようになります。FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://system-user.dtsi"SRC_URI += "file://system-user-1.dtsi"

<plnx-proj-root>/components/plnx_workspace/device-tree/device-tree/ に含まれるファイルを変更することはお勧めしません。ノードまたは値の追加、変更、および削除には、system-user DTSI を使用することをお勧めします。system-userDTSI は最後に追加されるので、その値が最優先されます。system-user DTSI を定義することにより、ほかの DTSI の値を上書きできます。

U-Boot の設定このセクションでは、U-Boot の設定時に編集しても安全なファイル、および U-Boot CONFIG_ オプション/設定について説明します。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 101

前提条件このセクションでは、PetaLinux ツールのソフトウェア プラットフォームを使用して実際のハードウェア プラットフォームにカスタマイズした Linux システムをビルドできる準備が完了していることを前提としています。詳細は、ハードウェア コンフィギュレーションのインポートを参照してください。

U-Boot を設定する通常、U-Boot (Universal Bootloader) の設定には、C プリプロセッサ設定を使用します。• コンフィギュレーション _OPTIONS_:

コンフィギュレーション オプションを選択します。名前は「CONFIG_」で始まります。• コンフィギュレーション _SETTINGS_:

これらはハードウェアなどに依存します。名前は「CONFIG_SYS_」で始まります。ヒント: CONFIG_ オプション/設定の資料の説明および U-Boot の README は、Denx U-Boot ガイドを参照してください。PetaLinux U-Boot の設定は、<plnxproj_root>/project-spec/ meta-plnx-generated/recipes-bsp/u-boot/configs にある config.cfg および 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.cfgおよび 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

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 102

• 次のコマンドを実行して BOOT.BIN を生成します。$ petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot

• ハードウェアまたは QEMU でイメージをブートし、U-Boot ステージで停止します。• U-Boot コンソールで次のように mtest コマンドを実行します。

ZynqMP 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’

U-Boot の詳細は、https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842223/U-boot を参照してください。

第 10 章: アドバンス設定

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 103

第 11 章

Yocto の機能SDK の生成 (ターゲット Sysroot の生成)

OpenEmbedded ビルド システムは、BitBake を使用してザイリンクス ソフトウェア開発キット (SDK) のインストーラー スクリプト標準 SDK を生成します。SDK のビルドおよびインストールは、PetaLinux で実行します。インストールされた SDK は、アプリケーション開発の sysroot として使用できます。これは、ザイリンクス SDK のことではありません。

SDK のビルドSDK をビルドして <proj_root>/images/linux/sdk.sh にコピーするには、次のコマンドを使用します。petalinux-build --sdk

同等の BitBake コマンドは次のとおりです。bitbake petalinux-user-image -c do_populate_sdk

SDK のインストール生成された SDK をディレクトリにインストール/抽出する必要があります。SDK を指定のディレクトリに抽出するには、次のコマンドを使用します。デフォルトの SDK は <proj_proot>/images/linux/sdk.sh、デフォルト ディレクトリは <proj_proot>/images/linux/sdk/ です。petalinux-package --sysroot -s|--sdk <custom sdk path> -d|--dir <custom directory path>

例1. クロス コンパイル qt ツールチェーンの追加

次の手順に従って qt ツールチェーンで SDK をビルドします。a. <proj-root>/project-spec/meta-user/recipes-core/images/petalinux-user-

image.bbappend ファイルを作成します。b. 作成したファイルに inherit populate_sdk_qt5 を追加します。c. petalinux-config -c rootfs を実行して [packagegroup-petalinux-qt] を選択します。d. petalinux-build -s を実行します。

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 104

e. petalinux-package --sysroot を実行します。検証するには、次の手順に従います。a. 新しいターミナルを開きます。b. <plnx-proj>/image/linux/sdk を実行してプロジェクトのルート ディレクトリに移動します。c. source environment-setup-aarch64-xilinx-linux を実行します。d. which qmake を実行します。これにより、qmake が SDK からのものであることが確認されます。

2. OpenCV アプリケーションをビルドします。a. PetaLinux プロジェクトを作成します。b. RootFS menuconfig に packagegroup-petalinux-opencv を追加します。c. SDK をビルドします。

petalinux-build --sdk

このコマンドにより SDK がビルドされ、<proj_root>/images/linux/sdk.sh で運用されます。d. SDK をインストールします。

petalinux-package --sysroot

このコマンドにより、SDK が <proj_root>/images/linux/sdk にインストールされます。e. OpenCV アプリケーションのビルドには、images/linux/sdk ディレクトリを sysroot として使用します。

プロジェクトでの BitBake へのアクセスBitBake は bash シェルでのみ使用できます。

Zynq UltraScale+ MPSoC で BitBake ユーティリティにアクセスする手順1. プロジェクトを作成後、petalinux-config、petalinux-config --oldconfig、または petalinux-

config --silentconfig を少なくとも 1 回実行して、必要な環境を設定します。2. PetaLinux ツールのスクリプトを実行します。

source /opt/pkg/petalinux/settings.sh

3. source コマンドで Yocto e-SDK を読み込みます。source /opt/pkg/petalinux/components/yocto/source/aarch64/env ironment-setup -aarch64-xilinx-linux

4. 環境セットアップ スクリプトを実行します。source /opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/ oe-init-build-env

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 105

この手順の後、build ディレクトリにリダイレクトされます。BitBake を実行するには、build ディレクトリにとどまる必要があります。

5. XSCT をエクスポートします。export PATH=/opt/pkg/petalinux/tools/hsm/bin:$PATH

6. レシピへの PETALINUX 変数を解析します。export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE PETALINUX"

7. BitBake が利用できるかどうかを調べるため、次のコマンドを実行します。bitbake strace

生成されたイメージは deploy ディレクトリに格納されます。ほかのコマンドを利用するには、生成されたイメージを <plnx-proj-root>/images/linux ディレクトリにコピーする必要があります。

sstate-cache の共有Yocto e-SDK には最小限の共有 sstate-cache が含まれます。ザイリンクスでは、完全な petalinux-image 共有sstate-cache を http://petalinux.xilinx.com/sswreleases/rel-v2019.1/ でホスティングしています。petalinux-build の実行中、BitBake で最小セットの PetaLinux ツール内で sstate-cache が検索されます。この場所に sstate-cache が見つからない場合、http://petalinux.xilinx.com/sswreleases/rel-v2019.1/ で sstate-cache が検索されます。それでも sstate-cache が見つからない場合、sstate-cache が新たにビルドされます。RootFS コンポーネント用に作成した .bbappend ファイルに、SIGGEN_UNLOCKED_RECIPES +="<component>" in <plnx proj root>/project-spec/meta_user/conf/petalinuxbsp.conf を追加する必要があります。

ミラーのダウンロードザイリンクスでは、各リリースのすべてのソース ダウンロード tar ファイルを https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/embedded-design-tools.html で提供しています。デフォルトでは、petalinux-config の Yocto SOURCE ミラーにこの URL が追加されます。コンポーネントを 1 から再ビルドする場合は、BitBake によりまずプリミラー (ツールのダウンロード) でソースが検索され、次に petalinux.xilinx.com ダウンロード ミラー URL で検索されます。その後、レシピのコンポーネントのソースをダウンロードするため、レシピの SRC_URI が検索されます。<proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に SOURCE_MIRROR_URL +=file:///home/you/your-download-dir/ を追加すると、さらにミラーを追加できます。

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 106

マシン サポートYocto マシンは、イメージをビルドするターゲット デバイスを指定します。変数は同じ名前のマシン設定ファイルを指定し、この設定ファイルを使用してマシン特定の設定を指定します。現在のところ、PetaLinux ではユーザー マシン設定ファイルがサポートされています。独自のマシン設定ファイルは、<proj_root>/project-spec/meta-user/conf/machine/ に追加するか、追加のレイヤーに追加して petalinux-config を使用してプロジェクトに追加できます。PetaLinux プロジェクトでユーザー マシン設定ファイルの名前を指定するには、次の手順に従います。1. PetaLinux プロジェクトに移動します。2. petalinux-config → [Yocto settings] → [MACHINE NAME] を選択します。3. マシン設定ファイルの名前を指定します。これで、BSP が meta-xilinx マシンでアップデートされます。表 24: テンプレートのマシン名の変更

テンプレート マシンzynq plnx-zynq7

zynqmp plnx-zynqmp

microblaze plnx-microblazeel

表 25: BSP のマシン名の変更BSP マシン

zc702 zc702 - zynq7

zc706 zc706 - zynq7

zcu102 (すべてのバリアント ) zcu102-zynqmp

zcu106 zcu106-zynqmp

zcu104 zcu104-zynqmp

kc705 plnx-microblazeel

ac701 plnx-microblazeel

kcu105 plnx-microblazeel

zcu111 zcu111-zynqmp

zcu1285 zcu1285-reva

zc1275 zc1275-revb

sp701 sp701 - rev1.0

vcu118 vcu118 - rev2.0

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 107

SoC バリアント サポートザイリンクスでは、各 SoC 製品用に複数のデバイスを提供しています。Zynq® UltraScale+™ MPSoC には、3 つのデバイス バリアントがあります。詳細は、このページを参照してください。Zynq-7000 デバイスには、2 つのバリアントがあります。詳細は、このページを参照してください。SOC_VARIANT は、${SOC_FAMILY}${SOC_VARIANT} のオーバーライドを拡張します。さらに、SoC 上のコンポーネント (mali、vcu など) でオーバーライドを拡張します。これにより、SoC によってコンポーネントのオーバーライドを再利用できます。この機能は主に、ハードウェア デザインに対応する IP (VCU または USP) がある場合にハードウェア アクセラレーションに自動的に切り替えるために使用されます。ザイリンクスでは、次に示すように、SoC の複数のバリアントを提供しています。1. Zynq-7000 デバイスは、Zynq7000zs および Zynq7000z で提供されています。使用可能な SOC_VARIANT は次のとおりです。• "7zs": Zynq-7000 シングル A9 コア

"7z": Zynq-7000 デュアル A9 コア• Zynq-7000 デバイスのデフォルト SOC_VARIANT は "7z" です。7000zs デバイスでは、

petalinuxbsp.conf に SOC_VARIANT = "7zs" を追加します。Zynq-7000 デバイスには、追加のオーバーライドはありません。EG および EV デバイスには、mali440 オーバーライドが追加されています。VCU オーバーライドは、ハードウェア デザインの VCU IP に基づいて追加されます。

2. Zynq UltraScale+ MPSoC には、3 つのデバイス バリアントがあります。使用可能な SOC_VARIANT は次のとおりです。• "cg": Zynq UltraScale+ MPSoC CG デバイス• "eg": Zynq UltraScale+ MPSoC EG デバイス• "ev": Zynq UltraScale+ MPSoC EV デバイス• "dr": RFSoC デバイスデフォルト値は "eg" です。PetaLinux では、HDF に存在する IP に基づいて "ev" および "dr" が自動的に割り当てられます。

注記: CG デバイスに対しては、petalinuxbsp.conf で SOC_VARIANT = "cg" を設定する必要があります。

画像機能OpenEmbedded ビルド システムで生成された画像の内容は、通常イメージ レシピで設定する IMAGE_FEATURES および EXTRA_IMAGE_FEATURES 変数で制御できます。これらの変数を使用すると、アプリケーションの問題を調べたりアプリケーションをプロファイリングしたりするのに必要なデバッグ情報を含む、開発ユーティリティやパッケージなどの複数の定義済みパッケージを追加できます。デフォルト機能を削除するには、petalinuxbsp.conf に次のコードを追加します。IMAGE_FEATURES_remove = "ssh-server-dropbear"

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 108

新機能を追加するには、petalinuxbsp.conf に次のコマンドを追加します。IMAGE_FEATURES_append = " myfeature"

第 11 章: Yocto の機能

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 109

第 12 章

テクニカル FAQ

トラブルシューティングこのセクションでは、PetaLinux コマンドの実行時に発生する一般的なエラーとその解決手順について説明します。パッチおよび Yocto に関する情報は、https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips を参照してください。

TMPDIR が NFS にある次のようなエラーが表示されます。“ERROR: OE-core's config sanity checker detected a potential misconfiguration”. Either fix the cause of this error or disable the checker at your own risk (see sanity.conf). For the list of potential problems or advisories.

TMPDIR /home/user/xilinx-kc705-axi-full-2019.1/build/tmp は NFS に配置することはできません。TMPDIR が NFS 上にある場合、BitBake により解析時にエラーが表示されます。petalinux-config を実行して、任意のローカル ストレージに変更する必要があります。これには、[Yocto-settings] → [TMPDIR] を選択します。複数の異なる PetaLinux プロジェクトで同じ TMPDIR を設定しないでください。ビルド エラーが発生します。

レシピ名にアンダースコア ( _ ) が含まれるアプリケーション名が plnx_myapp の場合、BitBake でエラーが発生します。アンダースコア ( _ ) の後はバージョン番号にする必要があります。たとえば myapp_1 は有効なアプリケーション/モジュール名です。この問題を解決するには、作成したアプリケーションで sstateclean を実行した後、削除します。また、<plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image.bbappend の行を削除します。IMAGE_INSTALL_append = " plnx_myapp"

第 12 章: テクニカル FAQ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 110

破損したターミナルからの回復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 を入力し、Ctrl + J キーを 2 回押します。

Python 言語設定言語設定がないと、エラー メッセージが表示されます。• petalinux-config の実行中に、エラー メッセージ「Could not find the /log/cooker/

plnx_microblaze in the /tmp directory」が表示されます。• LANG=en_US.UTF-8 など、UTF-8 をサポートするロケール設定を使用してください。Python では、読み込み後にファイル システム ロケールを変更できないので、Python を起動したときに UTF-8 が必要です。そうでないと機能しません。ERROR: Failed to build project

• このエラーを解決するには、次のように設定します。export LC_ALL=en_US.UTF-8export LANG=en_US.UTF-8export LANGUAGE=en_US.UTF-8

カーネルおよび U-Boot で menuconfig がハングするpetalinux-config -c を実行した場合、カーネルおよび U-Boot BitBake で新しいターミナルを開くことができない場合があります。次のようなエラー メッセージが表示されます。1. ERROR: Unable to spawn new terminal

2. ERROR: Continuing the execution without opening the terminal

この問題を解決するには、次を実行します。1. ssh -X <hostname> を使用します。2. <plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf のに OE_TERMINAL 行のコメントをはずすします。任意のターミナルを設定できます。詳細は、第 11 章: Yocto の機能 を参照してください。デフォルトの OE_TERMINAL ではエラーになるため、変更する必要があります。<plnx-proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf で OE_TERMINAL のコメントをはずし、xterm または screen に設定します。そのためには、対応するユーティリティを PC にインストールしておく必要があります。

第 12 章: テクニカル FAQ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 111

外部ソースの設定Yocto フローでは、cfg または scc ファイルは外部ソースに適用されません (アップストリーム動作)。PetaLinux で外部ソースに設定を適用する必要があります。PetaLinux では cfg ファイルしか処理できないので、常に scc ファイルではなく cfg ファイルを使用することをお勧めします。Xen および openamp は DISTRO 機能により処理されます。DISTRO 機能を追加しても、対応するカーネルでの設定は、scc ファイルで処理されるのでイネーブルになりません。これを解決するには、<plnx-project-root>/project-spec/meta-user/recipes-kernel/linux/linux-xlnx_%.bbappend を編集します。次の行を追加します。SRC_URI += "file://xilinx-kmeta/bsp/xilinx/xen.cfg"

外部ソースを使用する場合は、すべての scc ファイルは対応する cfg ファイルに置き換える必要があります。

「do_image_cpio: Function Failed」というエラー メッセージが表示されるCPIO フォーマットでは、2 GB を超えるサイズはサポートされていません。そのため、サイズが大きい場合はINITRAMFS は使用できません。イメージ サイズが 2 GB を超える場合は、次の手順に従ってください。1. RootFS タイプを SD カードに変更します。

$ petalinux-config

[Image Packaging Configuration] → [Root filesystem type] → [SD card] を選択します。2. <proj-root>/project-spec/meta-user/conf/petalinuxbsp.conf に次の行を追加します。

IMAGE_FSTYPES_remove = "cpio cpio.gz cpio.bz2 cpio.xz cpio.lzma cpio.lz4 cpio.gz.u-boot"IMAGE_FSTYPES_DEBUGFS_remove = "cpio cpio.gz cpio.bz2 cpio.xz cpio.lzma cpio.lz4 cpio.gz.u-boot"

3. プロジェクトをビルドします。$ petalinux-build

注記: 以前とは異なり、現在の PetaLinux ではグローバル DTS ファイルは生成されません。次のコマンドを実行して、グローバル DSA を生成します。dtc -I dtb -O dts -o system.dts system.dtb

注意: ビルド操作の際、プロジェクト ディレクトリへのシンボリック リンク パスは、cd コマンドを使用してディレクトリに移動することも含め、使用しないでください。

パッケージの管理PetaLinux では、Zynq-7000 デバイス用に DNF パッケージ管理システムがサポートされています。パッケージ管理システムを設定および使用するには、次の手順に従います。1. petalinux-config -c rootfs を実行して DNF をイネーブルにします。[Image Features] の下の [package

management] および [file system packages/base] の下の [dnf] をイネーブルにします。

第 12 章: テクニカル FAQ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 112

2. プロジェクトをビルドします。#petalinux-build

3. SD または JTAG ブート モードで Linux をブートします。4. /etc/yum.repos.d/ ディレクトリに oe-remote-repo-sswreleases-rel-v2019.1-feeds-ultra96-

zynqmp.repo を作成し、ザイリンクス プラットフォーム上のターゲットの .repo ファイルをセットアップします。[oe-remote-repo-sswreleases-rel-v2019.1-feeds-ultra96-zynqmp]name=OE Remote Repo: sswreleases rel-v2019.1 feeds ultra96-zynqmpbaseurl=http://petalinux.xilinx.com/sswreleases/rel-v2019.1/feeds/ultra96-zynqmpgpgcheck=0

5. 使用可能なすべてのパッケージをリストします。#dnf repoquery

6. 特定のパッケージをインストールします。#dnf install <pkg name>

例: #dnf install packagegroup-petalinux-matchbox

matchbox パッケージがインストールされたら、ターゲットを再ブートすると、デスクトップ環境が得られます。

Zynq-7000 デバイスおよび Zynq UltraScale+ MPSoC のINITRAMFS イメージが大きい場合に Linux ブートがハングするpetalinux-boot コマンドを実行すると、次のような警告メッセージが表示されます。"Linux image size is large (${imgsize}). It can cause boot issues. Please refer to Chapter 12: Technical FAQs. Storage based RootFilesystem is recommended for large images."

INITRAMFS イメージのサイズが大きい場合は、ストレージ ベースのブートを使用してください。

第 12 章: テクニカル FAQ

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 113

付録 A

移行このセクションでは、以前のバージョンから現在のバージョンへの移行の詳細を説明します。

ツール ディレクトリ構造ツール ディレクトリ構造は次のとおりです。• <path-to-installed-petalinux>/tools/linux-i386/petalinux は、<path-to-installed-

petalinux>/tools/xsct/petalinux に移動されています。• PetaLinux ツールでツールチェーン <path-to-installed-petalinux>/tools/linux-i386 は使用されないので、削除されています。

• <path-to-installed-petalinux>/tools/xsct/SDK/2018.3 は、<path-to-installed-petalinux>/tools/xsct に移動されています。

DT オーバーレイ サポート• <plnx-proj>/images/linux/ に含まれるビットストリーム ファイル名は system.bit ですが、DT オーバーレイ サポートをイネーブルにした場合は、デザイン名になります。

• DT オーバーレイ サポートは、Zynq®-7000 デバイスに追加されています。

ビルドの最適化petalinux-build は、Zynq®-7000 デバイスおよび MicroBlaze™ プロセッサの uImage を生成します。Zynq®

UltraScale+™ MPSoC の uImage のサポートは削除されています。

付録 A: 移行

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 114

付録 B

PetaLinux プロジェクトの構造このセクションでは、PetaLinux プロジェクトのファイルおよびディレクトリ構造について簡単に説明します。PetaLinux プロジェクトは、一度に 1 つの Linux システム開発をサポートします。ビルドした Linux システムは次のコンポーネントで構成されます。• デバイス ツリー• FSBL (第 1 段階ブートローダー) (オプション)

• U-Boot

• Linux カーネル• Rootfs は次のコンポーネントで構成されます。

○ ビルド済みパッケージ○ Linux ユーザー アプリケーション (オプション)

○ ユーザー モジュール (オプション)

PetaLinux プロジェクト ディレクトリにはプロジェクトのコンフィギュレーション ファイル、Linux サブシステム、およびサブシステムのコンポーネントが含まれます。petalinux-build コマンドを実行すると、これら設定ファイルを使用してプロジェクトがビルドされます。設定は petalinux-config を実行して変更できます。次に、PetaLinux プロジェクトの例を示します。project-spec meta-plnx-generated hw-description configs meta-userpre-built linux implementation images hardware xilinx-zcu104-2019.1components plnx_workspace device-treeconfig.projectREADMEREADME.hw

表 26: PetaLinux プロジェクトの説明PetaLinux プロジェクトのファイル/ディレクトリ 説明

/.petalinux/ ツールの使用状況と WebTalk データを格納するディレクトリ。/config.project/ プロジェクト コンフィギュレーション ファイル。/project-spec プロジェクト仕様。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 115

表 26: PetaLinux プロジェクトの説明 (続き)

PetaLinux プロジェクトのファイル/ディレクトリ 説明/project-spec/hw-description Vivado® デザイン ツールからインポートしたハードウェア記述。/project-spec/configs 最上位 config および RootFS config の設定ファイル/project-spec/configs/config ユーザー設定を格納するために使用される設定ファイル/project-spec/configs/rootfs_config ルート ファイル システムに使用される設定ファイル。/components/plnx_workspace/device-tree/device-tree/

デバイス ツリーのビルドに使用するデバイス ツリー ファイル。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

これらのファイルはツールによって再生成されるため、ユーザーによる編集は推奨しません。/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.bbappend に DTSI ファイルを追加します。

/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 ファイルです。config.mk は、MicroBlaze の board/xilinx/microblaze-generic/ にコピーされます。

/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h

platform-auto.h and platform-top.h は include/configs/ ディレクトリにコピーされます。

/components/ エンベデッド ソフトウェアのワークスペース用、および BSP をパッケージする際に外部ソースを格納するためのディレクトリ。このディレクトリに手動でコンポーネントをコピーすることもできます。外部コンポーネントは、<plnx-proj-root>/components/ext_source/<COMPONENT> ディレクトリに配置する必要があります。

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 116

表 26: PetaLinux プロジェクトの説明 (続き)

PetaLinux プロジェクトのファイル/ディレクトリ 説明/project-spec/meta-user/conf/petalinuxbsp.conf この設定ファイルには、ビルド環境のすべてのローカル ユーザー設定が含まれます。Yocto メタ レイヤーの local.conf に置き換わるものです。注記:1. すべてのパスは <plnx-projroot> に対する相対パスです。

プロジェクトをビルドすると、3 つのディレクトリが自動的に生成されます。• <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/ -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 または petalinux-build を実行するとアップデートされます。<plnx-proj-root>/images/ も自動的に生成されます。このディレクトリのファイルは、petalinux-build を実行すると更新されます。次の表に、Zynq UltraScale+ MPSoC の場合の例を示します。

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 117

デフォルトでは、空き容量を確保するためにビルド中間生成物は petalinux-build 実行後に削除されます。build/conf/local.conf から「INHERIT += "rm_work"」を削除するとビルド中間生成物を残すことができますが、プロジェクトの容量が大きくなります。表 27: PetaLinux プロジェクトのビルド ディレクトリ

PetaLinux プロジェクトのビルド ディレクトリ 説明<plnx-proj-root>/build/build.log ビルドのログ ファイル<plnx-proj-root>/build/misc/config/ Linux サブシステムのビルド関連ファイルを格納するディレクトリ<plnx-proj-root>/build/misc/rootfs_config/ RootFS のビルド関連ファイルを格納するディレクトリ${TMPDIR}/work/plnx_aarch64-xilinx-linux/petalinux-ser-image/1.0-r0/rootfs

ターゲットの RootFS コピー。これはステージング ディレクトリです。${TMPDIR}/plnx_aarch64 ユーザー アプリケーション/ライブラリのビルドに必要なライブラリとヘッダー ファイルを格納するステージ ディレクトリ${TMPDIR}/work/plnx_aarch64-xilinx-linux/linux-xlnx

カーネルのビルド関連ファイルを格納するディレクトリ

${TMPDIR}/work/plnx_aarch64-xilinx-linux/u-boot-xlnx

U-Boot のビルド関連ファイルを格納するディレクトリ

<plnx-proj-root>/components/plnx_workspace/device-tree/device-tree"

デバイス ツリーのビルド関連ファイルを格納するディレクトリ

表 28: PetaLinux プロジェクトのイメージ ディレクトリPetaLinux プロジェクトのイメージ ディレクトリ 説明

<plnx-proj-root>/images/linux/ Linux サブシステムのブータブル イメージを格納するディレクトリ

プロジェクトのレイヤーPetaLinux プロジェクトには、<proj-plnx-root>/project-spec に次の 2 つのレイヤーがあります。

1. meta-plnx-generatedこのレイヤーには、すべてのコンポーネントのすべての bbappend とコンフィギュレーション フラグメント (cfg) が格納されます。このレイヤーのファイルはすべて、HDF/DSA およびユーザー設定に基づいてツールによって生成されます。このレイヤーのファイルは petalinux-config および petalinux-build コマンドを実行すると再生成されるので、手動ではアップデートしないでください。

2. meta-userこのレイヤーは、すべてのユーザー固有の変更のプレースホルダーです。独自の bbappend およびコンフィギュレーション ファイルをこのレイヤーに追加できます。

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 118

付録 C

ブート コンポーネントの生成第 1 段階ブートローダー (FSBL)

デフォルトでは、最上位システム設定で第 1 段階ブートローダー (FSBL) が生成されるようになっています。この手順はオプションです。注記: PetaLinux で FSBL/FS-BOOT をビルドしないように設定した場合、これらを手動でビルドする必要があります。そうしないと、システムは正しくブートしません。menuconfig で FSBL を無効にしている場合、プロジェクトで FSBL をビルドするように設定するには次の手順を実行します。1. 最上位のシステム設定メニューを起動して設定を変更します。

$ petalinux-config

a. [Linux Components Selection] サブメニューを選択します。b. [First Stage Bootloader] オプションを選択します。

[*] First Stage Bootloader

c. メニューを終了し、変更を保存します。2. petalinux-build を実行し、FSBL をビルドします。プロジェクトのビルド時に FSBL をビルドする場合:

$ petalinux-build

FSBL のみをビルドする場合:

$ petalinux-build -c fsbl (for MicroBlaze, it is fs-boot)

ブートローダー ELF ファイルは、プロジェクト ルート ディレクトリの images/linux 内に、Zynq® UltraScale+™MPSoCデバイスでは zynqmp_fsbl.elf、Zynq®-7000 デバイスでは zynq_fsbl.elf、MicroBlaze™ プロセッサでは fs-boot.elf としてインストールされます。FSBL の詳細は、https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842019/FSBL を参照してください。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 119

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 ファイルは、Zynq UltraScale+ MPSoC に対して、プロジェクト ルート ディレクトリの images/linuxに bl31.elf としてインストールされます。

ATF の詳細は、https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842107/Arm+Trusted+Firmware を参照してください。

PMU ファームウェアこれは Zynq® UltraScale+™ MPSoC 用です。この手順はオプションです。デフォルトでは、最上位システムで PMUファームウェアが生成されるように設定されています。注意: PetaLinux で PMU ファームウェアをビルドしないように設定した場合、これらを手動でビルドする必要があります。そうしないと、システムは正しくブートしません。プロジェクトで PMU ファームウェアをビルドするように設定するには、次の手順を実行します。1. 最上位のシステム設定メニューを起動して設定を変更します。

$ petalinux-config

a. [Linux Components Selection] を選択します。b. [PMU Firmware] オプションを選択します。

[*] PMU Firmware

c. メニューを終了し、変更を保存します。

付録 C: ブート コンポーネントの生成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 120

2. プロジェクトのビルド時に PMU ファームウェアをビルドする場合は、次のコマンドを使用します。$ petalinux-build

PMU ファームウェアのみをビルドする場合は、次のコマンドを使用します。$ petalinux-build -c pmufw

PMU ファームウェアの ELF ファイルは、Zynq UltraScale+ MPSoC に対して、プロジェクト ルート ディレクトリの images/linux に pmufw.elf としてインストールされます。PMU ファームウェアの詳細は、http://www.wiki.xilinx.com/PMU+Firmware を参照してください。

FS-Boot (MicroBlaze プラットフォームのみ)PetaLinux の FS-Boot は、MicroBlaze™ プラットフォーム専用の FSBL (第 1 段階ブートローダー) デモです。フラッシュからメモリにイメージを読み込み、メモリにジャンプする方法を示します。FS-Boot を使用する場合、8 KB 以上のブロック RAM が必要です。FS-Boot では、標準 SPI モードおよびクワッド SPI モードのパラレル フラッシュと SPI フラッシュのみがサポートされます。FS-Boot でフラッシュのどこからイメージを取得するかを判断できるように、CONFIG_FS_BOOT_START マクロを定義する必要があります。これは、PetaLinux ツールで実行します。PetaLinux ツールでは、menuconfig のプライマリフラッシュ パーティション テーブル設定の boot パーティション設定に基づいてこのマクロが自動的に設定されます。パラレル フラッシュの場合、これは boot パーティションの開始アドレスです。SPI フラッシュの場合は、bootパーティションの開始オフセットです。フラッシュ内のイメージには、BIN ファイルの直前にラッパー ヘッダーが必要です。FS-Boot はターゲット メモリ位置をラッパーから取得します。ラッパーには次の情報を含める必要があります。表 29: ラッパー情報

オフセット 説明 値0×0 FS-Boot ブータブル イメージのマジック コード 0×b8b40008

0×4 BIN イメージ サイズ ユーザー定義0×100 FS-Boot ブータブル イメージのターゲット メモリアドレス ユーザー定義。menuconfig の [Memory

Settings] で設定した U-Boot テキスト ベース アドレス オフセットから PetaLinux ツールが自動的に計算します。0×10c BIN ファイルの開始位置 なし

FS-Boot はラッパー ヘッダーのその他のフィールドは無視します。U-Boot BIN ファイルをラップアラウンドするためのラッパー ヘッダーが PetaLinux ツールによって生成されます。

付録 C: ブート コンポーネントの生成

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 121

付録 D

QEMU 仮想ネットワーキング モードQEMU には非ルート (デフォルト) とルート (sudo または root のパーミッションが必要) の 2 つの実行モードがあります。これら 2 つのモードの違いは、仮想ネットワーク設定にあります。非ルート モードでは、QEMU はホストからゲストへのネットワーク トラフィックを制限する内部仮想ネットワークをセットアップします。これは NAT ルーターと同じように動作します。tcp ポートをリダイレクトしないとこのネットワークにはアクセスできません。ルート モードでは、QEMU は仮想イーサネット アダプターにサブネットを作成し、ホスト システムの DHCP サーバーを利用して動作します。以降のセクションでは、非ルート モードでローカル ホストからのアクセスを可能にするリダイレクトの方法を含め、これらモードの使用方法について説明します。

非ルート モードでのポート リダイレクトデフォルトの非ルート モードで QEMU を実行し、ホスト マシンから内部 (仮想) ネットワークにアクセスする場合(GDB または TCF エージェントでデバッグする場合など)、エミュレートしたシステム ポートを QEMU 仮想マシンからローカル マシンにリダイレクトする必要があります。このリダイレクトを実行するには、petalinux-boot --qemu コマンドの --qemu-args オプションを使用します。次の表に、リダイレクトに関する引数の例をいくつか示します。これは QEMU の標準機能です。詳細は、QEMU の資料を参照してください。表 30: リダイレクトに関する引数

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 セッションを開始します。

次に、ポートをリダイレクトするコマンド ラインの例を示します。$ petalinux-boot --qemu --kernel --qemu-args "-redir tcp:1534::1534"

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 122

この文書では 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

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 123

付録 E

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

PetaLinux ツールに付属している QEMU エミュレーターでは、次のザイリンクス IP モデルがサポートされています。• Zynq® UltraScale+™ MPSoC Arm® Cortex™-A53 MPCore

• Zynq UltraScale+ MPSoC Cortex-R5F

• Zynq-7000 Arm Cortex-A9 CPU

• 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 コントローラー• ザイリンクス AXI Ethernet

• ザイリンクス AXI Ethernet Lite

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 124

• ザイリンクス AXI UART 16650 および Lite

注記: デフォルトでは、IP モデルが提供されていないデバイスは QEMU で無効にされます。このため、カスタマイズした独自の IP コアは、QEMU 規格に従ってユーザーが C/C++ モデルを作成しない限り QEMU を使用してテストすることはできません。詳細は、『ザイリンクス クイック エミュレーター ユーザー ガイド: QEMU』 (UG1169) を参照してください。

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

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 125

付録 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 イメージを 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 イメージをブートします。注記: SD カードからブートする場合は SD カードを使用したハードウェア上での PetaLinux イメージのブート、JTAG ブートを使用する場合は JTAG を使用したハードウェア上での PetaLinux イメージのブート を参照してください。

3. U-Boot から TFTP サーバーの IP をセットアップします。ZynqMP> setenv serverip <TFTP SERVERIP>

4. U-Boot から Xen イメージをロードします。ZynqMP> tftpboot 1000000 xen.dtbZynqMP> tftpboot 80000 xen-ImageZynqMP> tftpboot 1030000 xen.ubZynqMP> tftpboot 2000000 xen-rootfs.cpio.gz.u-bootZynqMP> bootm 1030000 2000000 1000000

付録 F: Xen Zynq UltraScale+ MPSoC の例

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 126

ヒント: 再ビルド済みイメージが RootFS イメージのサイズと異なる場合は、上記のアドレスを調整して、これらのイメージを RAM にコピーしたときにオーバーラップしないようにする必要があります。

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 コマンドを実行し、[PetaLinux Package Groups] → [Packagegroup-petalinux-

xen] → [[*] packagegroup-petalinux-xen] を選択します。4. Xen 関連の config でビルドするデバイス ツリーを編集します。project-spec/meta-user/recipes-bsp/

device-tree/files/system-user.dtsi ファイルに「/include/ "xen.dtsi"」という行を追加します。ファイルは次のようになります。/include/ "system-conf.dtsi"/include/ "xen.dtsi"/ {};

5. project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbapp end ファイルに「SRC_URI += "file://xen.dtsi"」という行を追加します。ファイルは次のようになります。FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI += "file://system-user.dtsi"SRC_URI += "file://xen.dtsi"

6. petalinux-build $ petalinux-buildを実行します。7. ビルド中に生成される中間ファイルは、プロジェクト ディレクトリの images/linux にあります。注記: デフォルトでは、petalinux-build コマンドでは Xen はビルドされません。デフォルトのルート ファイルシステムには Xen ツールは含まれません。Xen RootFS を使用する必要があります。重要: イメージ/RootFS のサイズに応じて、xen.dtsi ファイルの dom0 メモリをアップデートする必要があります。また、上記のロード アドレスを、オーバーラップしないように、イメージ/RootFS のサイズに応じて調整してください。

ビルド済み Linux を dom0 としてブート1. TFTP を使用して U-Boot からロードできるように、ビルド済み Xen イメージを TFTP ディレクトリにコピーします。$ cd <plnx-proj-root>$ cp images/linux/system.dtb <tftpboot>/$ cp images/linux/xen.ub <tftpboot>/$ cp images/linux/Image <tftpboot>/$ cp images/linux/rootfs.cpio.gz.u-boot <tftpboot>/

付録 F: Xen Zynq UltraScale+ MPSoC の例

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 127

2. JTAG ブートまたは SD カードからのブートを使用して、ボード上のビルド済み U-Boot イメージをブートします。注記: SD カードからブートする場合は SD カードを使用したハードウェア上での PetaLinux イメージのブート、JTAG ブートを使用する場合は JTAG を使用したハードウェア上での PetaLinux イメージのブート を参照してください。

3. U-Boot から TFTP サーバーの IP をセットアップします。ZynqMP> setenv serverip <TFTP SERVERIP>

4. U-Boot から Xen イメージをロードします。ZynqMP> tftpboot 1000000 xen.dtbZynqMP> tftpboot 80000 xen-ImageZynqMP> tftpboot 1030000 xen.ubZynqMP> tftpboot 2000000 xen-rootfs.cpio.gz.u-bootZynqMP> bootm 1030000 2000000 1000000

注記: 上記の Xen のロード アドレスは例です。実際の手順およびロード アドレスは、http://www.wiki.xilinx.com/XEN+Hypervisor を参照してください。

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. 次のコマンドを使用して、ファームウェアを読み込んでテスト アプリケーションを実行します。$ echo <echo_test_firmware> > /sys/class/remoteproc/remoteproc0/firmware

たとえば image_echo_test を読み込むには、次のコマンドを使用します。$ echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware$ echo start > /sys/class/remoteproc/remoteproc0/state$ modprobe rpmsg_user_dev_driver$ echo_test

3. 次のコマンドを使用して、アプリケーションをアンロードします。modprobe -r rpmsg_user_dev_driver echo stop > /sys/class/remoteproc/remoteproc0/state

OpenAMP の詳細は、『Zynq デバイス用 libmetal および OpenAMP ユーザー ガイド』 (UG1186) を参照してください。

付録 F: Xen Zynq UltraScale+ MPSoC の例

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 128

付録 G

その他のリソースおよび法的通知

ザイリンクス リソースアンサー、資料、ダウンロード、フォーラムなどのサポート リソースは、ザイリンクス サポート サイトを参照してください。

参考資料このガイドの補足情報は、次の資料を参照してください。1. PetaLinux 資料 (japan.xilinx.com/petalinux)

2. ザイリンクス アンサー 55776

3. 『Zynq UltraScale+ MPSoC: ソフトウェア開発者向けガイド』 (UG1137: 英語版、日本語版)

4. 『PetaLinux ツール資料: PetaLinux コマンド ライン リファレンス』 (UG1157)

5. 『Xilinx クイック エミュレーター ユーザー ガイド』 (UG1169)

6. 『Zynq デバイス用 libmetal および OpenAMP ユーザー ガイド』 (UG1186)

7. www.wiki.xilinx.com/Linux

8. PetaLinux Yocto のヒント9. Yocto プロジェクト テクニカル FAQ

Documentation Navigator およびデザイン ハブザイリンクス Documentation Navigator (DocNav) では、ザイリンクスの資料、ビデオ、サポート リソースにアクセスでき、特定の情報を取得するためにフィルター機能や検索機能を利用できます。DocNav を開くには、次のいずれかを実行します。• Vivado® IDE で [Help] → [Documentation and Tutorials] をクリックします。• Windows で [スタート] → [すべてのプログラム ] → [Xilinx Design Tools] → [DocNav] をクリックします。• Linux コマンド プロンプトに「docnav」と入力します。

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 129

ザイリンクス デザイン ハブには、資料やビデオへのリンクがデザイン タスクおよびトピックごとにまとめられており、これらを参照することでキー コンセプトを学び、よくある質問 (FAQ) を参考に問題を解決できます。デザイン ハブにアクセスするには、次のいずれかを実行します。• DocNav で [Design Hub View] タブをクリックします。• ザイリンクス ウェブサイトでデザイン ハブ ページを参照します。注記: DocNav の詳細は、ザイリンクス ウェブサイトの Documentation Navigator ページを参照してください。注意: DocNav からは、日本語版は参照できません。ウェブサイトのデザイン ハブ ページをご利用ください。

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には「貴殿」、法人その他の団体の場合には「貴社」。以下同じ) に開示される情報 (以下「本情報」といいます) は、ザイリンクスの製品を選択および使用することのためにのみ提供されます。適用される法律が許容する最大限の範囲で、(1) 本情報は「現状有姿」、およびすべて受領者の責任で (with all faults) という状態で提供され、ザイリンクスは、本通知をもって、明示、黙示、法定を問わず (商品性、非侵害、特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する) ものとします。また、(2) ザイリンクスは、本情報 (貴殿または貴社による本情報の使用を含む) に関係し、起因し、関連する、いかなる種類・性質の損失または損害についても、責任を負わない (契約上、不法行為上 (過失の場合を含む)、その他のいかなる責任の法理によるかを問わない) ものとし、当該損失または損害には、直接、間接、特別、付随的、結果的な損失または損害 (第三者が起こした行為の結果被った、データ、利益、業務上の信用の損失、その他あらゆる種類の損失や損害を含みます) が含まれるものとし、それは、たとえ当該損害や損失が合理的に予見可能であったり、ザイリンクスがそれらの可能性について助言を受けていた場合であったとしても同様です。ザイリンクスは、本情報に含まれるいかなる誤りも訂正する義務を負わず、本情報または製品仕様のアップデートを貴殿または貴社に知らせる義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生産、変更、頒布、または公に展示してはなりません。一定の製品は、ザイリンクスの限定的保証の諸条件に従うこととなるので、https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。IP コアは、ザイリンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件に従うことになります。ザイリンクスの製品は、フェイルセーフとして、または、フェイルセーフの動作を要求するアプリケーションに使用するために、設計されたり意図されたりしていません。そのような重大なアプリケーションにザイリンクスの製品を使用する場合のリスクと責任は、貴殿または貴社が単独で負うものです。https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。

自動車用のアプリケーションの免責条項オートモーティブ製品 (製品番号に「XA」が含まれる) は、ISO 26262 自動車用機能安全規格に従った安全コンセプトまたは余剰性の機能 (「セーフティ設計」) がない限り、エアバッグの展開における使用または車両の制御に影響するアプリケーション (「セーフティ アプリケーション」) における使用は保証されていません。顧客は、製品を組み込むすべてのシステムについて、その使用前または提供前に安全を目的として十分なテストを行うものとします。セーフティ設計なしにセーフティ アプリケーションで製品を使用するリスクはすべて顧客が負い、製品責任の制限を規定する適用法令および規則にのみ従うものとします。

付録 G: その他のリソースおよび法的通知

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 130

商標© Copyright 2019 Xilinx, Inc. Xilinx、Xilinx のロゴ、Alveo、Artix、Kintex、Spartan、Versal、Virtex、Vivado、Zynq、およびこの文書に含まれるその他の指定されたブランドは、米国およびその他各国のザイリンクス社の商標です。OpenCL および OpenCL のロゴは Apple Inc. の商標であり、Khronos による許可を受けて使用されています。 PCI、PCIe、および PCI Express は PCI-SIG の商標であり、ライセンスに基づいて使用されています。 AMBA、AMBADesigner、Arm、ARM1176JZ-S、CoreSight、Cortex、PrimeCell、Mali、および MPCore は、EU およびその他各国のArm Limited の商標です。 すべてのその他の商標は、それぞれの保有者に帰属します。

この資料に関するフィードバックおよびリンクなどの問題につきましては、[email protected] まで、または各ページの右下にある [フィードバック送信] ボタンをクリックすると表示されるフォームからお知らせください。フィードバックは日本語で入力可能です。いただきましたご意見を参考に早急に対応させていただきます。なお、このメール アドレスへのお問い合わせは受け付けておりません。あらかじめご了承ください。

付録 G: その他のリソースおよび法的通知

UG1144 (v2019.1) 2019 年 5 月 22 日 japan.xilinx.comPetaLinux ツール資料リファレンス ガイド 131