Versal スタックド シリコン インターコネクト デバイスのシステム デザイン例

この章では、スタックド シリコン インターコネクト (SSI) デバイスに使用可能なツールとサポートされているソフトウェア ブロックを使用して、Versal® デバイスをベースにしたシステムを構築する方法を説明します。Versal プレミアム VP1802 SSI デバイス ベースの VPK180 ボード用に、Vivado® ツールを使用して PL AXI GPIO および PL AXI UART を利用したエンベデッド デザインを作成する方法について説明します。SSI デバイスを使用したデザインについては、設計手法ガイド (UG949) を参照してください。また、ターゲットの Versal ACAP デバイス用の Arm® Cortex™-A72 コア ベースの Linux オペレーティング システムをコンフィギュレーションしてビルドする手順についても説明します。

デザイン例: AXI GPIO の使用

このデザイン例では、PL ベースの AXI GPIO インターフェイスを使用して、Linux アプリケーション (gpiotest) でボード上の LED を制御します。VP1802 SSI テクノロジ デバイスで使用可能な 4 つの SLR (Super Logic Regions) を利用するため、LED0、LED1、LED2、および LED3 用の PL AXI GPIO インターフェイス パスは、それぞれ SLR-0、SLR-1、SLR-2、および SLR-3 を経由して配線されています。

RPU ベアメタル アプリケーションは、PL ベースの AXI UART Lite を使用して、PS UART コンソールを使用する代わりに AXI UART コンソールにデバッグ メッセージを出力します。

このデザイン例では、次のように設定する手順を説明します。

  • SSI テクノロジ デバイス用 Versal® ACAP CIPS IP コアの設定。

  • SSI テクノロジ デバイスに必要な NoC (DDR) IP コアのコンフィギュレーションと関連する接続。

  • AXI GPIO および AXI UART PL IP と、PS および PL インターフェイスを介した CIPS への関連接続を設定します。

Versal ACAP CIPS IP コアの設定

Versal® ACAP CIPS IP コアを使用すると、ブート モード、ペリフェラル、クロック、インターフェイス、割り込み、などのプロセッシング システムおよび PMC ブロックを設定できます。

Vivado Design Suite での Versal ACAP CIPS IP コアの管理

  1. 新しいプロジェクトとブロック デザインを作成するには、「Versal ACAP CIPS および NoC (DDR) IP コアの設定」の手順に従ってください。

  2. まずは、[Add IP] ボタンをクリックして IP カタログから IP を追加します。

  3. 検索ボックスに「CIPS」と入力して、[Control, Interfaces and Processing System] を探します。

  4. [Control, Interface & Processing System IP] をダブルクリックして、ブロック デザインに追加します。次の図に示すように、[Diagram] ウィンドウに CIPS IP コアが表示されます。

    ../../../../_images/image7.png
  5. [Run Block Automation] をクリックします。

  6. ブロック設定を次の図に示すように設定します。

    ../../../../_images/run-automation-1.png
  7. [Diagram] ウィンドウで versal_cips_0 をダブルクリックします。

  8. [Design Flow] および [Presets] のすべての設定が次の図のようになっていることを確認します。

    ../../../../_images/4_1-full-system.png
  9. [Next] をクリックしてから [PS PMC] をクリックします。

    ../../../../_images/ps-pmc.png
  10. 次の図に示すように、TTC ペリフェラルをイネーブルにします。

../../../../_images/vpk_peripherals.png
  1. IO コンフィギュレーション設定が次のようになっていることを確認してください。

../../../../_images/vpk_io.png

注記

VPK180 プリセット値は、QSPI と SD をデフォルトのブート モードとして設定します。変更は必要ありません。

  1. [Interrupts] をクリックし、次の図のように設定します。

../../../../_images/interrupts.png
  1. [Finish] をクリックして CIPS の GUI を閉じます。

NoC (および DDR) IP コアの設定

このセクションでは、前のセクションの前半で設定した CIPS と一緒に使用のに必要な NoC (および DDR) 設定と関連する接続について説明します。NoC IP コアを使用すると、NoC を設定し、DDR メモリ コントローラーをイネーブルにできます。

