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

原文地址:https://www.cnblogs.com/QQ2962269558/p/13585811.html