在启动文件中定义了栈的大小是0x400,堆的大小是0x200
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE,ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
那么栈顶地址不是应该是0x20000600吗?但我在map文件查到的是0x20000738
__initial_sp 0x20000738 Data 0 startup_stm32f40_41xxx.o(STACK)
请问是不是我理解错了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
只是规定了启动入口放在FLASH的0地址。
那请教一下栈顶地址 __initial_sp 是怎么算出来的啊
嗯嗯,这几句汇编我看得懂。
[mw_shl_code=applescript,true] HEAP 0x20000160 Section 512 startup_stm32f40_41xxx.o(HEAP)
Heap_Mem 0x20000160 Data 512 startup_stm32f40_41xxx.o(HEAP)
STACK 0x20000360 Section 1024 startup_stm32f40_41xxx.o(STACK)
Stack_Mem 0x20000360 Data 1024 startup_stm32f40_41xxx.o(STACK)
__initial_sp 0x20000760 Data 0 startup_stm32f40_41xxx.o(STACK)[/mw_shl_code]
这几句话是不是说栈从栈顶 0x20000760 开始向下生长,堆从0x20000160向上生长啊
一周热门 更多>