NoC および CIPS の設定

  1. [CIPS] → [PS-PMC] を開きます。

  2. [NoC] をクリックし、次の図のようにマスター SLR (SLR-0) の NoC コヒーレント、非コヒーレント インタフェースおよび NoC to PMC インターフェイスをイネーブルにします。

    ../../../../_images/vpk_noc-interface-slr0.png
  3. スレーブ SLR (SLR-1、SLR-2、SLR-3) に対して、次の図のように PMC to NoC および NoC to PMC の接続をイネーブルにします。

    ../../../../_images/vpk_noc-interface-slr-1.png ../../../../_images/vpk_noc-interface-slr-2.png ../../../../_images/vpk_noc-interface-slr-3.png
  4. [Finish] をクリックして CIPS の GUI を閉じます。

  5. [AXI NoC IP] を 2 つ IP カタログから追加します。

  6. axi_noc-0 をダブルクリックします。[Board] タブで、次のように LPDDR トリプレットおよび関連するクロックをイネーブルにします。

    ../../../../_images/vpk_noc_board.png
  7. [General] タブをクリックし、次のように [Number of AXI Slave interfaces][AXI Clocks] を 8 に、[Number of Inter-NoC Master Interfaces] を 5 に設定します。

    ../../../../_images/vpk_noc-settings.png
  8. [Inputs] タブで、8 つの AXI スレーブ インターフェイスを次のように設定します。

    ../../../../_images/noc-axi.png
  9. [Connectivity] タブを次のように設定します。

    ../../../../_images/vpk_noc-connectivity.png
  10. [OK] をクリックします。

  11. axi_noc-1 をダブルクリックします。[General] タブで、次のように [Number of AXI Slave interfaces] を 3 に、[Number of AXI Master interfaces] を 4 に、[AXI Clocks] を 7 に、[Number of Inter-NoC Slave Interfaces] を 5 に設定します。

../../../../_images/vpk_noc_board1.png
  1. [Inputs] タブで PS PMC への 3 つの AXI スレーブ インターフェイスを次のように設定します。

../../../../_images/vpk_noc-axi1.png
  1. [Outputs] タブで PS PMC への 4 つの AXI マスター インターフェイスを次のように設定します。

../../../../_images/vpk_noc-axi2.png
  1. [Connectivity] タブを次のように設定します。

../../../../_images/vpk_noc-connectivity1.png
  1. [OK] をクリックします。

  2. 次に示すように、[CIPS] と [NOC] との間を接続します。

../../../../_images/vpk_noc-ip.png

PL AXI GPIO および AXI UART の設定

このセクションでは、AXI GPIO および AXI UART を備えた完全なシステムを構築するための PS および PL 設定と関連する接続について説明します。これには、Vivado IP カタログから必要な IP を追加し、PS サブシステムのブロックにコンポーネントを接続します。ハードウェアを設定する方法は、次のとおりです。

CIPS PS-PL インターフェイスの設定

PL IP に CIPS を接続するには、次の手順に従います。

  1. Versal ACAP CIPS IP コアをダブルクリックします。

  2. [PS-PMC] → [PS-PL Interfaces] をクリックします。

  3. M_AXI_FPD インターフェイスをイネーブルにし、[Number of PL Resets] を 1 に設定します (図を参照)。

    ../../../../_images/PS_PL_Interfaces.png
  4. [Clocking] をクリックし、[Output Clocks] タブをクリックします。

  5. [PMC Domain Clocks] を展開します。次に、[PL Fabric Clocks] を展開します。次の図のように、PL0_REF_CLK (PL CLK 0) を 300 MHz に設定します。

    ../../../../_images/clocking_ps_PMC.png
  6. [Finish] をクリックしてから、[OK] をクリックし、設定を完了し、ブロック図に戻ります。

PL ハードウェアの設定

このデザイン例で使用されている PL IP を設定する手順は、次のとおりです。

  1. ブロック図を右クリックし、[Add IP] をクリックして IP カタログから IP を追加します。

  2. AXI GPIO を検索し、[AXI GPIO IP] をダブルクリックして、4 つの IP インスタンスをデザインに追加します。

  3. IP カタログで AXI Uartlite を検索し、デザインに追加します。

  4. [Block Design] ビューで [Run Connection Automation] をクリックします。

    ../../../../_images/image62.png

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

  5. [Run Connection Automation] ダイアログ ボックスで、[All Automation] をオンにします。

    ../../../../_images/vpk_image63.png

    これにより、AXI GPIO IP のすべてのポートの自動化がチェックされます。

  6. axi_gpio_0GPIO をクリックし、次に示すように [Select Board Part Interface] を [Custom] に設定します。

    ../../../../_images/vpk_image64.png
  7. axi_gpio_0S_AXI をクリックします。次の図に示すように設定します。

    ../../../../_images/vpk_gpio_config0.png
  8. axi_gpio_1axi_gpio_2axi_gpio_3 に対しても手順 6 と 7 を繰り返します。

  9. axi_uartlite_0S_AXI をクリックします。次の図に示すように設定します。

    ../../../../_images/vpk_s-axi-uartlite1.png
  10. axi_uartlite_0[UART] をクリックします。次の図に示すように設定します。

