Hi,
It's about the STM32F103. Due to my previous post my application first fills all (at that moment) free stack memory locations with a value of 0x55555555. This all works fine so does the application. I can monitor the stack behaviour in the Memory1 debug window.
But what I see is that at a certain moment data is placed in the stack at some location leaving some gaps of 2 to 10 times (32-bits) dwords containing 0x55555555.
The stack grows downwards in memory addresses. For example I see: (highest memory on top)
Address Data 0xnnnnnnnn-0 data start of stack 0xnnnnnnnn-1 data 0xnnnnnnnn-2 data 0xnnnnnnnn-3 0x55555555 0xnnnnnnnn-4 0x55555555 0xnnnnnnnn-5 data 0xnnnnnnnn-6 data 0xnnnnnnnn-7 0x55555555 0xnnnnnnnn-8 data 0xnnnnnnnn-9 data 0xnnnnnnnn-10 0x55555555 0xnnnnnnnn-12 0x55555555 until 0xnnnnnnnn-nn 0x55555555 end of stack
I do use many interrupt handlers. Is there an explanation for this or is my application buggy?
Thanks
Henk
That was probably not a terribly good idea to begin with. Data objects of that size usually shouldn't be on the stack unless you have very good reasons they need to be there.
Really? Where else? malloc? static? Many of the 'big' blocks of 255 bytes either or both in either way would not be a great choice on many embedded systems.
Choosing a sensible stack size is normally a sensible part of a sensible design. As is sensible use of static and malloc.