FC2カウンター FPGAの部屋
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Xilinx Runtime (XRT)

Vitis には、Xilinx Runtime (XRT) がある。
Xilinx Runtime (XRT) の資料は、Xilinx Runtime (XRT) Architecture に詳しく載っている。

Xilinx Runtime (XRT) Architecture によると、XRTは下図のLinux PCIe Driver や Linux MPSoC Driver の中に含まれるらしい? (Xilinx Runtime (XRT) Architectureから図を引用)
XRT_1_191113.png

Linux PCIe Driver がAlveo 対応のドライバで、Linux MPSoC Driver がZynq UltraScale+ MPSoC 対応のドライバのようだ。

更に、Platform Overview では、PCIe Based Platforms と Zynq Ultrascale+ MPSoC Based Embedded Platforms に分かれている。
PCIe Based Platforms の図を引用する。
XRT_2_191113.png

PCIe Based Platforms では、U200、U250、U280、U50、AWS F1、Advantech VEGA-4000/4002 に対応するようだ。

Zynq Ultrascale+ MPSoC Based Embedded Platforms の図を引用する。
XRT_3_191113.png

MPSoCベースのプラットフォームは、PetaLinuxベーススタックでサポートされているそうだ。RT Linuxカーネルドライバーzoclの役割をPlatform Overview のGoogle 翻訳結果から引用する。

CMAバッファー管理とキャッシュ管理
SVMプラットフォーム用のSMMUプログラミング
クライアントプロセスに代わって標準化された計算ユニット実行管理
パーシャルリコンフィギュレーションをサポートするプラットフォーム用のxclbinダウンロード
DMA-BUFを介したバッファーのインポートとエクスポート
計算ユニット完了のための割り込み処理


また、Xilinx の GitHub にも、Xilinx/XRT があって、そこからダウンロードし、ビルドすることができるようだ。

改めて、”Vitis Unified Software Development Platform Documentation”を読んでみると、今回やってきた Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発でXRT の対応が無いことに気がついた。
Vitis Unified Software Development Platform Documentation”の”Embedded Processor Platform Development”の”Creating the Software Component”の ”Using PetaLinux for Generating Linux Output Products”の 6. と 7. には XRT サポートの項目がある。
Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)"では、そのXRT サポートの設定を行っていなかったので、やり直してみよう。
  1. 2019年11月13日 04:52 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる4(プラットフォームの作成)

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)”の続き。

前回はソフトウェア・コンポーネントの作成で sysroot を作成して、linux.bif を作成した。今回は、プラットフォームを作成してみよう。

今回、参考にするのは、”Vitis Unified Software Development Platform Documentation”の”
Embedded Processor Platform Development”の”Creating the Platform”だ。

ultra96v2_min_pkg/pfm ディレクトリに移動して、その下の wksp1 をワークスペースに指定して、Vitis GUI を立ち上げた。
cd ultra96v2_min_pkg/pfm
vitis -workspace wksp1

Vitis_Platform_46_191110.png

Vitis_Platform_47_191110.png

Create Platform Project をクリックした。
New Platform Project ダイアログが立ち上がった。
Project name に ultra96v2_min と入力した。
Vitis_Platform_48_191110.png

Platform Project では、Create from hardware specification のラジオボタンがクリックされていることを確認した。
Vitis_Platform_49_191110.png

Platform Project Specification では、”Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる1(ハードウェア・コンポーネントの作成)”で作成した。 xsa ファイルをXSA file に指定した。
/home/masaaki/HDL/Ultra96/Vitis_platform/2019.2/Ultra96V2_Platform1/Ultra96V2_Platform1_wrapper.xsa
Vitis_Platform_50_191110.png

Platform Project が作成された。Linux のドメインを追加する。
psu_cotexa51_0 を右クリックし、右クリックメニューから Add Domain を選択した。
Vitis_Platform_51_191110.png

Name に linux_domain と入力した。
OS から linux を選択した。
Bif File は、”Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)”で作成した linux.bif を指定した。
Boot Component Directory と Linux Image Directory には、ultra96v2_min_pkg/pfm/boot ディレクトリを指定した。
Vitis_Platform_52_191110.png

