FC2カウンター FPGAの部屋 2020年04月25日
FC2ブログ

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

FPGAの部屋

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

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成3(ソフトウェア・コンポーネント編)

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成2(ハードウェア・コンポーネント編)”の続き。

前回は、Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネントを作成した。今回は、Vitis アクセラレーション・プラットフォームのソフトウェア・コンポーネントを作成しよう。

Vitis アクセラレーション・プラットフォームのソフトウェア・コンポーネントの作り方は”Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方2(ソフトウェア・コンポーネント編)”を参考にする。引用文献もそのまま引き継ぐこととする。

PetaLinux 2019.2 の環境設定を行った。
source [PetaLinux 2019.2 インストール・ディレクトリ].settings.sh
を実行していなようだったら実行しておく。

PetaLinux プロジェクトの作成
実行ディレクトリ(私の場合は /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2019.2 ディレクトリ)で PetaLinux のプロジェクトを作成する。(ハードウェア・コンポーネントとの名前の一致が必要なので、プロジェクト名は ultra96v2_cam_dp とする)
プロジェクトを作成したら ultra96v2_cam_dp ディレクトリに入る。
cd /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2019.2
petalinux-create --type project --template zynqMP --name ultra96v2_cam_dp
cd ultra96v2_cam_dp

ultra96v2_cam_dp_25_200424.png

petalinux-config でハードウェア・コンポーネントの情報を取り込む。
petalinux-config --get-hw-description=[XSAファイルのあるディレクトリのパス]
私の場合は、/home/masaaki/HDL/Ultra96/Ultra96V2/cam_dp_V2_192_cam_dp
petalinux-config --get-hw-description=/home/masaaki/HDL/Ultra96/Ultra96V2/cam_dp_V2_192_cam_dp

Image Packaging Configuration -> Root filesystem type で EXT (SD/eMMC/QSPI/SATA/USB) を選択した。
< Exit >を選択して上の階層に行く。
ultra96v2_cam_dp_26_200424.png

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

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

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
ultra96v2_cam_dp_29_200424.png

Linux カーネルの設定
カーネルの petalinux-config を行って、設定をしていこう。
petalinux-config -c kernel
を実行する。
ultra96v2_cam_dp_30_200424.png

Device Drivers -> Generic Driver Options -> Size in MB(1024)に変更した。
ultra96v2_cam_dp_31_200424.png

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

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

CPU Power Management -> CPU idle -> CPU idle PM support (OFF)
(CPU idle や周波数が変わると面倒なことになるので、OFF したほうが良い。モバイル用途で電池の持ちを気にする場合は別途設定しよう)
ultra96v2_cam_dp_34_200424.png

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

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
ultra96v2_cam_dp_36_200424.png

rootfs の設定
rootfs を設定する前に、rootfs に XRT を組み込む。
ultra96v2_cam_dp/project-spec/meta-user/conf/user-rootfsconfig を編集する。

CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv


を追加した。
ultra96v2_cam_dp_37_200424.png

ultra96v2_cam_dp_38_200424.png

#Note: Mention Each package in individual line
#These packages will get added into rootfs menu entry

CONFIG_gpio-demo
CONFIG_peekpoke
CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv


/project-spec/meta-user/recipes-bsp/device-tree/files ディレクトリの system-user.dtsi を編集した。その際に、zoclドライバを含めた。
ultra96v2_cam_dp_39_200424.png

ultra96v2_cam_dp_40_200424.png

/include/ "system-conf.dtsi"
/ {
};

&amba {
    zyxclmm_drm {
        compatible = "xlnx,zocl";
        status = "okay";
    };
};

&sdhci0 {
    disable-wp;
};


rootfs の設定
rootfs を設定する。
petalinux-config -c rootfs

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

追加した user packages をすべて有効にする。
ultra96v2_cam_dp_42_200424.png

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
ultra96v2_cam_dp_43_200424.png

PetaLinux プロジェクトのビルド
今まで設定してきたPetaLinux プロジェクトをビルドする。
petalinux-build
ultra96v2_cam_dp_44_200424.png

ultra96v2_cam_dp_45_200424.png

ultra96v2_cam_dp/images/linux ディレクトリにファイルがビルドされている。
ultra96v2_cam_dp_46_200424.png

ultra96v2_cam_dp/images/linux ディレクトリの下に pkg ディレクトリを生成する。その下に pfm ディレクトリを生成する。その下に boot 、 wksp1 ディレクトリを生成する。
ultra96v2_cam_dp_47_200424.png

pkg/pfm/boot ディレクトリには、ultra96v2_cam_dp/image/linux にビルドされたファイルの中から bl31.elf, image_ub, pmufw.elf, u-boot.elf, zynqmp_fsbl.elf, system.dtb をコピーした。
ultra96v2_cam_dp_48_200424.png

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

ultra96v2_cam_dp_49_200424.png

sdk.sh が生成された。
ultra96v2_cam_dp_50_200424.png

sdk.sh を実行して、 sysroot を生成する。
./sdk.sh

SDK の target directory を入力した。(/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2019.2/ultra96v2_cam_dp/images/linux/pkg/pfmと入力した)
ultra96v2_cam_dp_51_200424.png

pkg/pfm/sysroot ディレクトリの下に、aarch64-xilinx-linux ディレクトリと x86_64-petalinux-linux ができた。
ultra96v2_cam_dp_52_200424.png

ここに生成されたのは rootfs だ。

linux.bif の作成
linux.bif を作成する。
エディタに”Creating the Software Component”の linux.bif の内容をコピー&ペーストした。
ultra96v2_cam_dp_53_200424.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>
 }


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

参考文献
(1). Vitis Unified Software Development Platform Documentation, Embedded Processor Platform Development,
Creating the Software Component
(2). Xilinx/SDSoC-Tutorialsplatform-creation-tutorial/
(3). Building Custom SDSoC Platform with PetaLinux
(4). Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)
(5). Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)
  1. 2020年04月25日 05:05 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0