本篇博客介紹 VVAS 框架所支持調(diào)用的 H/W(HLS) 內(nèi)核。 H/W 內(nèi)核指的是使用 HLS 工具生成的在 FPGA 部分執(zhí)行的硬件功能模塊。
HLS kernel 創(chuàng)建:
我們以 smartcam 的預(yù)處理作為例子,相關(guān)的代碼可以在參考鏈接中找到。xf_pp_pipeline 的作用是將輸入圖像的格式從 NV12 轉(zhuǎn)換為 BGR,再進(jìn)行減均值和歸一化操作。xf_pp_pipeline 的實(shí)現(xiàn)基于 HLS vision library。Vitis 視覺庫是為在 Vitis 開發(fā)環(huán)境中工作而設(shè)計(jì)的,它為在 FPGA 設(shè)備上加速的計(jì)算機(jī)視覺功能提供了一個軟件接口。Vitis 視覺庫的功能大多與 OpenCV 的功能相似。更多的詳細(xì)說明可以在參考鏈接中找到。
xf_pp_pipeline_accel.cpp 作為硬件的一部分,需要將它和 platform 結(jié)合在一起。v++ 將 HLS kernel 打包為 xo 文件用于后續(xù)的硬件集成。
kv260_ispMipiRx_vcu_DP 是 smartcam 應(yīng)用使用的 platform,xf_pp_pipeline.cpp 打包成 xo 對象后,通過v++ 鏈接為完整的硬件工程并生成 xclbin 文件。完整的硬件框圖如下圖所示,紅框部分為對應(yīng)的 HLS kernel。
Kernel 調(diào)用:
使用 VVAS 框架為 xf_pp_pipeline.cpp 編寫自定義驅(qū)動是要實(shí)現(xiàn)四個函數(shù),分別是:
xlnx_kernel_start
xlnx_kernel_done
xlnx_kernel_init
xlnx_kernel_deinit
xlnx_kernel_init() 函數(shù)讀取 json 文件中的 mean_r、mean_g、mean_b、scale_r、scale_g、scale_b。
xlnx_kernel_start() 函數(shù)為 HLS kernel 配置參數(shù)。
xlnx_kernel_deinit() 函數(shù)用來釋放不需要的句柄。
xlnx_kernel_done() 函數(shù)進(jìn)行超時檢測。
通過這四個函數(shù)就完成了 VVAS 自定義插件的設(shè)計(jì)。在 smartcam 應(yīng)用運(yùn)行時,通過命令行 gst-launch-1.0 -v filesrc XXXXXX ! queue ! vvas_xmultisrc kconfig="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json" ! XXXXXX 完成插件的調(diào)用。
其中 preprocess.json 的內(nèi)容為:
本文簡要介紹了 VVAS 調(diào)用 HLS 生成的硬件加速器的主要流程,更多的細(xì)節(jié)可以參考 VVAS 手冊。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1630文章
21796瀏覽量
605803 -
amd
+關(guān)注
關(guān)注
25文章
5490瀏覽量
134598 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1382瀏覽量
40412 -
硬件加速器
+關(guān)注
關(guān)注
0文章
42瀏覽量
12835 -
Vitis
+關(guān)注
關(guān)注
0文章
147瀏覽量
7494
原文標(biāo)題:開發(fā)者分享|使用 VVAS 調(diào)用硬件加速器
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論