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