看.map文件
从.map文件中可以看出,ram中的数据是如何摆放的:
1.首先从0x20000000开始,放全局变量的数据,如上图2所示,0x20000000以及0x200000004/0x20000008的地方的数据,存放的是全局变量,分别是uart_rxdata、FM_Freq等。
2.放完全局变量之后是用static声明的局部变量,如图1中的n,max_num以及times等,这些在c代码中都是用static声明的局部变量
3.放完这些数据之后,也就是静态存储区结束之后,是堆,根据启动文件,分配堆的空间。
4.堆空间结束后是栈,如图2中的initial_sp,从堆结束继续数0x400后作为栈顶。(注:0x400是在启动文件中设置的栈的大小,自己设定,我这里没有使用堆,编译器貌似优化掉了,因此直接从静态存储区直接数了0x400作为栈区) 总结画个图
|