STM32的启动文件与BootLoader
1 启动设置
BOOT1:x BOOT0:0 使用JTAG下载程序;(不需要使用BootLoader)
BOOT1:0 BOOT0:1 使用串口下载程序;(需要使用BootLoader引导从串口过来的数据)
BOOT1:1 BOOT0:1 从内部SRAM中启动。
2 start_stm32fxxxxx.s文件分析
1)分配栈的大小
2)分配堆的大小
3)初始化中断向量表(依次存放中断服务入口函数的地址)
DCD:分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。在向量表中,DCD 分配了一堆内存,并且以ESR 的入口地址初始化它们。
4)执行复位中断
系统初始化(在这里初始化系统时钟)
跳转至main()函数
3 关于堆栈的生长方向
堆是向上生长,栈是向下生长。
4 查看map文件
在map文件中可以看到内存分布情况
参考
STM32的map文件学习笔记
https://zhuanlan.zhihu.com/p/108358035
STM32的启动文件详解
https://zhuanlan.zhihu.com/p/98888285
STM32 Bootloader与启动分析
https://blog.csdn.net/ppdyhappy/article/details/78764706
如何判断栈、堆的增长方向?
https://blog.csdn.net/changyourmind/article/details/51839395