Sysroot Directory に ultra96v2_min_pkg/pfm/sysroots/aarch64-xilinx-linux/ ディレクトリを指定した。
下の図にはビルド・アイコンに丸が付いているが、間違いでもう1つやらなければならない設定がある。
Vitis_Platform_53_191110.png

左のペインの standalone on psu_cortexa53_0 の Board Support Package を選択して、右のペインのModify BSP Settings... ボタンをクリックした。
Vitis_Platform_54_191111.png

Overview の standalone をクリックして、stdin と stdout を psu_uart_1 に変更した。
Vitis_Platform_55_191111.png

これで、トンカチ・アイコンをクリックして、ビルドを開始した。
ビルドが終了して、成功したようだ。
Vitis_Platform_56_191111.png
  1. 2019年11月11日 04:48 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

いわい将門ハーフマラソンに出ました

昨日はいわい将門ハーフマラソンの 10 km 部門に出場しました。
bandou_half_1_191111.jpg

私としては新記録の 55 分 52 秒で走れました。嬉しいです。
bandou_half_2_191111.jpg

昨日の走りのガーミンでのデータです。
bandou_half_3_191111.png

bandou_half_4_191111.png

ほぼイーブンペースです。

bandou_half_5_191111.png

スタート時の渋滞で 6 分/km かかりましたが、その他は 5 分 30 秒 / km 程度のペースです。
最後は割と急な下り坂もあり、5 分 7 秒 / km でした。
最後の坂では十数人抜きました。気持ちよかった。。。ゴールまで若者と競っていたのですが、最後に追い抜きました。
  1. 2019年11月11日 04:09 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

「ジョーカー」(映画)を見てきました

今日は坂東ハーフマラソンの後で、「ジョーカー」(映画)を見てきました。
なんというか話題作なんでしょうが、私は余り好きじゃないですね。
  1. 2019年11月10日 22:02 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)”の続き。

前回は、”Creating the Software Component”を参照しながら、PetaLinux 2019.2 を使用して、Vitis 2019.2 のソフトウェア・コンポーネントを作成していったが、petalinux-build までとなった。今回は sysroot を作成して、linux.bif を作成する。

今回も、”Creating the Software Component”を参照しながらやっていく。

ターゲットLinuxシステム用のsysrootセルフインストーラーを作成する。
cd images/linux
petalinux-build --sdk

結構ビルドに時間がかかったが、 sdk.sh ができた。 181.5 MB あって大きい。
Vitis_Platform_35_191109.png

現在のカレント・ディレクトリ上に ultra96v2_min_pkg ディレクトリとその下に pfm ディレクトリを作成した。更に、 pfm ディレクトリの下に boot ディレクトリと wksp1 ディレクトリを作成した。
Vitis_Platform_37_191109.png

sdk.shセルフインストーラーを使用して、sysrootを出力およびインストールする。
./sdk.sh

Enter target directory for SDK を聞かれたので、/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2019.2/Ultra96V2_Platform1/images/linux/ultra96v2_min_pkg/pfm を入力した。

その後、Proceed [Y/n]? と聞かれたので、Y を入力した。
Vitis_Platform_38_191109.png

Vitis_Platform_39_191109.png

ultra96v2_min_pkg/pfm/sysroot ディレクトリの下に、aarch64-xilinx-linux ディレクトリと x86_64-petalinux-linux ができた。
pfm ディレクトリの下に、environment-setup-aarch64-xilinx-linux , site-config-aarch64-xilinx-linux , version-aarch64-xilinx-linux ファイルができた。
Vitis_Platform_40_191109.png

aarch64-xilinx-linux ディレクトリの内容を示す。これは、まさに root file system のようだ。
Vitis_Platform_44_191110.png

x86_64-petalinux-linux ディレクトリを見てみよう。
Vitis_Platform_45_191110.png

最後に linux.bif を作成する。
エディタに”Creating the Software Component”の linux.bif の内容をコピー&ペーストした。
Vitis_Platform_41_191109.png

/* linux */
 the_ROM_image:
 {
  [fsbl_config] a53_x64
  [bootloader] <zynqmp_fsbl.elf>
  [pmufw_image] <pmufw.elf>
  [destination_device=pl] <bitstream>
  [destination_cpu=a53-0, exception_level=el-3, trustzone] <bl31.elf>
  [destination_cpu=a53-0, exception_level=el-2] <u-boot.elf>
 }


