This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Fatal error: C3903U: Argument 'neon' not permitted for option 'fpu'.

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

Parents
  • Hi Alex

    I 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-Compiler

    Is 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 helps

    Stephen

Reply
  • Hi Alex

    I 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-Compiler

    Is 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 helps

    Stephen

Children