Hello ,
I am new to ARM cortex M processors and while doing some coding on my board using KEIL i found that
at location 0x0000_0000 my debugger shows the value "0x2000_0660" . Thats the value of the MSP loaded.
but i really dont understand how linker arrived at that value using __initial_sp
i checked in the startup file and found this
; Amount of memory (in bytes) allocated for Stack; Tailor this value to your application needs; <h> Stack Configuration; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>; </h>
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_sp
How this turns out to be __initial_sp = 0x2000_0660 ???
Please help to understand this .
Sounds right. I think Keil produces a "memory map" output (or can certainly be configured to do so.)
The old class project I have (UV5 on MSP432 launchpad) pops up the info when I double click on the "Target 1" in the project explorer (YMMV - I'm not too familiar with Keil.) Somewhere in there there are some lines that look like:
Image Symbol Table Local Symbols Symbol Name Value Ov Type Size Object(Section) RESET 0x00000000 Section 324 startup_msp432p401r_uvision.o(RESET) : .data 0x20000000 Section 4 main.o(.data) .bss 0x20000004 Section 96 libspace.o(.bss) HEAP 0x20000068 Section 0 startup_msp432p401r_uvision.o(HEAP) STACK 0x20000068 Section 512 startup_msp432p401r_uvision.o(STACK) Heap_Mem 0x20000068 Data 0 startup_msp432p401r_uvision.o(HEAP) Stack_Mem 0x20000068 Data 512 startup_msp432p401r_uvision.o(STACK) __initial_sp 0x20000268 Data 0 startup_msp432p401r_uvision.o(STACK)