本篇博客介绍 VVAS 框架所支持调用的 H/W(HLS) 内核。 H/W 内核指的是使用 HLS 工具生成的在 FPGA 部分执行的硬件功能模块。
HLS kernel 创建:
我们以 smartcam 的预处理作为例子,相关的代码可以在参考链接中找到。xf_pp_pipeline 的作用是将输入图像的格式从 NV12 转换为 BGR,再进行减均值和归一化操作。xf_pp_pipeline 的实现基于 HLS vision library。Vitis 视觉库是为在 Vitis 开发环境中工作而设计的,它为在 FPGA 设备上加速的计算机视觉功能提供了一个软件接口。Vitis 视觉库的功能大多与 OpenCV 的功能相似。更多的详细说明可以在参考链接中找到。
xf_pp_pipeline_accel.cpp 作为硬件的一部分,需要将它和 platform 结合在一起。v++ 将 HLS kernel 打包为 xo 文件用于后续的硬件集成。
kv260_ispMipiRx_vcu_DP 是 smartcam 应用使用的 platform,xf_pp_pipeline.cpp 打包成 xo 对象后,通过v++ 链接为完整的硬件工程并生成 xclbin 文件。完整的硬件框图如下图所示,红框部分为对应的 HLS kernel。
Kernel 调用:
使用 VVAS 框架为 xf_pp_pipeline.cpp 编写自定义驱动是要实现四个函数,分别是:
xlnx_kernel_start
xlnx_kernel_done
xlnx_kernel_init
xlnx_kernel_deinit
xlnx_kernel_init() 函数读取 json 文件中的 mean_r、mean_g、mean_b、scale_r、scale_g、scale_b。
xlnx_kernel_start() 函数为 HLS kernel 配置参数。
xlnx_kernel_deinit() 函数用来释放不需要的句柄。
xlnx_kernel_done() 函数进行超时检测。
通过这四个函数就完成了 VVAS 自定义插件的设计。在 smartcam 应用运行时,通过命令行 gst-launch-1.0 -v filesrc XXXXXX ! queue ! vvas_xmultisrc kconfig="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json" ! XXXXXX 完成插件的调用。
其中 preprocess.json 的内容为:
本文简要介绍了 VVAS 调用 HLS 生成的硬件加速器的主要流程,更多的细节可以参考 VVAS 手册。
审核编辑:汤梓红
-
FPGA
+关注
关注
1629文章
21729浏览量
602971 -
amd
+关注
关注
25文章
5466浏览量
134083 -
内核
+关注
关注
3文章
1372浏览量
40275 -
硬件加速器
+关注
关注
0文章
42浏览量
12763 -
Vitis
+关注
关注
0文章
146浏览量
7421
原文标题:开发者分享|使用 VVAS 调用硬件加速器
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论