port.c does not compile with atmel same70q21

cjedic wrote on Thursday, April 21, 2016:

The arguments for my build are as follows:
-mthumb -D__SAME70Q21__ -DSAME70 -DDEBUG -DTHUMB_INTERWORK -O1 -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m7 -std=gnu99

All other files compile fine but when it compiles the port.c file in the portable/GCC/ARM_CM4F or the portable/GCC/ARM_C7/rp01 directories I get the follwoing errors

/tmp/ccVxLxH7.s: Assembler messages:
/tmp/ccVxLxH7.s:409: Error: selected processor does not support Thumb mode vstmdbeq r0!,{s16-s31}' /tmp/ccVxLxH7.s:411: Error: instruction not allowed in IT block -- stmdb r0!,{r4-r11,r14}’
/tmp/ccVxLxH7.s:432: Error: selected processor does not support Thumb mode vldmiaeq r0!,{s16-s31}' /tmp/ccVxLxH7.s:434: Error: instruction not allowed in IT block -- msr psp,r0’

I am developing on eclipse and using the tools from a makefile but I tried it on a windows box with atmel studio 7 and it failed the same way.

Please help.

rtel wrote on Thursday, April 21, 2016:

Those are floating point instructions, and your command line does not tell GCC that the processor has a floating point unit.

The FreeRTOS download has an Atmel Studio (GCC) project for these parts, which builds without problems, and from which you can obtain the command line used:

http://www.freertos.org/Creating-a-new-FreeRTOS-project.html (note: “It is always recommended that a new FreeRTOS project is created by starting with, and then adapting, one of the provided pre-configured demos. Doing this ensures the new project includes all the necessary source and header files, and installs the necessary interrupt service routines, with no effort on the part of the project’s creator.”)