TI中文支持网
TI专业的中文技术问题搜集分享网站

如何在DM81X系列的Cortex-A8上使用Neon(或者VFP)指令?有做过的吗?

  大家好,我现在尝试着在DM81X系列的Cortex-A8上使用Neon或VFP加速器,在编译使用Neon时遇到了点问题。 按照文档说明,要想使用Neon指令有三种方式:

  1、修改编译器选项直接生成Neon指令(这样效率可能不会太高);

  2、使用Neon intrinsics 内嵌的指令,与DSP的类似;

  3、直接使用Neon汇编指令;

  我目前选择测试的平台有RDK和CCS5。

 1、首先我想在RDK下直接使用Neon intrinsics,#include "arm_neon.h",按照e2e.ti.com    上的类似帖子修改ARM的编译配置文件common_header_a8.Makefile 增加编译选项:    CC_OPTS+= -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp,使能neon指令编译,    编译后出现错误如下:

            

     不增加编译选项错误是:#error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h,    这个是正常的错误。

2、CCS5下没有arm_neon.h头文件,是不是在CCS5下软仿时不能使用Neon内嵌的指令;

3、在CCS5下建立Cortex-A8的软仿项目工程,设置项目编译属性,分别使能VFP与nepn   

    在测试例子中以同样的格式分别用Thumb汇编指令和Neon汇编指令写了一个简单的函数,这样Neon指令 编译的确没问题,但发现Thumb的指令可以正确调用,而Neon指令还没进入函数(单步调试没入)就挂掉了。    在文档<<ARM Assembly language tools>>与<<ARM optimizing C C++ compiler>>我都没找到关于任 何在CCS编写Neon指令的例子,我不确定我那样调用的方式是否正确。

4、由于设备在上电启动时Neon加速器的相关寄存器是禁止的,是不是除了修改编译选项编译出Neon指令    的代码外,还必须 在设备初始化时对Neon(VFP)进行初始化,,如下:

         MRC     p15, #0, r3, c1, c0, #2    ; Read CPACR

         ORR     r3, r3, #0x00F00000         ; Enable access to CP10 and CP11

         MCR     p15, #0, r3, c1, c0, #2    ; Write CPACR

         MOV r0, #0x40000000

         VMSR FPEXC, r0

  有没哪位仁兄在DM81X系列上做过这方面的工作,给点建议。非常感谢!

Jason miller:

回复 Louis:

 哦,Louis是你啊~非常感谢!

赞(0)
未经允许不得转载:TI中文支持网 » 如何在DM81X系列的Cortex-A8上使用Neon(或者VFP)指令?有做过的吗?
分享到: 更多 (0)