Vitis ワークスペースには、次の 2 種類のプロジェクト タイプがあります。
図 1. Vitis ソフトウェア プラットフォーム プロジェクト タイプ
- ワークスペース
- ワークスペースは、Vitis ソフトウェア プラットフォームを開いたときに作成します。ワークスペースは、Vitis ソフトウェア プラットフォームがプロジェクト データおよびメタデータを保存するディレクトリです。Vitis ソフトウェア プラットフォームを起動したら、初期ワークスペースのディレクトリを指定する必要があります。
- XSA
- XSA は Vivado Design Suite からエクスポートされます。含まれるのは、プロセッサ コンフィギュレーション プロパティ、ペリフェラル接続情報、アドレス マップ、およびデバイス初期化コードのようなハードウェア仕様です。XSA はプラットフォーム プロジェクトを作成する際に指定する必要があります。
- プラットフォーム
- ターゲット プラットフォームまたはプラットフォームは、ハードウェア コンポーネント (XSA) とソフトウェア コンポーネント (ドメイン/BSP、FSBL などのブート コンポーネントなど) を組み合わせたものです。リポジトリのプラットフォームは、編集できません。ワークスペース内のプラットフォームは編集可能で、プラットフォーム プロジェクトと呼ばれます。
- プラットフォーム プロジェクト
- プラットフォーム プロジェクトには、ハードウェア情報とソフトウェア ランタイム環境が含まれます。これはカスタマイズ可能で、ドメインの追加やドメイン設定の変更ができます。プラットフォーム プロジェクトは、XSA をインポートするか、既存のプラットフォームをインポートして作成できます。複数のシステム プロジェクトを同じプラットフォーム プロジェクトにビルドすると、ハードウェアおよびソフトウェア環境設定を共有できます。
- Domain
- ドメインは、ボード サポート パッケージ (BSP) またはオペレーティング システム (OS) と、アプリケーションをビルドするためのソフトウェア ドライバーのコレクションです。作成するソフトウェア イメージには、ザイリンクス ライブラリのうちエンベデッド デザインで使用するもののみが含まれます。1 つのドメインで実行するアプリケーションを複数作成できます。ドメインは、プラットフォームの 1 つのプロセッサまたは同型プロセッサのクラスター (A53_0 または A53 など) に関連付けられます。
- システム プロジェクト
- システム プロジェクトは、デバイスで同時に実行されるアプリケーションをグループ化します。同じプロセッサ用の 2 つのスタンドアロン アプリケーションを 1 つのシステム プロジェクトに含めることはできません。2 つの Linux アプリケーションは、1 つのシステム プロジェクトに含めることができます。ワークスペースには、複数のシステム プロジェクトを含めることができます。
- アプリケーション (ソフトウェア プロジェクト)
- ソフトウェア プロジェクトには、1 つまたは複数のソース ファイルと、必要なヘッダー ファイルが含まれ、コンパイルしてバイナリ出力 (ELF) ファイルを生成できるようにします。システム プロジェクトには、複数のアプリケーション プロジェクトを含めることができます。各ソフトウェア プロジェクトには、対応するドメインを 1 つ含める必要があります。
Vitis プラットフォームにはさまざまなコンフィギュレーションがあり、さまざまなユース ケースがサポートされます。概要は次のとおりです。
- エンベデッド
- プラットフォームでは、 Arm® プロセッサおよび MicroBlaze™ プロセッサのエンベデッド ソフトウェア開発がサポートされます。
- エンベデッド アクセラレーション
- エンベデッド ソフトウェア開発以外に、アプリケーション アクセラレーションもこのタイプのプラットフォームでサポートされます。プラットフォームには、アクセラレーション カーネル用のクロック、バス インターフェイス、割り込みコントローラーが提供されています。
- データセンター アクセラレーション
- アクセラレーション カーネルおよび x86 ホスト アプリケーションはこのプラットフォームで開発できます。カーネルは PCIe® バスを使って制御されます。
次は、Zynq UltraScale+ MPSoC の典型的な Vitis ソフトウェア開発ワークスペースの例です。
図 2.
Zynq UltraScale+ MPSoC の Vitis ソフトウェア開発ワークスペースの例
- Linux ドメインは
Arm®
Cortex®-A53 SMP クラスター用に作成できます。Linux アプリケーションは、Linux ドメインの
sysroot
で提供されるライブラリに対してコンパイルおよびリンクできます。 - Arm Cortex-A53 core 0 および Arm Cortex®-R5F core 0 は同時に hello world アプリケーションを実行でき、これらの 2 つのアプリケーションは 1 つのシステム プロジェクトにまとめることができます。
- Arm Cortex-A53 core 0 のベアメタルのビルドイン セルフテスト アプリケーションは、独自のシステム プロジェクトで動作し、独自の BSP 設定になります。
- これらのシステム プロジェクトは、Zynq UltraScale+ MPSoC デバイス上で異なる時間で実行されます。1 つのシステム プロジェクトのアプリケーションは同時に実行されます。
- FSBL および PMU ファームウェアなどのブート コンポーネントは、プラットフォーム プロジェクトに自動的に生成されます。ブート コンポーネントには、独自の BSP 設定があります。