当前位置: 首页 > 工具软件 > Ne10 > 使用案例 >

ZYNQ-NE10安装与编译

巫马欣嘉
2023-12-01

Ne10介绍

Ne10是一个通用开源的函数库里面提供了大量的浮点运算、矢量计算,和矩阵操作函数,并针对配备NEON SIMD功能ARM的CPU进行了大量优化。允许通过静态或动态链接轻松集成到各种应用程序中。
目前支持平台:

linux,android,ios。

Ne10目前有四个模块:

1、(信号处理)DSP 包含常用的FFT FIR IIR等函数
2、(数学计算)Math
3、(图像处理)ImgprocI
4、physics


Ne10库的安装

下载地址:Ne10库-官网


配置编译器

在/etc/bash.bashrc中添加如下:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
export PATH=/个人交叉编译器路径/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabi/bin/:$PATH

运行source /etc/bash.bashrc,使其生效。
同时修改GNUlinux_config.cmake下的编译器选项,根据自己的编译器进行修改,因为自己的编译器并不是硬浮点编译器,所以将下方标记的去掉hf。

set(GNULINUX_PLATFORM ON)

if(NOT DEFINED ENV{NE10_LINUX_TARGET_ARCH})
   set(NE10_LINUX_TARGET_ARCH "armv7")
else()
   set(NE10_LINUX_TARGET_ARCH $ENV{NE10_LINUX_TARGET_ARCH})
endif()

if(NE10_LINUX_TARGET_ARCH STREQUAL "armv7")
   set(CMAKE_C_COMPILER arm-linux-gnueabi-gcc)//去掉hf
   set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++)//去掉hf
   set(CMAKE_ASM_COMPILER arm-linux-gnueabi-as)//去掉hf
   find_program(CMAKE_AR NAMES "arm-linux-gnueabihf-ar")
   find_program(CMAKE_RANLIB NAMES "arm-linux-gnueabihf-ranlib")
elseif(NE10_LINUX_TARGET_ARCH STREQUAL "aarch64")
   set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
   set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
   set(CMAKE_ASM_COMPILER aarch64-linux-gnu-as)
   find_program(CMAKE_AR NAMES "aarch64-linux-gnu-ar")
   find_program(CMAKE_RANLIB NAMES "aarch64-linux-gnu-ranlib")
endif()

mark_as_advanced(CMAKE_AR)
mark_as_advanced(CMAKE_RANLIB)

编译命令

cd $NE10_PATH
mkdir build && cd build 
export NE10_LINUX_TARGET_ARCH=armv7
cmake -DCMAKE_TOOLCHAIN_FILE=../GNUlinux_config.cmake .. 
make

编译结果

编译得到:

./modules/libNE10.a(库文件)、
./samples/NE10_test_static(测试程序)、
./test/N个测试文件


使用方法

在代码中需要include头文件如下:

#include "./inc/NE10.h"

在交叉编译时的命令如下:

arm-linux-gnueabi-gcc  test.c -mfpu=neon -L. -lNE10 -lm
 类似资料: