我的启动文件代码是这样写的:
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
PRESERVE8
THUMB
但是编译出来的工程文件.htm里有个函数是这样的(见附件图):
modifyMainPage (Thumb, 454 bytes, Stack size 40 bytes, lcd19264.o(i.modifyMainPage))
[Stack]
• Max Depth = 48
• Call Chain = modifyMainPage ⇒ my_strcpy
谁能解释一下 454 bytes是不是就意味着我的Heap_Size EQU 要设置成454以上?
还有Max Depth = 48是什么意思?
此帖出自
小平头技术问答
我觉得,这样改动是可以的。对于小程序,很多场合和没改的时候效果是一样的。这里的堆栈只是定义了大小,程序在启动时,按设定值,自动分配相应的内存区。堆是向上生长的,栈是向下生长的,如果程序中使用的变量较少,在这个范围内,没有交叉,是没关系的,如果有交叉,则程序就可能瞬间崩了。局部变量主要存放在栈区,如果局部变量开的大了,则应将STACK_SIZE 开大些。
一周热门 更多>