../../../../_images/vpk_s-axi-uartlite.png
  1. [OK] をクリックします。

  2. これにより、次の接続が設定されます。

    • SmartConnect を CIPS と AXI GPIO IP 間のブリッジ IP として使用し、S_AXI of AXI_GPIO と UART Lite を CIPS の M_AXI_FPD に接続します。

    • プロセッサ システム リセット IP をイネーブルにします。

    • pl0_ref_clk をプロセッサ システム リセット、AXI GPIO、および SmartConnect IP クロックに接続します。

    • SmartConnect および AXI GPIO のリセットをプロセッサ システム リセット IP の peripheral_aresetn に接続します。

  3. [Block Design] ビューで [Run Connection Automation] をクリックし、[All Automation] チェック ボックスをオンにします。

  4. ext_reset_in をクリックして、次のように設定します。

../../../../_images/image66.jpeg

これにより、プロセッサ システム リセット IP の ext_reset_in が CIPS の pl_resetn に接続されます。

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

  2. プロセッサ システム リセット IP の peripheral_aresetn から SmartConnect IP の aresetn への接続を解除します。

  3. SmartConnect IP の aresetn をプロセッサ システム リセット IP の interconnect_aresetn に接続します。

../../../../_images/image67.jpeg
  1. axi_gpio_0 IP をダブルクリックして開きます。

  2. 次の図のように [IP Configuration] タブを設定します。

../../../../_images/vpk_image68.png
  1. axi_gpio_1axi_gpio_2axi_gpio_3 も同じ設定にします。

  2. axi_gpio_0 IP の外部ピンを削除し、インターフェイスを展開します。

  3. axi_gpio_0 IP の出力を外部接続 (Make External) にします。

  4. axi_gpio_0 IP の外部ポートを右クリックし、[External Port Properties] を選択し、Dout_0 に名前を変更します。

../../../../_images/vpk_gpio_port.png
  1. axi_gpio_1axi_gpio_2axi_gpio_3 に対して手順 21 ~ 23 を繰り返し、それぞれ Dout_1、Dout_2、Dout_3 に名前を変更します。

  2. SLR-1、SLR-2、SLR-3 に配置する AXI Register Slice IP のインスタンスを 3 つ追加します。

  3. Register Slice IP を右クリックし、[Block Properties] を選択して、次のように axi_register_slice_1_s2 という名前に変更します。

../../../../_images/vpk_register_light_2.png
  1. AXI Register Slice IP をダブルクリックし、[Register Slice Option] を次のように [Light] に設定します。

../../../../_images/vpk_register_light_1.png
  1. AXI Register Slice IP の 2 番目と 3 番目のインスタンスに対して手順 26 と 27 を繰り返し、それぞれ axi_register_slice_2_s2axi_register_slice_3_s2 に名前を変更します。

注記

