jra01 wrote on Monday, November 13, 2006:
Working with real view compiler for ARM (used by Keil) I ran into a need for 8 byte alignment of the stack. (sprintf with float values did not work otherwise.)
To achive this I had to add the following lines in heap_1.c:
#if portBYTE_ALIGNMENT == 8
#define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 )
#endif
I also made some changes to my port of the OS.
In port.c, pxPortInitialiseStack, first lines:
/* Setup the initial stack of the task. The stack is set exactly as
expected by the portRESTORE_CONTEXT() macro.
8 byte alignment: */
pxTopOfStack = (portSTACK_TYPE *)((long)pxTopOfStack & 0xfffffff8);
In portmacro.h:
#define portBYTE_ALIGNMENT 8
I’ll send the changes to Richard.
Regards
Jokke