本篇博客介紹 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ī)視覺功能提供了一個(gè)軟件接口。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 對(duì)象后,通過v++ 鏈接為完整的硬件工程并生成 xclbin 文件。完整的硬件框圖如下圖所示,紅框部分為對(duì)應(yīng)的 HLS kernel。
Kernel 調(diào)用:
使用 VVAS 框架為 xf_pp_pipeline.cpp 編寫自定義驅(qū)動(dòng)是要實(shí)現(xiàn)四個(gè)函數(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í)檢測(cè)。
通過這四個(gè)函數(shù)就完成了 VVAS 自定義插件的設(shè)計(jì)。在 smartcam 應(yīng)用運(yùn)行時(shí),通過命令行 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)容為:
本文簡(jiǎn)要介紹了 VVAS 調(diào)用 HLS 生成的硬件加速器的主要流程,更多的細(xì)節(jié)可以參考 VVAS 手冊(cè)。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1629文章
21750瀏覽量
604108 -
amd
+關(guān)注
關(guān)注
25文章
5470瀏覽量
134264 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1375瀏覽量
40313 -
硬件加速器
+關(guān)注
關(guān)注
0文章
42瀏覽量
12812 -
Vitis
+關(guān)注
關(guān)注
0文章
146瀏覽量
7450
原文標(biāo)題:開發(fā)者分享|使用 VVAS 調(diào)用硬件加速器
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論