FreeRTOS under GCC with -O0 option

nobody wrote on Monday, September 04, 2006:

has anybody compiled for arm7tdmi with -O0 option using gcc 4.1.1? My OS under at91sam7s256 still crashes without optimalization :frowning:

Janusz

nobody wrote on Monday, September 04, 2006:

interesting links for trace/debug:
http://www.embedded.com/showArticle.jhtml?articleID=192202641
http://www.l8night.co.uk/mwynn/gbadev/asmdocs/gba-arm-asm.html

Janusz

nobody wrote on Tuesday, September 05, 2006:

The makefiles for the LPC2000, AT91FR40008 and AT91SAM7X256 ARM7/GCC projects in the download use -O0, so it must be possible.

Using -O0 will make the code and stack useage greater.  Is this the problem rather than the code gen?

acehigh1971 wrote on Tuesday, September 05, 2006:

I added the -fomit-frame-pointer option so the frame was not used when calling a function (indeed is not needed) and I can change the optim level without worrying.
Can you test it?

Thanks

nobody wrote on Wednesday, September 06, 2006:

You are my master!!! I have added and OS work with everthing with -O0 flag!!!

Thanks a lot!!!
Janusz

nobody wrote on Wednesday, September 06, 2006:

with -O0 works fine
with -O1 crashes (but it is no this reason -> then gcc uses a lot of stack)
with -O2 works fine

best regards
Janusz

nobody wrote on Wednesday, September 06, 2006:

I was wrong, with -O2 can crash also bu -O0 is great:)

thanks again
Janusz

nobody wrote on Wednesday, September 06, 2006:

reason: -O2 causes more stack usage!

Janusz

nobody wrote on Thursday, September 21, 2006:

I was having issues with FreeRTOS 4.1.0, GNUARM 4.11 and the LWIP SAM7 demo package until the -fomit-frame-pointer was put into the makefile.  The AT91SAM7X256 is running now.

tcwden wrote on Tuesday, February 13, 2007:

I experienced the same problem with dsPic.

Does anybody know why Frame Pointer crashes with FreeRTOS? Is it because somehow both are pushing and popping the stack?

Cheers.

Dennis

nobody wrote on Tuesday, February 13, 2007:

Don’t suppose you’ve tried the webserver side of it have you?.. cos it’s not working here.

nobody wrote on Tuesday, February 13, 2007:

Scratch that, my switch locked up. Sorry :slight_smile:

nobody wrote on Tuesday, February 13, 2007:

I think there is a bug in ARM7 GCC that holds the pointer in an invalid place for a few cycles.  Search the forum for "-fomit-frame-pointer" and there is an explanation.  It may even be in this thread.