We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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)