Sysprogs forums › Forums › VisualGDB › FreeRTOS compile error: instruction not allowed in IT block — 'msr psp, r0'…
Tagged: FreeRTOS
- This topic has 6 replies, 2 voices, and was last updated 7 years, 4 months ago by Mikko.
-
AuthorPosts
-
August 2, 2017 at 20:19 #11877MikkoParticipant
Hi,
I get this error while trying to compile program for STM32F429ZI containing FreeRTOS:
Error 4 error : instruction not allowed in IT block -- msr psp,r0' Error 2 error : instruction not allowed in IT block -- stmdb r0!,{r4-r11,r14}'; Error 3 error : selected processor does not support Thumb mode vldmiaeq r0!,{s16-s31}' Error 1 error : selected processor does not support Thumb mode vstmdbeq r0!,{s16-s31}'
I’m using FreeRTOS 7.6.0 with software floating point enabled with following flags:
CFLAGS: -ggdb -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m4 -D__irq="" CXXFLAGS: -ggdb -fno-rtti -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m4 -D__irq="" ASFLAGS: -ggdb -fno-rtti -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m4 -D__irq=""
I have an additional linker input as well specified for cortex-m4f and I have included portable files for AMR_CM4F.
I don’t understand why it gives me this error while I “should” have everything I need to have in place.
-Mikko
August 3, 2017 at 06:40 #11889supportKeymasterHi,
Most likely the FreeRTOS port file you are using is not compatible with your CPU core and floating point mode. Please try changing FreeRTOS port via VisualGDB Project Properties -> Embedded Frameworks (or manually selecting a port.c file from a different folder if you are not referencing FreeRTOS via VisualGDB framework mechanism).
August 5, 2017 at 19:49 #11933MikkoParticipantHi,
I think you were right, even though I still get other errors, I don’t think they are completely FreeRTOS related.
Thanks!
August 6, 2017 at 05:20 #11938supportKeymasterHi,
Good to know it works. If you encounter further errors, feel free to contact us again.
August 6, 2017 at 19:04 #11940MikkoParticipantHi,
Even tough it works somewhat(I use ARM_CM3 port.c), for some reason I can use ARM_CM4F port.c file in Keil and Eclipse. Is this more of a linking difference between IDEs? The little tricky part is that if I use Hardware FP I get rid of that error while using CM4F port.c -file, but as mentioned I have an additional linker input file which requires use of Software FP so then there will be conflict. Could this be resolved with additional flags or some modification of files?
To make sure, yes, it works with _CM3 port.c -file, but I thought if there would be way to get _CM4F working same way as it does with other IDEs. It seem that with VisualGDB FreeRTOS you have to use CM3 with software floating and CM4F with hardware floating.
-Mikko
August 11, 2017 at 00:02 #11996supportKeymasterHi,
Perhaps Keil/Eclipse enables the hardware FP implicitly or the version of port.c you use with those IDEs contains conditional statements that exclude FP-specific code?
Please try searching the port.c file compiled with Eclipes for “vstmdbeq” and see if it has any #ifdef’s around it. If no, please check the exact command line used to build this file. Does it contain any FP-related settings?
August 11, 2017 at 20:12 #12013MikkoParticipantHi,
I got it working first converting it to stand-alone project and then manually selecting FP.
Thanks anyway for suggestions.
-
AuthorPosts
- You must be logged in to reply to this topic.