ultra96v2のembedded platformを作成した話。 VitisのVecaddを動かすまで。 前回の続き。
準備
vitisで使用するlinux_bifとqemu_args.txtとpmu_args.txt
cd <work-dir-path>
mkdir vitis_args
vitis_argsにlinux.bifとqemu_args.txtとpmu_args.txtを保存する。内容は以下の通り。 <>で囲んだファイルはvitisが補完してくれるようだけど、よく問題が出たのでbitstream以外は直接指定することにしている。
linux.bif
##work-dir-path##は環境に合わせて置き換えてください。/* linux */ the_ROM_image: { [fsbl_config] a53_x64 [bootloader] ##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/fsbl-ultra96v2-zynqmp.elf [destination_device=pl] <bitstream> [pmufw_image] ##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/pmu-firmware-ultra96v2-zynqmp.elf [destination_cpu=a53-0, exception_level=el-3, trustzone] ##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/arm-trusted-firmware.elf [load=0x100000] ##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/system.dtb [destination_cpu=a53-0, exception_level=el-2] ##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/u-boot.elf }
qemu_args.txt
system.dtbは2020.1からBOOT.binで書き込むようにしている模様。
##work-dir-path##は環境に合わせて置き換えてください。-M arm-generic-fdt -net nic -net nic -net nic -serial /dev/null -serial mon:stdio -display none -device loader,file=##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/arm-trusted-firmware.elf,cpu-num=0 -device loader,file=<u-boot.elf> -device loader,file=##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/system.dtb,addr=0x100000 -drive file=##work-dir-path##/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/petalinux-image-minimal-ultra96v2ros2-ultra96v2-zynqmp.wic.qemu-sd,if=sd,id=sd0,format=raw,index=0 -boot mode=3 -global xlnx,zynqmp-boot.cpu-num=0 -global xlnx,zynqmp-boot.use-pmufw=true -m 4G
pmu_args.txt
##work-dir-path##は環境に合わせて置き換えてください。-M microblaze-fdt -serial /dev/null -serial /dev/null -display none -device loader,file=##work-dir-path##/build/tmp/deploy/images/ultra96v2-zynqmp/pmu-ultra96v2-zynqmp.elf -device loader,addr=0xfd1a0074,data=0x1011003,data-len=4 -device loader,addr=0xfd1a007C,data=0x1010f03,data-len=4
Platformの作成
ここを参考にplatformを作成していく。 日本語ならこちら。 2020.1ではこのARを実行しないとEmulation-HWのビルドができない。
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
source <path-to-vitis-installation>/2020.1/settings64.sh
cd <work-dir-path>
mkdir vitis_pfm
cd vitis_pfm
mkdir wksp1
vitis -workspace wksp1
create platformを行い、platform名はultra96v2-platform、xsaは
linux domainの設定を以下のように行う。
Bif File: <work-dir-path>/vitis_args/linux.bif
Boot Components Directory:<work-dir-path>/boot
Linux Image Directory:<work-dir-path>/boot
Linux Rootfs:<work-dir-path>/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp/petalinux-image-minimal-ultra96v2ros2-ultra96v2-zynqmp.ext4
Bootmode:SD
Sysroot Directory:<work-dir-path>/sdk/sysroots/aarch64-xilinx-linux
QEMU Data:<work-dir-path>/petalinux/build/tmp/deploy/images/ultra96v2-zynqmp
QEMU Arguments:<work-dir-path>/vitis_args/qemu_args.txt
PMU QEMU Arguments:<work-dir-path>vitis_args/pmu_args.txt
platformをbuildする。方法は上記ページを参照のこと。
Platformのテスト
ここを参考にplatformのテストを行う。 日本語ならこちら。
application project nameはvecaddとした。 途中、Kernel Imageが空欄となっているので、
Emulation-SW
まずはEmulation-SWをLaunch on EmulatorとLaunch on Hardwareで試す。 Emulation-SWを右クリックで選択し、Buildを実行する。
その後Emulation-SWを右クリックで選択し、Run->Launch On Emulatorを実行する。
Launch on Emulator 実行結果
Launch on HardwareではSDを作成する必要がある。 SDは以下の通り作成する。
cd <work-dir-path>/vitis_pfm/wksp1/vecadd/Emulation-SW/package
dd if=sd_card.img of=/dev/sdX
上記のsd_card.imgにはBOOT.binが含まれていないので、
SDをultra96v2に挿入し、電源をONする。 しばらく待っているとWifiのアクセスポイントが見えて来るので、これに接続する。
Lunch Target Connectionで実機に接続できるように設定を行う。 ultra96v2のwifi APはデフォルトで192.168.2.1のIPを持っているので、以下のように設定する。 ultra96v2が起動していればTest Connectionで接続を確認できる。
Launch Target Connection
Target Connectionsの+ボタンから設定を追加する。
その後Emulation-HWを右クリックで選択し、Run->Launch On Hardwareを実行する。
Launch on Hardware 実行結果
省略
Emulation-HW
Launch on Emulatorでは理由は不明だが、Launch on Emulatorを実行するとQEMUのプロセスが停止したままとなる。 恐らくはVivado Simulatorからの接続待ちなのではないかと思っているけど、 どうしても使用したいわけでもないのでツールのバージョンアップに期待する。 ここでは実機との組み合わせで動かしてみる。
SDの準備はEmulation-HWのものを使用する他はEmulation-SWと同じ。 すでにEmulation-SWをLaunch on Hardwareで実行している場合にはbinary_container_1.xclbinとvecaddを差し替えるだけで良い(はず。あまり自信が無い)。 scpで/media/sd-mmcblk0p1に送り込むのが便利。Vitisが勝手にやってくれるかもしれないけど。
あと、Vivado simが動いていないように見えるのも気になる。これのやり方合ってるのだろうか?
Launch on Hardware 実行結果
Hardware
Hardwareを右クリックしてBuildする。 SDの準備はHardwareのものを使用する他はEmulation-SWと同じ。 その後Hardwareを右クリックで選択し、Run->Launch On Hardwareを実行する。
Launch on Hardware実行結果
0 件のコメント:
コメントを投稿