怎样将Xilinx的xfOpenCV库移植到ZedBoard平台

xfOpenCV 是Xilinx针对Opencv做的一个加速库,目前只在支持reVISION的ZCU102平台上做过评估,哪假如其他平台想要使用这个库,我们应该怎么做呢?下面以ZedBoard为例来细说这个过程,由于我的系统是Linux,所以这里主要以命令行的方式来操作。

1、 正确安装Xilinx2017.1,详细过程这里不再赘述

2、下载zcu102_es2_reVISION包,并解压到相应工作目录下,打开命令行输入命令:

export  SYSROOT= ${zcu102_es2_reVISION_path}/sw/aarch64-linux-gnu/sysroot  

3、下载xfOpencv库,输入命令: 

 git clone https://github.com/Xilinx/xfopencv.git   

4、进入xfopencv/examples目录:cd  xfopencv/examples ,该目录的每一个文件夹都是一个加速示例,部分如下所示:

怎样将Xilinx的xfOpenCV库移植到ZedBoard平台_第1张图片

5、进入其中一个示例,如: cd  accumulate,该目录文件结构如下所示:


6、修改Makefile文件,把变量PLATFORM修改成  PLATFORM = zed  ,保存修改

7、输入命令:make 

如果出现“/bin/sh: 1: sds++: not found” 这个错误,说明没有把sds++这个命令加入到环境变量中,手动加一下即可,如:source  ${your_xilinx2017.1_path}/sdsoc/SDx/2017.1/settings64.sh 。

如果出现“zcu102_es2_reVISION/sw/aarch64-linux-gnu/sysroot/usr/lib/crt1.o: file not recognized: 不可识别的文件格式” 错误,说明平台是不兼容的,因为zcu102的arm处理器Cortex-A53,64位架构,而ZedBoard的arm处理器是Cortex-A9,32位架构,所以需要把${zcu102_es2_reVISION_path}/sw/aarch64-linux-gnu/sysroot/usr/lib/  和 ${zcu102_es2_reVISION_path}/sw/aarch64-linux-gnu/sysroot/usr/lib下所需要用到的库换成32版本的即可。简单做法如下:

1)cd ${zcu102_es2_reVISION_path}/sw/aarch64-linux-gnu/sysroot/

2)cp -r lib lib64 ;  cd lib

3)cp -r  {yout_xilinx2017.1_path}/sdsoc/SDx/2017.1/SDK/gnu/aarch32/lin/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/libc/lib*  .

4)cd ../usr

5)cp -r lib lib64 ; cd lib

6)cp -r {yout_xilinx2017.1_path}/sdsoc/SDx/2017.1/SDK/gnu/aarch32/lin/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/libc/usr/lib*  .

7)opencv相应的动态链接库也是64位,因此需要手动生成32位版本的,具体做法参考 http://blog.csdn.net/luotuo44/article/details/8958990

8)将opencv重新生成32位的动态链接库copy过来即可

做完上述修改之后重新编译即可,有个问题需要注意的是,在Makefile文件中,LLIBS变量指定很多链接库(所有示例中这个变量的值都一样,估计是为了偷懒),如“LLIBS = -lopencv_imgcodecs -lopencv_core -llzma -ltiff -lpng16 -lz -ljpeg -lopencv_imgproc -ldl -lrt -lwebp -lopencv_features2d -lopencv_flann ” ,但在本示例中“LLIBS= -lopencv_core -lopencv_imgproc -lopencv_imgcodecs -ldl ” 即可 ,这样可以不用将其他一些不需要的库都转成32位的才能通过编译。

8、将生成的sd_card的所有文件和相关的动态链接库拷贝到sdcard,然后进行测试。    

你可能感兴趣的:(怎样将Xilinx的xfOpenCV库移植到ZedBoard平台)