Hi, I’m new to FreeRTOS. I want to learn more about the PIC24 port which is the version I’m most interested in.
Why is the omit frame pointer optimization necessary. When I turn this optimization on I can no longer view the call stack in MPLAB. In fact, MPLAB(8.0) hangs without this optimization.
I’m alittle confusion about the context switching code. Browsing through the code, it looks like a context switch can only happen inside a yield function( Interrupt routines call Yield if the interrupt changes the currently active thread ). The C30 manual says W0-W7 are caller saved so that it doesn’t need to saved( the save happens in the caller ). Also, instead of building an interrupt context it would be possible to simply save the old priority in the local variable section of the call frame. I realive that C30 doesn’t support the naked attribute, but it seems pretty easy to create a small asm file for Yield. I’m thinking about making these changes on my local copy of FreeRTOS but I just want to make sure this is safe.
Why isn’t the stack limit register switched during a context switch.