Ne10是一个单独的开源库,可以把它直接嵌入到工程里面去(目前支持linux,android,ios),直接调用里面的函数。Ne10已实现一些接口,可分为4个模块:dsp、math、imgproc、physics。比如dsp中目前就已封装了fft,fir,irr算法函数接口,用户直接调用这些接口函数就可以实现相应算法。Ne10中的所有接口函数既有基于neon实现又有基于c语言实现,这样保证了Ne10库的可移植性。当平台支持neon时,则调用neon函数,否则调用c函数。
可以从Ne10的网站(http://projectne10.github.io/Ne10/)下载整个项目工程。
项目文档在(http://projectne10.github.io/Ne10/doc/),包含各个函数的使用说明。
详细的编译方法在Ne10的doc目录下的BuildingNe10.txt文件中有详细说明。嵌入式linux平台的编译方法在Unix platforms的CROSS-COMPILING部分。在CmakeLists.txt文件中的一些option()代码中,可以控制一些宏的开关。我使用的交叉编译工具是arm-none-linux-gnueabi,在编译中碰到一个问题。使用4.8.1版本编译工具编译Ne10没有问题,能够编译出静态库libNE10.a和动态库libNE10.so.10。但是在使用4.6.1版本编译Ne10时就会出错,目前原因尚不清楚。
在自己的项目中使用Ne10时,要在代码中include “NE10.h”。并把Ne10的inc目录中的几个.h文件添加到自己项目的头文件目录中(以保证软件编译通过)。使用动态库调用方式时,要先将libNE10.so.10软链接为libNE10.so,然后向makefile添加动态库的-L链接命令(以保证软件链接通过)。同时在嵌入式机器的文件系统的/usr/lib目录中加入动态库libNE10.so.10(以保证项目软件运行时能找到动态库)。在调用Ne10的接口函数之前一定要先调用ne10_init()来初始化Ne10的接口函数,在这里Ne10就会查询当前平台是否支持neon,从而选择初始化neon函数还是c函数。