axi_register_slice_1_s2axi_register_slice_2_s2axi_register_slice_3_s2 が、``pl_gpio_uart/constrs` フォルダーにパッケージの一部として提供される制約ファイルを使用して、SLR-1、SLR-2、SLR-3 にそれぞれ配置されます。

SLR-0 から SLR-1 への SLR クロッシング

注記

SLR クロッシング レジスタが追加され、タイミングクロージャが改善され、長いリソースの配線密集が緩和されています。

  1. AXI Register Slice IP を 2 つ追加して、SLR-0 から SLR-1 への SLR クロッシングを処理します。

  2. Register Slice IP を右クリックし、[Block Properties] を選択し、axi_register_slice_1_s1 に名前を変更します。

  3. Register Slice IP をダブルクリックし、[Register Slice Option] を [SLR Crossing] に設定します。

    ../../../../_images/vpk_slr_crossing_1.png
  4. AXI Register Slice IP の 2 番目のインスタンスに対して、手順 30 と 31 を繰り返し、名前を axi_register_slice_1_s3 に変更します。

SLR-0 から SLR-2 への SLR クロッシング

  1. 同様に、AXI Register Slice IP のインスタンスを 2 つ追加して、SLR-0 から SLR-2 へのマルチ SLR クロッシングを処理します。

  2. Register Slice IP を右クリックし、[Block Properties] を選択し、axi_register_slice_2_s1 に名前を変更します。

  3. Register Slice IP をダブルクリックし、[Register Slice Option] を [Multi SLR Crossing] に設定します。

    ../../../../_images/vpk_multi_slr_crossing_2_1.png
  4. [SLR Crossing] タブを開き、次のように [Number of SLR Crossing] を 2 に設定します。

    ../../../../_images/vpk_multi_slr_crossing_2_2.png
  5. AXI Register Slice IP の 2 番目のインスタンスに対して、手順 34 ~ 36 を繰り返し、名前を axi_register_slice_2_s3 に変更します。

SLR-0 から SLR-3 への SLR クロッシング

  1. 同様に、SLR-0 から SLR-3 への SLR クロッシングを処理するために AXI Register Slice IP を 2 つ追加します。

  2. Register Slice IP を右クリックし、[Block Properties] を選択し、axi_register_slice_3_s1 に名前を変更します。

  3. Register Slice IP をダブルクリックし、[Register Slice Option] を [Multi SLR Crossing] に設定します。

    ../../../../_images/vpk_multi_slr_crossing_3.png
  4. [SLR Crossing] タブを開き、次のように [Number of SLR Crossing] を 3 に設定します。

    ../../../../_images/vpk_multi_slr_crossing_4.png
  5. AXI Register Slice IP の 2 番目のインスタンスに対して、手順 39 ~ 41 を繰り返し、名前を axi_register_slice_3_s3 に変更します。

  6. AXI SmartConnect から axi_gpio_0axi_gpio_1axi_gpio_2axi_gpio_3 の接続を解除し、次の図のようにレジスタ スライスを接続します。

    ../../../../_images/vpk_register_slice_con.PNG
  7. [Block Design] ビューで [Run Connection Automation] をクリックします。すべてのレジスタ スライスの aclk を選択し、[OK] をクリックします。

    ../../../../_images/vpk_register_slice_con_clk.png
  8. axi_uartlite_0 をダブルクリックして、IP を開きます。次の図のように [IP Configuration] タブを設定します。

    ../../../../_images/vpk_configure-ip-settings.png
  9. Clock Wizard IP を追加します。これをダブルクリックして、IP を開きます。

  10. [Clocking Features] タブに移動し、次のように設定します。

    ../../../../_images/clocking-features.png
  11. [Input Clock Information] の [Source] オプションが [Global buffer] に設定されていることを確認します。

  12. [Output Clocks] タブに移動し、出力クロックを 250 MHz に設定します。

    ../../../../_images/vpk_output-clocks-tab.png
  13. CIPS の pl0_ref_clk を右クリックし、[Disconnect Pin] をクリックします。

  14. CIPS からの pl0_ref_clk をクロッキング ウィザードの入力 clk_in1 に接続します。

  15. クロッキング ウィザードの出力を Processor System Reset IP の slowest_sync_clock に接続します。

    これはタイミング エラーを避けるのに役立ちます。

ブロック デザイン全体が次のようになります。

../../../../_images/vpk_image73.png

デザインの検証および出力の生成

デザインを検証し、出力ファイルを生成するには、次の手順を実行します。

  1. [Block Design] ビューに戻り、ブロック デザインを保存します (Ctrl + S キーを押す)。

  2. [Diagram] ウィンドウの空白部分を右クリックして、[Validate Design] をクリックします。または、F6 キーを押します。次の図のようなメッセージが表示されます。

    Vivado ツールから、デザイン内の IP をアドレスにマッピングするように指示するプロンプトが表示されます。[Yes] をクリックします。

    ../../../../_images/vpk_assign-address.png

    注記

    アドレス セグメントの数は、デザイン内のメモリ マップド IP の数によって異なる場合があります。

    検証が完了すると、次のようなメッセージ ダイアログ ボックスが開きます。

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

  4. [Sources] ウィンドウをクリックします。

    1. 制約を展開します。

    2. [constrs_1] を右クリックし、[Add Sources] をクリックします。

      [Add Sources] ウィンドウが表示されます。

    3. [Add or Create Constraints] オプションを選択し、[Next] をクリックします。

    4. 追加する XDC ファイルを選択します。

      注記

      制約ファイルは pl_gpio_uart/constrs フォルダーにパッケージの一部として含まれます。

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

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

  6. [Sources] ウィンドウの [Design Sources] の下の [edt_versal_wrapper] を展開します。

  7. edt_versal_i : edt_versal (edt_versal.bd) という最上位ブロックを右クリックし、[Generate Output Products] をクリックします。

    ../../../../_images/GOP.png
  8. [Generate] をクリックします。

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

  10. [Sources] ウィンドウで [IP Sources] ビューをクリックします。次の図に示すように、生成した出力ファイルが表示されます。

    ../../../../_images/vpk_180_ip-sources-ch5-final.png

デバイス イメージの合成、インプリメント、生成

デザインのデバイス イメージを生成するには、次の手順を実行します。

  1. Flow Navigator の [Program and Debug] をクリックし、[Generate Device Image] をクリックし、[OK] をクリックします。

  2. [No Implementation Results Available] メニューが表示されます。[Yes] をクリックします。

  3. [Launch Run] メニューが表示されます。[OK] をクリックします。

    デバイス イメージの生成が完了すると、[Device Image Generation Completed] ダイアログ ボックスが開きます。

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

  5. デバイス イメージを生成したら、ハードウェアをエクスポートします。

注記

次の手順はオプションなので、省略して「ハードウェアのエクスポート」 セクションに進むこともできます。これらの手順を実行すると、デバイス イメージを生成する前に合成およびインプリメンテーションを実行するので、デバイス イメージ生成の詳細なフローがわかるようになります。デバイス イメージの生成フローを理解する必要がある場合は、次の手順を実行します。

  1. Flow Navigator で [Synthesis] をクリックし、[Run Synthesis] をクリックします。

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

    合成の実行中、ウィンドウの右上にステータス バーが表示されます。このステータス バーは、デザイン プロセスをとおして、さまざまな理由により表示されます。ステータス バーは、プロセスがバックグランドで実行されていることを示します。合成が完了すると、[Synthesis Completed] ダイアログ ボックスが開きます。

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

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

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

    デバイス イメージの生成が完了すると、[Device Image Generation Completed] ダイアログ ボックスが開きます。

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

    デバイス イメージを生成したら、ハードウェアをエクスポートします。

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

  1. Vivado のメイン メニューから [File] → [Export] → [Export Hardware] をクリックします。[Export Hardware] ダイアログ ボックスが開きます。

  2. [Include bitstream] を選択し、[Next] をクリックします。

  3. エクスポートしたファイルの名前を入力し (またはデフォルトを使用し)、ディレクトリを選択します。[Next] をクリックします。

    ハードウェア モジュールが既にエクスポートされている場合は、警告メッセージが表示されます。上書きメッセージが表示された場合、このデザインに別の名前を選択するか、または [Yes] をクリックして既存の XSA ファイルを上書きします。

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

サンプル プロジェクト: RPU を使用した FreeRTOS AXI UARTLiteアプリケーション プロジェクト

このセクションでは、Versal デバイス上で Arm Cortex-R5F コア ベースの RPU 用の FreeRTOS アプリケーションをコンフィギュレーションしてビルドする手順について説明します。

次の手順は、Arm Cortex-R5F から FreeRTOS アプリケーションを作成する手順を示しています:

  1. Vitis™ IDE を起動し、c:/edt/freertos などの新しいワークスペースを作成します。

  2. [File] → [New] → [Application Project] をクリックします。[Create a New Application Project] ページが開きます。Vitis IDE を初めて起動した場合は、次の図に示す Welcome 画面で [Create Application Project] を選択できます。

    ../../../../_images/image75.jpeg

    注記

    オプションで、[Skip welcome page next time] チェック ボックスをオンにすると、毎回 Welcome ページが表示されないようにすることもできます。

  3. Vitis IDE には、ターゲット プラットフォーム、システム プロジェクト、ドメイン、テンプレートの 4 つのコンポーネントがあります。Vitis IDE で新しいアプリケーション プラットフォーム作成するには、次の手順に従います。

    1. ターゲット プラットフォームには、ベース ハードウェア デザインと、宣言されたインターフェイスにアクセラレータを接続するのに使用されたメタデータが含まれます。プラットフォームを選択するか、Vivado Design Suite からエクスポートした XSA からプラットフォーム プロジェクトを作成します。

    2. アプリケーション プロジェクトをシステム プロジェクトに配置し、プロセッサに関連付けます。

    3. ドメインでは、ターゲット プラットフォームでホスト プログラムを実行するのに使用されるプロセッサおよびオペレーティング システムを定義します。

    4. アプリケーションのテンプレートを選択して、開発を迅速に開始します。ウィザードの各ページで次の表の情報に基づいて設定を選択します。

      表: ウィザード情報

      ウィザード画面

      システム プロパティ

      設定または使用するコマンド

      プラットフォーム

      Create a new platform from hardware (XSA)

      [Browse] をクリックして XSA ファイルを追加

      プラットフォーム名

      vpk180_platform

      Application Project Detail

      Application project name

      freertos_gpio_test

      Select a system project

      +Create New

      System project name

      freertos_gpio_test_system

      プロセッサ

      versal_cips _0_pspmc_0_psv_cortexr5_0

      Dom

      Select a domain

      +Create New

      名前

      デフォルト名入力済み

      Display Name

      デフォルト名入力済み

      オペレーティング システム

      freertos10_xilinx

      プロセッサ

      versal_cips _0_pspmc_0_psv_cortexr5_0

      Templates

      Available

      Empty

      Templates

      Application (C)

    Vitis ソフトウェア プラットフォームは、上記の手順を実行した後、Explorer ビューの下に、プラットフォーム プロジェクト (vpk180_platform) と freertos_gpio_test というアプリケーション プロジェクトを含むシステム プロジェクト (freertos_gpio_test_system) のボード サポート パッケージを作成します。

  4. src/ ディレクトリの下のソース ファイルを削除し、freertos ソース コード ファイルを FreeRTOS プロジェクト パス <design-package>/ch5_system_design_example_source__files/rpu/ から src/ ディレクトリへコピーします。

  5. Vitis IDE を設定して、FreeRTOS ボード サポート パッケージの下にある RPU アプリケーション デバッグ コンソールの AXI UARTLITE をイネーブルにします。

    vpk180_platform プロジェクトの platform.spr に移動し、次にボード サポート パッケージの下の [Modify BSP] を選択し、図に示すように <Y> キーを押して stdin と stdout を axi_uarlite_0 に変更します。

    ../../../../_images/vitis_uartlite_enable.JPG
  6. [OK] をクリックして上記の設定を保存し、コンフィギュレーション ウィザードを終了します。

  7. freertos_gpio_test_system を右クリックし、[Build Project] をクリックします。または、build をクリックします。

    Linux イメージをビルドし、FreeRTOS ELF をイメージに組み込む方法については、「サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成」を参照してください。

  8. PL AXI UART シリアル コンソールでは、RPU デバッグ ログは次のように出力されます。

    Gpio Initialization started
    Counter 0
    Counter 1
    Counter 2
    Counter 3
    Counter 4
    Counter 5
    

サンプル プロジェクト: PetaLinux を使用した Linux イメージの作成

このセクションでは、Versal デバイス上で Arm Cortex-A72 コア ベースの APU 用の Linux オペレーティング システムをコンフィギュレーションしてビルドする手順について説明します。PetaLinux ツールをボード固有の BSP と使用すると、Linux イメージをコンフィギュレーションおよびビルドできます。

このサンプル プロジェクトには、Linux ホスト マシンが必要です。PetaLinux ツールの依存関係とインストール手順については、『PetaLinux ツールの資料: リファレンス ガイド UG1144 を参照してください。

重要

この例では、VPK180 PetaLinux BSP を使用して PetaLinux プロジェクトを作成します。PetaLinux (VPK180) に該当する BSP がダウンロードされていることを確認します。

ボード

QSPI/SD

OSPI

eMMC

VPK180 量産ボード

xilinx-vpk180-v2022.2-11160035.bsp

該当なし

該当なし

  1. 各ボードの PetaLinux BSP を現在のディレクトリにコピーします。

  2. PetaLinux 環境を設定します。

    $ source <petalinux-tools-path>/settings.csh
    
  3. 次のコマンドを使用して PetaLinux プロジェクトを作成します。

    $ petalinux-create -t project -s xilinx-vpk180-vxxyy.z-final.bsp -n led_example
    

    注記

    • VPK180 ボードの場合、コマンドの -s オプションの後に xilinx-vpk180-vxxyy.z-final.bsp を使用します。

  4. 次のコマンドを使用して、PetaLinux プロジェクト ディレクトリに移動します。

    $cd led_example
    
  5. ハードウェア プラットフォーム プロジェクトの XSA を Linux ホスト マシンにコピーします。

    注記

    VPK180 ボードの場合は、「デザイン例: AXI GPIO の使用」で生成した XSA ファイルを使用します。

  6. 次のコマンドを実行して BSP を再設定します。

    $ petalinux-config --get-hw-description=<path till the directory containing the respective xsa file>
    

    [PetaLinux Configuration] ウィンドウが開きます。この例では、このウィンドウで何も変更する必要はありません。

  7. <Save> をクリックして上記の設定を保存し、<Exit> をクリックして、コンフィギュレーション ウィザードを終了します。

  8. 次のコマンドを使用して、PetaLinux プロジェクト内に gpiotest という名前の Linux アプリケーションを作成します。

    $petalinux-create -t apps --template install --name gpiotest --enable
    
  9. 次のコマンドを使用して、<design-package>/<vpk180>/linux/bootimages からプロジェクトにアプリケーション ファイルをコピーします。

    $cp <design-package>/ch7_system_design_example_source__files/apu/gpiotest_app/gpiotest/files/* <plnxproj-root>/project-spec/meta-user/recipes-apps/gpiotest/files/
    $cp <design-package>/ch7_system_design_example_source__files/apu/gpiotest_app/gpiotest/gpiotest.bb <plnx-proj-root>/project-spec/meta-user/recipes-apps/gpiotest/gpiotest.bb
    $cp <design-package>/ch7_system_design_example_source__files/apu/device_tree/system-user.dtsi <plnx-proj-root>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
    
  10. カーネル コンフィギュレーション内で GPIO サポートをイネーブルにします。

    $petalinux-config -c kernel
    

    注記

    このコマンドは、PetaLinux プロジェクトのカーネル コンフィギュレーション ウィザードを開きます。

  11. [Device drivers] → [GPIO Support] をクリックし、<Y> キーを押してイネーブルにします。Enter キーを押たあとに、<Y> キーを押して、Debug GPIO コールと /sys/class/gpio/...(sysfs interface) のエントリをイネーブルにします。

    ../../../../_images/versal_2021_gpio_debug.png
  12. [Memory mapped GPIO drivers] まで移動し、<Y> キーを押して、Xilinx GPIO のサポートおよび Xilinx Zynq GPIO のサポートをイネーブルにします。

    ../../../../_images/versal_2021_gpio_xilinx.png
  13. <Save> をクリックして上記の設定を保存し、<Exit> をクリックして、コンフィギュレーション ウィザードを終了します。

  14. AIE、STDC++、および Tcl オプションをディスエーブルにし、ROOTFS のサイズを SD および OSPI/QSPI フラッシュ メモリのパーティションの両方に収まるように、ROOTFS を構成します。

    petalinux-config -c rootfs
    
  15. 次の図のように、ユーザー パッケージに移動し、<Y> キーを押して aie-notebooks、openamp-demo-notebooks、packagegroup-petalinux-jupyter、pm-notebooks、python3-ipywidgets のサポートをディスエーブルにします。

    ../../../../_images/rootfs_config_aie.JPG
  16. 次の図のように、[Filesystem Packages] → [misc] → [gcc-runtime] に移動し、<Y> キーを押して [libstdc++ support] をディスエーブルにします。

    ../../../../_images/rootfs_config_stdc++.JPG
  17. 次の図のように、[Filesystem Packages] → [devel] → [tcltk] → [Tcl] に移動し、<Y> キーを押して [tcl support] をディスエーブルにします。

    ../../../../_images/rootfs_config_tcl.JPG
  18. <Save> をクリックして上記の設定を保存し、<Exit> をクリックして、コンフィギュレーション ウィザードを終了します。

    注記

    VPK180 プロダクション ボードで動作するには、SD および QSPI ブート モードのみです。

  19. 次のコマンドを使用して、Linux イメージをビルドします。

    $ petalinux-build
    

ビルドした画像をフラッシュ メモリに書き込むと、VPK180 ボード上のスレーブ SLR に接続された 4 つの LED がすべてオンになります。