Value of "__initial_sp"

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=3
Stack_Mem SPACE Stack_Size
__initial_sp

How this turns out to be __initial_sp = 0x2000_0660 ???

Please help to understand this .

Parents
  • 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)

Reply
  • 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)

Children
No data