yangzhang我想在CORTEX A5(飞思卡尔的VYBRID处理器)用NE10,不过我的操作系统是MQX,请问NE10可以在DS-5的ARMCC下使用吗?
目的是想用FFT,请问有其他的库可以用吗?
这个问题@一下 yangzhang
Hello Pwwzlxz,
你好,yangzhang 回你在:
Ne10库入门 那个贴里了,你可以看看
Best Regards,
Ben
yangzhang
您好:
感谢支持!
我的平台是:
VYBRID处理器(只使用A5核心)
ARM DS-5开发环境
MQX操作系统或者不带操作系统
能不能给我更明确一点的提示,我还有以下疑问
1.在DS-5下编译NE10是不是只能使用GCC的编译器?
2.我看到GCC的编译器在我的机器有:
ARM Complier 5(DS-5 built-it)
ARM Complier 6(DS-5 built-it)
GCC 4.x[arm-linux-gnueabihf](DS-5 built-it)
GCC 4.9.3[arm-none-eabi](后来安装)
请问以上编译器我该用那个?
3.我其他部分程序用ARM Complier 5(DS-5 built-it)编译,可以调用GCC编译的库吗?
4.另外我只使用FFT算法,FFT长度固定,且内存有限希望内存不要动态申请,这个要怎么解决?
如果你只想用FFT的话,请参考如下
现在FFT有两个版本的代码,针对ARMv7使用汇编版本的性能更好,针对ARMv8 64-bit使用Intrinsics的版本性能更好。
汇编版本只支持gcc,ARM CC的话,需要你自己转换伪指令。 intrinsics版本可以使用任何编译器
如果是汇编版本的话,我觉得应该用GCC 4.x[arm-linux-gnueabihf](DS-5 built-it),我不确定这个GCC 4.9.3[arm-none-eabi](后来安装)是不是能用。
应该是可以的,具体的编译选项要试一下
完全可以的,我们现在需要的内存是factor, twiddles和中间结果缓存temp_buffer。这些都是可以你自己定制的,但是在init的时候你需要做一些改动。
factor和twiddlles 可以提前分配好。在真正执行FFT运算前,传递进去就好。
temp_buffer可以由input buffer来充当,但是input buffer的内容会被破坏,看你的实际需求来安排。
感谢您的支持!
我按您在Ne10库入门 那里的方法试了一下。实验步骤如下:
1。解压Ne10-1.2.0.zip到F:\testcmake最终CMakeLists.txt所在目录为F:\testcmake\Ne10-1.2.0\Ne10-1.2.0
2.编辑config.cmake文件放到与CMakeLists.txt相同的目录,文件内容如下:
set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc )
set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )
set( CMAKE_ASM_COMPILER arm-linux-gnueabihf-as )
find_program(CMAKE_AR NAMES "arm-linux-gnueabihf-ar")
mark_as_advanced(CMAKE_AR)
find_program(CMAKE_RANLIB NAMES "arm-linux-gnueabihf-ranlib")
mark_as_advanced(CMAKE_RANLIB)
3.增加环境变量到PATH:C:\Program Files (x86)\CMake\bin;C:\Program Files\DS-5\sw\gcc\bin
4.进入CMD命令模式(管理员模式运行)
5.输入:cmake -DCMAKE_TOOLCHAIN_FILE=../config.cmake ..
得到如下错误结果:
F:\testcmake\Ne10-1.2.0\Ne10-1.2.0\build>cmake -D CMAKE_TOOLCHAIN_FILE=../confi.cmake ..CMake Warning at CMakeLists.txt:29 (project): To use the NMake generator, cmake must be run from a shell that can use the compiler cl from the command line. This environment does not contain INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to work.
-- The C compiler identification is GNU 4.8.3-- The CXX compiler identification is GNU 4.8.3-- The ASM compiler identification is GNU-- Found assembler: C:/Program Files/DS-5/sw/gcc/bin/arm-linux-gnueabihf-as.exeCMake Warning at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/Platform/indows-GNU.cmake:64 (enable_language): To use the NMake generator, cmake must be run from a shell that can use the compiler cl from the command line. This environment does not contain INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to work.Call Stack (most recent call first): C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/Platform/Windows-GNU-C.cake:1 (include) C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/CMakeCInformation.cmake:6 (include) CMakeLists.txt:29 (project)
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/Platform/Widows-GNU.cmake:64 (enable_language): No CMAKE_RC_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment variable "RC" or the CMake cache entry CMAKE_RC_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH.Call Stack (most recent call first): C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/Platform/Windows-GNU-C.cake:1 (include) C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/CMakeCInformation.cmake:6 (include) CMakeLists.txt:29 (project)
-- Configuring incomplete, errors occurred!See also "F:/testcmake/Ne10-1.2.0/Ne10-1.2.0/build/CMakeFiles/CMakeOutput.log".See also "F:/testcmake/Ne10-1.2.0/Ne10-1.2.0/build/CMakeFiles/CMakeError.log".
是不是我那里配置有问题?
还有前面提高FFT有两个版本。我要怎么控制选择那个版本?
Ne10的FFT版本是根据ARM32/ARM64自动编译的。
Ne10目前的交叉编译环境支持Linux、Mac for ios,目前还不支持Windows。理论上,cmake是支持Windows的,但是我们没有试过。你要么在Linux下把Ne10编译成库文件,然后你的应用链接到库使用呢?
您好,我尝试了一下在LINUX下编译这个库。确实编译通过了。当我把库及头文件包含到工程是还是出现错误信息如下:
extern ne10_result_t ne10_addc_float_neon (ne10_float32_t * dst, ne10_float32_t * src, const ne10_float32_t cst, ne10_uint32_t count) asm ("ne10_addc_float_neon");
后面带asm的语句都会报错。
注释掉这些语句还会有其他错误。
能不能给我一个用ARMCC编译并使用的教程?
Ne10库是不支持ARMCC编译的。
这个是Ne10的主页: Project Ne10: An Open Optimized Software Library Project forthe ARM Architecture @ GitHub
Ne10 Library Getting Started 这里面有在Linux下使用gcc如何交叉编译Ne10库。
您好。我的需求是这样要计算FFT 16路 64点,根据计算结果要在1MS内进行判断输出,以我有下面考虑:用LINUX实时性没有保证,所以要用实时操作系统,如果这个库只能在LINUX.IOS,ANDROID下使用。恐怕我这样的方案不行。
请问有其他途径完成我的功能吗?请帮我推荐。
大部分FFT开源库都是支持多种长度的。
你只要实现64点FFT的话,建议你从库里面把自己需要的长度提取出来,Ne10里面的很多东西你都不需要的,很多诸如.macro的伪指令你都不需要。
而且你还能针对性能进一步优化。