Hi
Im using cycloneVsoc (cortex-A9 duel core) with armcc v5.06.
I used to do --fpu = vfpv3 --cpu = cortex-a9 on makefile
Now I want to use neon instead.
Yet I can't use --fpu option to open neon.
Ive confurmed that this port does support the neon.
According to ARMCC v5.06 UG for uVision, --fpu don't have neon option.
Could you please tell me how to start/open it by makefile?
Thank you very much
Reguards
Alex
Neon is enabled by default when compiling for Cortex-A9.
Use:
armcc -cpu=list
and see the available options:
... --cpu=Cortex-A9 --cpu=Cortex-A9.no_neon --cpu=Cortex-A9.no_neon.no_vfp ...
See also https://developer.arm.com/documentation/102731/0100/Enabling-NEON
hi
Ronan Synnott
after using --cpu= Cortex-A9
multi errors of:
"CMSIS/CMSIS_CORE/Include/cmsis_armcc.h", line 169: Error: #667: "asm" function is nonstandard __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) ^
happened.
in arm_cmsis.h
#define __ASM __asm already.
reguards
Hi AlexI can reproduce what you see, but only when compiling for --c99 AND --strict.Do you really need to use --strict? If so, you will need to rewrite the "embedded assembler" functions in cmsis_armcc.h as "inline assembler" instead.For example, replace __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value){ rev16 r0, r0 bx lr}with, for example,__attribute__((section(".rev16_text"))) __STATIC_INLINE uint32_t __REV16(uint32_t value){ uint32_t result; __asm("rev16 result, value"); return result;}For more information on "embedded assembler" and "inline assembler" in Arm Compiler 5, see:developer.arm.com/.../Using-the-Inline-and-Embedded-Assemblers-of-the-ARM-CompilerIs there a particular reason why you are using the old Arm Compiler 5?The latest version of CMSIS (CMSIS 6.0.0) no longer supports Arm Compiler 5.I strongly recommend that you update from Arm Compiler 5 to Arm Compiler for Embedded 6.Hope this helpsStephen
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
{
rev16 r0, r0
bx lr
}
__attribute__((section(".rev16_text"))) __STATIC_INLINE uint32_t __REV16(uint32_t value)
uint32_t result;
__asm("rev16 result, value");
return result;
Stephen Theobald
thank you for the help
as for the reason why, it is the old version project forced me to do that.
The project used an old hardware lib that doesn't support the ARMCC 6.(or massive works need to be done).
I think that's all I need right now, thanks for the hlep.
Sorry, another question for ARMCCv5.06 version
if --cpu=Cortex-A9 and --fpu=VFPv3, is that equal to --cpu=Cortex-A9.no_neon?
No, they are not equivalent.
Also, I should mention that if you wish the compiler to generate Neon instructions, you should add the --vectorise option.
Without this, it can still use libraries or asm code that contain Neon instructions.