ultra96v2_min_pkg ディレクトリ上に linux.bif としてセーブした。
Vitis_Platform_42_191109.png

(2019/11/11 : 追記)
ultra96V2_min_pkg/pfm/boot ディレクトリには、Ultra96V2_Platform1/image/linux にビルドされたファイルの中から bl31.elf, image_ub, pmufw.elf, u-boot.elf, zynqmp_fsbl.elf をコピーした。
Vitis_Platform_43_191110.png


  1. 2019年11月10日 05:10 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる1(ハードウェア・コンポーネントの作成)”の続き。

前回は、Vivado 2019.2 の組み込みプロセッサ プラットフォームを作ってみようということで、SDx 2019.1 用に作ったハードウェア・プラットフォーム用のVivado 2019.2 のプロジェクトをVivado 2019.2 にアップグレードして、XSA ファイルを生成した。今回は、”Vitis Unified Software Development Platform Documentation”の”
Embedded Processor Platform Development”の”Creating the Software Component”を参照しながら、Vitis 2019.2 のソフトウェア・コンポーネントを作成していこう。

最初にキーを押すのを間違えて、ソフトウェア・コンポーネントの作成中にUbuntu 18.04 を再起動してしまったので、ログが消えてしまった。。。orz
よって、コマンドの貼り付けるログはほとんど無い。

最初に、PetaLinux のUltra96V2_Platform1 プロジェクトを作成しよう。
petalinux-create --type project --template zynqMP --name Ultra96V2_Platform1
Vitis_Platform_16_191107.png

xsa ファイルを指定して petalinux-config を行う。
cd Ultra96V2_Platform1
petalinux-config --get-hw-description=~/HDL/Ultra96/Vitis_platform/2019.2/Ultra96V2_Platform1/

設定画面が開く。

Image Packaging Configuration -> Root filesystem type で EXT (SD/eMMC/QSPI/SATA/USB) を選択した。
Vitis_Platform_17_191107.png

Yocto Settings -> Enable Debug Tweaks を有効にする (Spaceキーを押す)
Vitis_Platform_18_191107.png

Subsystem AUTO Hardware Settings -> Serial Settings -> Primary stdin/stdout を psu_uart_1 に変更する。
Vitis_Platform_19_191107.png

設定をセーブして、設定画面を終了した。
Vitis_Platform_21_191107.png

エラーが出なかった。PetaLinux 2019.2 から Python 3.6 対応になったようだ。
Vitis_Platform_22_191107.png

カーネルの petalinux-config を行って、設定をしていく。
petalinux-config -c kernel

端末の別タブに設定画面が表示された。
設定を行う。
Device Drivers -> Generic Driver Options -> Size in MB(1024)に変更した。
Vitis_Platform_23_191107.png

Device Drivers -> Staging drivers (ON) はすでにON されていた。

Device Drivers -> Staging drivers -> Xilinx APF Accelerator driver (ON) した。
Vitis_Platform_24_191107.png

Device Drivers -> Staging drivers -> Xilinx APF Accelerator driver -> Xilinx APF DMA engines support (ON)
Vitis_Platform_25_191107.png

CPU Power Management -> CPU idle -> CPU idle PM support (OFF)
Vitis_Platform_26_191107.png

CPU Power Management -> CPU Frequency scaling -> CPU Frequency scaling (OFF)
Vitis_Platform_27_191107.png

設定をセーブして、設定画面を終了した。
Vitis_Platform_28_191107.png

Root FS を設定する。
petalinux-config -c rootfs

Filesystem Packages -> misc -> gcc-runtime -> libstdc++ (ON)
Vitis_Platform_29_191107.png

設定をセーブして、Exit した。
Vitis_Platform_30_191107.png

Ultra96V2_Platform1/project-spec/meta-user/recipes-bsp/device-tree/files ディレクトリの system-user.dtsi を編集した。
Vitis_Platform_31_191107.png

Vitis_Platform_32_191107.png

/include/ "system-conf.dtsi"
/ {
    xlnk {
    compatible = "xlnx,xlnk-1.0";
    };    
};

&sdhci0 {
    disable-wp;
};


