STM32的启动文件与BootLoader

BOOT1:x   BOOT0:0     使用JTAG下载程序;(不需要使用BootLoader)

BOOT1:0   BOOT0:1     使用串口下载程序;(需要使用BootLoader引导从串口过来的数据)

BOOT1:1   BOOT0:1     从内部SRAM中启动。

STM32的启动文件与BootLoader

2 start_stm32fxxxxx.s文件分析

1)分配栈的大小

2)分配堆的大小

3)初始化中断向量表(依次存放中断服务入口函数的地址)

      DCD:分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。在向量表中,DCD 分配了一堆内存,并且以ESR 的入口地址初始化它们。

4)执行复位中断

    系统初始化(在这里初始化系统时钟)

    跳转至main()函数

3 关于堆栈的生长方向

堆是向上生长,栈是向下生长。

STM32的启动文件与BootLoader

4 查看map文件

在map文件中可以看到内存分布情况

STM32的启动文件与BootLoader

参考

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

相关文章:

  • 2021-08-20
  • 2022-01-26
  • 2022-12-23
  • 2021-05-17
  • 2021-12-05
  • 2021-05-07
  • 2022-12-23
猜你喜欢
  • 2021-12-25
  • 2021-05-17
  • 2021-08-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案