XRT へのルート ファイルシステムの追加
Vitis アクセラレーション アプリケーションでは XRT を使用してハードウェアを制御します。XRT を使用すると、 Alveo™ データセンターからエンベデッドまで、さまざまなユース ケースで同じプログラミング インターフェイスを使用できます。
rootfs および sysroot に XRT カーネル ドライバー (zocl) とユーザー空間ライブラリ (xrt-dev) を追加する必要があります。xrt-dev をパッケージすると、XRT API を使用する Vitis アプリケーションをコンパイルできるようになります。
zocl のためのデバイス ツリーのアップデート
zocl ドライバー インターフェイスには、割り込み接続を有効にするためにデバイス ツリー ノードが必要です。
次は、xocl デバイス ノードの例です。
&amba {
zyxclmm_drm {
compatible = "xlnx,zocl";
status = "okay";
interrupt-parent = <&axi_intc_0>;
interrupts = <0 4>, <1 4>, <2 4>, <3 4>,
<4 4>, <5 4>, <6 4>, <7 4>,
<8 4>, <9 4>, <10 4>, <11 4>,
<12 4>, <13 4>, <14 4>, <15 4>,
<16 4>, <17 4>, <18 4>, <19 4>,
<20 4>, <21 4>, <22 4>, <23 4>,
<24 4>, <25 4>, <26 4>, <27 4>,
<28 4>, <29 4>, <30 4>, <31 4>;
};
};
詳細は、XRT の資料 (https://xilinx.github.io/XRT/master/html/yocto.html) を参照してください。
割り込みコントローラーの入力番号のアップデート
ブロック図では、割り込みコントローラーがアクセラレーション カーネルに接続されていません。自動生成されたデバイス ツリーは、ブロック図のハードウェア デザインを反映しており、v++
リンカーが割り込みコントローラーへカーネルの割り込み信号を接続する可能性は考慮していません。これらの割り込みをイネーブルするには、割り込みコントローラーの割り込み入力番号を上書きします。
次は、system-user.dtsi で AXI Interconnect のノード パラメーターを上書きする方法を示しています。
&axi_intc_0 {
xlnx,kind-of-intr = <0x0>;
xlnx,num-intr-inputs = <0x20>;
interrupt-parent = <&gic>;
interrupts = <0 89 4>;
};
/etc/xocl.txt を使用したプラットフォーム宣言
プラットフォーム名をエンベデッド プラットフォームの rootfs の /etc/xocl.txt に記述しておくと、XRT でどのプラットフォームかが判別されます。ホスト アプリケーションは、XRT API を使用してプラットフォーム名を取得し、xclbin とホスト アプリケーションのプラットフォームとの互換性をチェックできます。
CMA サイズの調整
XRT ではバッファー オブジェクトの割り当てに CMA が使用されます。bootargs やデバイス ツリーで CMA 用に十分なメモリを確保して、アクセラレーション アプリケーション実行中にメモリ不足にならないようにしてください。