FC2カウンター FPGAの部屋 Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方2(ソフトウェア・コンポーネント編)
FC2ブログ

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

FPGAの部屋

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

Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方2(ソフトウェア・コンポーネント編)

Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方(ハードウェア・コンポーネント編)”の続き。

Ultra96-V2 の Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネント編の続きで、ソフトウェア・コンポーネント編をやっていこう。
私の使用環境はUbuntu 18.04 となっている。

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

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

Vitis_Platform2_33_191130.png

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

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

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

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

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

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

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

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

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

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

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

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

rootfs の設定
rootfs を設定する前に、rootfs に XRT を組み込む。
ultra96v2_min2/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

を追加した。
Vitis_Platform2_47_191130.png

Vitis_Platform2_44_191130.png

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

CONFIG_gpio-demo
CONFIG_peekpoke
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の無線LANドライバのデバイスツリーも含めたが、うまく行かなかったので、今後の課題とするので、情報がある方、お知らせください)
Vitis_Platform2_45_191130.png

Vitis_Platform2_46_191130.png

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

    wlcore: wilc_sdio@0  {
        compatible    = "microchip,wilc1000", "microchip,wilc3000";
        status        = "okay";
    };
};

&amba {
    zyxclmm_drm {
        compatible = "xlnx,zocl";
        status = "okay";
        reg = <0x0 0xA0000000 0x0 0x10000>;
    };
};

&sdhci0 {
    disable-wp;
};



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

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

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

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

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

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

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

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

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

Vitis_Platform2_55_191130.png

エラーが出ているが、 x86 のエラーなのか? successfully でビルドできてしまった?

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

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

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

Vitis_Platform2_58_191130.png

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

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

linux.bif の作成
linux.bif を作成する。
エディタに”Creating the Software Component”の linux.bif の内容をコピー&ペーストした。
Vitis_Platform2_60_191130.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_min2_pkg ディレクトリ上に linux.bif としてセーブした。
Vitis_Platform2_61_191130.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. 2019年12月01日 05:51 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4718-bfc4d372
この記事にトラックバックする(FC2ブログユーザー)