FC2カウンター FPGAの部屋 Vitis_Accel_Examples の hello_world サンプルをUltra96V2 のプラットフォームでやってみる5
FC2ブログ

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

FPGAの部屋

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

Vitis_Accel_Examples の hello_world サンプルをUltra96V2 のプラットフォームでやってみる5

Vitis_Accel_Examples の hello_world サンプルをUltra96V2 のプラットフォームでやってみる4”の続き。

前回は、Xilinx/Vitis_Accel_Exampleshello_world サンプルをビルドしてできたsd_card の内容をSDカードの第1パーティションに書き込み、sysroot の aarch64-xilinx-linux ディレクトリの内容をSDカードの第2パーティションに書き込んでできたSDカードをUltra96V2 に挿れたところLinux が起動した。しかし、hello_world サンプルは実行できなかった。今回は、その原因を追求し、、hello_world サンプルを動作させることができた。

hello_world サンプルが動作しない原因を探っていたのだが、ツィッターで @ciniml さんから zocl ドライバが入っていないという指摘をしていただいたので、調べたところ、aarch64-xilinx-linux ディレクトリ(Root File System)の lib/modules/4.19.0-xilinx-v2019.2/extra ディレクトリに zocl.ko があることが分かった。これをロードする必要がありそうだ。
Vitis_Accel_Examples_33_191121.png

Ultra96V2 の Linux を起動して、/sys/devices/platform/amba ディレクトリに行ったところ、デバイスツリーに入っていると思われるデバイスが並んでいて、その中に a0000000.zyxclmm_drm があった。
Vitis_Accel_Examples_32_191121.png

ここで、zocl ドライバを insmod でロードした。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko
そうすると、a0000000.zyxclmm_drm の中のファイルが増えた。
Vitis_Accel_Examples_34_191121.png

ログを示す。

root@ultra96v2_min:/sys/devices/platform/amba/a0000000.zyxclmm_drm# insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko 
[  261.956918] zocl: loading out-of-tree module taints kernel.
[  261.966193] [drm] Probing for xlnx,zocl
[  261.970113] [drm] FPGA programming device pcap founded.
[  261.975331] [drm] PR Isolation addr 0x0
[  261.977830] [drm] Initialized zocl 2018.2.1 20180313 for a0000000.zyxclmm_drm on minor 1
root@ultra96v2_min:/sys/devices/platform/amba/a0000000.zyxclmm_drm# ls 
connectivity  driver_override  kds_custat memstat      of_node uevent
debug_ip_layout  drm    kds_numcus memstat_raw  power xclbinid
driver   ip_layout   mem_topology modalias     subsystem


次に第1パーティションに行って、hello_world サンプルを実行した。
cd /run/media/mmcblk0p1/
export XILINX_XRT=/usr
./init.sh

Vitis_Accel_Examples_35_191121.png

Vitis_Accel_Examples_36_191121.png

Device[0]: program successful!
TEST PASSED

なので、成功した。
hello_world サンプルの host.cpp を見ても、TEST PASSED か TEST FAILED を表示する仕様のようだ。
Xilinx/Vitis_Accel_Exampleshello_world サンプルの src ディレクトリの host.cpp の一部を引用する。
Vitis_Accel_Examples_37_191121.png

これで、多少疑問点もあるが、Vitis でUltra96-V2 のアクセラレーション・プラットフォームを作成して、Ultra96-V2 のVitis アクセラレーション・プラットフォームを使用して、Xilinx/Vitis_Accel_Exampleshello_world サンプルを動作させることができた。
とっても嬉しい。。。

最後に init.sh を起動した時のログを貼っておく。

root@ultra96v2_min:/run/media/mmcblk0p1# ./init.sh 
[  508.084360] [drm] Pid 2202 opened device
[  508.088315] [drm] Pid 2202 closed device
[  508.103272] [drm] Pid 2202 opened device
Found Platform
Platform Name: Xilinx
INFO: Reading ./build_dir.hw.ultra96v2_min/vadd.xclbin
Loading: './build_dir.hw.ultra96v2_min/vadd.xclbin'
Trying to program device[0]: edge
[  508.425398] [drm] Finding IP_LAYOUT section header
[  508.425410] [drm] Section IP_LAYOUT details:
[  508.430222] [drm]   offset = 0x54fcf8
[  508.434485] [drm]   size = 0x58
[  508.438146] [drm] Finding DEBUG_IP_LAYOUT section header
[  508.441275] [drm] AXLF section DEBUG_IP_LAYOUT header not found
[  508.446582] [drm] Finding CONNECTIVITY section header
[  508.452495] [drm] Section CONNECTIVITY details:
[  508.457539] [drm]   offset = 0x54fd50
[  508.462060] [drm]   size = 0x28
[  508.465713] [drm] Finding MEM_TOPOLOGY section header
[  508.468850] [drm] Section MEM_TOPOLOGY details:
[  508.473891] [drm]   offset = 0x54fc00
[  508.478414] [drm]   size = 0xf8
[  508.483568] [drm] No ERT scheduler on MPSoC, using KDS
[  508.492196] [drm] Fail to install CU 0 interrupt handler: -22. Fall back to polling mode.
[  508.500373] [drm] scheduler config ert(0)
[  508.500376] [drm]   cus(1)
[  508.504376] [drm]   slots(16)
[  508.507076] [drm]   num_cu_masks(1)
[  508.510038] [drm]   cu_shift(16)
[  508.513510] [drm]   cu_base(0xa0000000)
Device[0]: program successful!
TEST PASSED
[  508.516728] [drm]   polling(1)
[  508.533040] [drm] zocl_free_userptr_bo: obj 0x00000000477b200d
[  508.536152] [drm] zocl_free_userptr_bo: obj 0x00000000e86ec7cd
[  508.542003] [drm] zocl_free_userptr_bo: obj 0x0000000073e8a3a0
[  508.604948] [drm] Pid 2202 closed device

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

コメント

コメントの投稿


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

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