一、栈和堆
栈:存放临时数据。(函数的参数或者是局部变量)
堆:使用很灵活,可以用来动态申请一部分空间,是公用的部分。
扩展:堆和栈,一般堆是由低地址往上增长,栈是由高地址往下减少,都是连续的。所以使用到了一个栈顶指针__initial_sp,而堆是有两个指针,一个指向顶部__heap_limit一个指向基地址__heap_base。
注意: 栈空间可以向下溢出到堆空间,程序不会出错,但是栈继续向下溢出直到栈空间已经满了,这时栈内容就进入了全局变量的空间,程序就会出现莫名的错误。但是堆空间一旦向上溢出就会出错。
参考stm32等cortex-m内核单片机启动文件执行过程详解(通俗易懂!!!)
以下是一个项目的程序内容:
这是在 .map 文件中的一段
二、keil编译bin文件
fromelf.exe --bin --output=@L.bin !L
具体使用参见以下内容