Hello Gary Wu,
阅读了您下面文档,关于Neon指令在CCS环境下的使用,
www.deyisupport.com/.../18765.aspx
目前我正在cortex-A8上,ccs5.5上搭建环境,想利用neon/FVP在arm端进行算法优化,目前遇到不少问题?
如果方便的话,能否共享一下您提供的文档中涉及的工程代码,学习arm端 Neon/VFP指令在CCS环境应用的搭建?
非常感谢!
BRS,
Meng
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello Gary Wu,
阅读了您下面文档,关于Neon指令在CCS环境下的使用,
www.deyisupport.com/.../18765.aspx
目前我正在cortex-A8上,ccs5.5上搭建环境,想利用neon/FVP在arm端进行算法优化,目前遇到不少问题?
如果方便的话,能否共享一下您提供的文档中涉及的工程代码,学习arm端 Neon/VFP指令在CCS环境应用的搭建?
非常感谢!
BRS,
Meng
初始化neon,要加入一段汇编:
MRC p15, #0, r1, c1, c0, #2 ; r1 = Access Control Register
ORR r1, r1, #(0xf << 20) ; enable full access for p10,11
MCR p15, #0, r1, c1, c0, #2 ; Access Control Register = r1
MOV r1, #0
MCR p15, #0, r1, c7, c5, #4 ; flush prefetch buffer because of FMXR below
; and CP 10 & 11 were only just enabled
; Enable VFP itself
MOV r0,#0x40000000
FMXR FPEXC, r0 ; FPEXC = r0
Hello Zhou,
我已经在arm端加了汇编代码,包括neon/VFP 的使能 以及 L2 cache 使能,
目前代码已经能go main()。
我了解的是要在CCS环境下neon指令集,必须写汇编,intrinsic 的形式是不支持的,
我写了一段代码如下:
想验证vld1.16这个neon指令是否能正常运行
编码形式是在c语言中插入汇编代码(该说法正确吗)。
我想知道,如何在vld1.16汇编代码中调用在C语言的定义的数组a[8],
也就是说想把,a[] 数组中的值通过该vld1.16指令加载到{d0,d1}中.
我试了好多种方式,都没有成功。缺乏arm 与c交叉编程经验,请给予指导。
非常感谢!
int16_t a[8] = {0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007};
int main(void)
{
asm("ldr r0,=p"); //this instruction error.
asm(" vld1.16 {d0,d1},[r0] ");
}
BRS,
Meng
Hello Zhou,
你说的neon/vfp,我都根据ti网站的文档设置过了。刚才我刚刚写了一段汇编函数,c语言来调用。
现在遇到以下问题:
我从 cortex-a8的资料中,了解到 他们用的是neon/vfp3,但是我在ARM编译选项的processor options,选择VFP3时,编译是出现下列错误,
error #16004-D: file "C:/ti/ccsv5/tools/compiler/arm_5.1.1/lib/rtsv5_A_le_eabi.lib<memcpy32.obj>" has a Tag_ABI_VFP_args attribute value of "1" that is different than one previously seen ("0"); combining incompatible files
但是我将该选项更改为:vfplib,重新编译,编译成功,并且可以正常跟踪,得到正常的计算结果。
请问这是什么原因,难道cortex-a8 描述,有误,还是别的原因?
NEON/VFP enable 代码如下:
MRC p15, #0, r1, c1, c0, #2 ; r1 = Access Control Register
ORR r1, r1, #(0xf << 20) ; enable full access for p10,11
MCR p15, #0, r1, c1, c0, #2 ; Access Control Register = r1
MOV r1, #0
MCR p15, #0, r1, c7, c5, #4 ; flush prefetch buffer because of FMXR below
; and CP 10 & 11 were only just enabled
; Enable VFP itself
MOV r0,#0x40000000
FMXR FPEXC, r0 ; FPEXC = r0
L2 cache 使能代码如下:
;l2 cache enable
mrc p15, #0, r3, c1, c0, #1
orr r3, r3, #2
mcr p15, #0, r3, c1, c0, #1
BRS,
Meng