This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Stack & Heap Initialization (RealView MDK-ARM)

There are some codes in the "Startup.s" for "User Initial Stack & Heap".

And, as per this URL
http://www.keil.com/support/man/docs/armlib/armlib_chdegjfd.htm

There are another codes for "Sets up the heap and stack".

It makes me a little confused.

What is the relationship between these two "Stack & Heap Initialization"?

Are they duplicated works, or they have different and important meanings?

Parents
  • Hi Per,

    Many Thanks.

    If I write my C program (MyCprg) and use some Librarys (Lib01/Lib02), with the powerful KEIL's solution (on LPC23xx). Does the Runtime Memory Map look like the below?

    ----RAM-------------- 0x-6FFF-FFFF
    |  Stack-ASM-start (Defined in the "Startup.s")
    |
    |    ------------------
    |    Stack-MyCprg-start (__rt_entry done for me)
    |
    |    Stack-MyCprg-end   (__rt_entry done for me)
    |    ------------------
    |    Stack-Lib01-start  (__rt_entry done for me)
    |
    |    Stack-Lib01-end    (__rt_entry done for me)
    |    ------------------
    |    Stack-Lib02-start  (__rt_entry done for me)
    |
    |    Stack-Lib02-end    (__rt_entry done for me)
    |    ------------------
    |
    |  Stack-ASM-end (Defined in the "Startup.s")
    ---------------------
    |  Heap-ASM-end (Defined in the "Startup.s")
    |
    |    ------------------
    |    Heap-MyCprg-start  (__rt_entry done for me)
    |
    |    Heap-MyCprg-end    (__rt_entry done for me)
    |    ------------------
    |    Heap-Lib01-start   (__rt_entry done for me)
    |
    |    Heap-Lib01-end     (__rt_entry done for me)
    |    ------------------
    |    Heap-Lib02-start   (__rt_entry done for me)
    |
    |    Heap-Lib02-end     (__rt_entry done for me)
    |    ------------------
    |
    |  Heap-ASM-start (Defined in the "Startup.s")
    --------------------- 0x-4000-1000
    | ZI AREA           |
    ---------------------
    | RW AREA           |
    ----RAM-------------- 0x-4000-0100
     -------------------
    ---------------------
    |  Flash            |
    ---------------------
    

Reply
  • Hi Per,

    Many Thanks.

    If I write my C program (MyCprg) and use some Librarys (Lib01/Lib02), with the powerful KEIL's solution (on LPC23xx). Does the Runtime Memory Map look like the below?

    ----RAM-------------- 0x-6FFF-FFFF
    |  Stack-ASM-start (Defined in the "Startup.s")
    |
    |    ------------------
    |    Stack-MyCprg-start (__rt_entry done for me)
    |
    |    Stack-MyCprg-end   (__rt_entry done for me)
    |    ------------------
    |    Stack-Lib01-start  (__rt_entry done for me)
    |
    |    Stack-Lib01-end    (__rt_entry done for me)
    |    ------------------
    |    Stack-Lib02-start  (__rt_entry done for me)
    |
    |    Stack-Lib02-end    (__rt_entry done for me)
    |    ------------------
    |
    |  Stack-ASM-end (Defined in the "Startup.s")
    ---------------------
    |  Heap-ASM-end (Defined in the "Startup.s")
    |
    |    ------------------
    |    Heap-MyCprg-start  (__rt_entry done for me)
    |
    |    Heap-MyCprg-end    (__rt_entry done for me)
    |    ------------------
    |    Heap-Lib01-start   (__rt_entry done for me)
    |
    |    Heap-Lib01-end     (__rt_entry done for me)
    |    ------------------
    |    Heap-Lib02-start   (__rt_entry done for me)
    |
    |    Heap-Lib02-end     (__rt_entry done for me)
    |    ------------------
    |
    |  Heap-ASM-start (Defined in the "Startup.s")
    --------------------- 0x-4000-1000
    | ZI AREA           |
    ---------------------
    | RW AREA           |
    ----RAM-------------- 0x-4000-0100
     -------------------
    ---------------------
    |  Flash            |
    ---------------------
    

Children
No data