プロジェクトをビルドする。
petalinux-build
Vitis_Platform_33_191107.png
  1. 2019年11月09日 06:52 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる1(ハードウェア・コンポーネントの作成)

今回は、Vitis 2019.2 のマニュアルの”Vitis Application Acceleration Development Flow Documentation”の”Embedded Processor Platform Development”をやってみようと思う。ただし、チュートリアルはZCU102 用なので、Ultra96-V2 用に変換してみようと思う。具体的には、PetaLinux 部分は、”SDx 2019.1 のUltra96-V2 用プラットフォームを作る1(DSA ファイルを作成)”からのシリーズのブログ記事を参考にしようと思う。

最初に、”Vitis Embedded Platforms”から Figure: Vitis Embedded Software Development Flow を引用する。
Vitis_Platform_34_191108.png

さて、”Creating the Hardware Component”を参考にしながら、”SDx 2019.1 のUltra96-V2 用プラットフォームを作る1(DSA ファイルを作成)”を参考にしてやっていく。

~/HDL/Ultra96/Vitis_Platform/2019.2/ ディレクトリを作成して、そこに、”SDx 2019.1 のUltra96-V2 用プラットフォームを作る1(DSA ファイルを作成)”で生成した Vivado 2019.1 のプロジェクト・ディレクトリをコピーした。
これをVivado 2019.2 でアップグレードする。
Vitis_Platform_2_191102.png

Vivado 2019.2 で、~/HDL/Ultra96/Vitis_Platform/2019.2/Ultra96V2_Platform1 のプロジェクトを開いた。
Older Project Version ダイアログが開いた。Automatically upgrade to the current version のラジオボタンがクリックされているままで、OK ボタンをクリックした。
Vitis_Platform_3_191102.png

Project Upgraded ダイアログが表示された。Report IP Status ボタンをクリックした。
Vitis_Platform_4_191102.png

IP Status ウインドウが表示された。Upgarede Selected ボタンをクリックして、IP を更新した。
Vitis_Platform_5_191102.png

Upgrade IP ダイアログが表示された。OKボタンをクリックした。
Vitis_Platform_6_191102.png

Upgrade IP ダイアログが表示された。OKボタンをクリックした。
Vitis_Platform_7_191102.png

Generate Output Products ダイアログが表示された。Generate ボタンをクリックした。
Vitis_Platform_8_191102.png

Generate Output Products ダイアログが表示された。OKボタンをクリックした。
Vitis_Platform_9_191102.png

Vivado 2019.2 用に変換された。
Vitis_Platform_10_191102.png

このVivado プロジェクトでは、以下のブログに記した作業がされている。
SDx のUltra96-V2 用プラットフォームを作る2(ブロックデザインの作成)
SDx のUltra96-V2 用プラットフォームを作る2(Platform Hardware Interfacesの宣言)
SDx のUltra96-V2 用プラットフォームを作る3(ビットストリームの生成)
SDx のUltra96-V2 用プラットフォームを作る4(DSA ファイルの生成)

これらの作業は”Creating the Hardware Component”とほとんど同じ作業をしている。ただし、DSA ファイルを出力するのではなく、XSA ファイルを出力する。

Creating the Hardware Component”を参考にTCL コンソールを使用してプロジェクトのプロパティを設定した。
Vitis_Platform_11_191102.png

set_property platform.design_intent.embedded true [current_project]
set_property platform.design_intent.server_managed false [current_project]
set_property platform.design_intent.external_host false [current_project]
set_property platform.design_intent.datacenter false [current_project]
set_property platform.default_output_type "sd_card" [current_project]


Vitis_Platform_12_191102.png

論理合成、インプリメンテーション、ビットストリームの生成を行った。結果を示す。
Vitis_Platform_13_191102.png

Vivado のFile メニューからExport -> Export Hardware... を選択した。

Export Hardware ダイアログ表示された。
Include bitstream にチェックを入れて、OKボタンをクリックした。
overwrite を警告するダイアログが出るが、OK ボタンをクリックした。
Vitis_Platform_14_191105.png

Ultra96V2_Platform1_wrapper.xsa ファイルが出力された。
Vitis_Platform_15_191105.png
  1. 2019年11月08日 05:30 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0
»