IMX6Q的硬编码(VPU)的工程代码移植

发布于:2023-01-20 ⋅ 阅读:(173) ⋅ 点赞:(0)

IMX6Q的硬编码(VPU)的简化代码移植

简介

在上一篇的文章中,我将imx-vpu的代码实现了编译在开发板的运行过程进行了介绍。但是利用上述代码进行修改和移植却存在较大的难度,也有网友进行了移植,参考连接:
https://blog.csdn.net/mr_zhaojy/article/details/104822264
https://blog.csdn.net/qq_30659437/article/details/109273756
正如NXP社区其中一个老外的话:"Forget about mxc-test and just use gstreamer. "。mxc_test例程好用,但是要分离出你需要的,确实很麻烦。(引用话语)
基于此,NXP的官方也给出了更为简洁的代码引用的方式,即imx-vpuwrap。利用imx-vpuwarp可以很好的进行VPU图像编码的移植,因为他将文件的输入输出流变得非常简单明了。直接参考示例代码,变能很好的进行代码嵌入和移植。

imx-vpuwrap的代码下载与编译

代码的下载

imx-vpuwrap代码的下载,也可以参考VPU库文件的下载方式,同样是在构建根文件系统下的yocto文件夹下的downloads,./imx-vpuwrap-1.0.68.bin,运行bin文件后,可以生成文件夹imx-vpuwrap-1.0.68,
在这里插入图片描述
在这里插入图片描述

代码的编译

首先需要配置开发环境,将开发的环境变量进行设置,完成设置后,同时将库文件 libvpu.a libvpu.so libvpu.so.4和头文件 vpu_io.h 和 vpu_lib.h拷贝到--sysroot目录下的usr/libusr/include ,然后参考install中的安装方法进行配置和编译安装。配置时注意采用 ./configure --host = arm-poky-linux-gnueabi --prefix = /opt/libvpuwrap
在这里插入图片描述
之后就是make make install 编译后会生成libfslvpuwrap.a libfslvpuwrap.so libfslvpuwrap.so.3 libfslvpuwrap.so.3.0.0以及对应的头文件vpu_wrapper.h至此完成了改工程文件的安装。
接下来就是看提供的示例代码了。
在这里插入图片描述

示例代码的研读

示例代码的编译需要对makefile文件进行修改,主要是配置gcc编译器,目前编译会遇到error: lib/lib_vpu_wrapper.so uses VFP register arguments, vpu_wrapper_timer.o does not的错误,此种错误是由于arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi中的 -mfloat-abi=hard主要是关于浮点运算,采用硬浮点运算。但是我这边也只成功编译了test_dec_arm_elinuxtest_enc_arm_elinux
在这里插入图片描述
在这里插入图片描述
将编译成功的代码拷贝到开发板中,直接运行。
在这里插入图片描述

示例代码的移植

本文含有隐藏内容,请 开通VIP 后查看