浅析stm32启动文件

浅析stm32启动文件

文章目录

1.什么是启动文件?

我们来看gpt给出的答案:

STM32的启动文件是一个关键的汇编语言源文件,它负责在微控制器上电或复位后执行最初的硬件配置和环境设置,为执行C语言的main函数做好准备。这个文件通常命名为startup_stm32xxxx.s,其中xxxx代表特定的STM32系列和型号,例如startup_stm32f429_439xx.sstartup_stm32f10x_md.s

启动文件的主要功能包括但不限于:

  1. 初始化栈指针 (Stack Pointer,SP):设置栈区的起始地址,确保函数调用和中断处理时有地方存放局部变量和保存CPU状态。

  2. 初始化程序计数器寄存器 (Program Counter,PC):设置程序开始执行的地址,通常是复位向量地址。

  3. 配置中断向量表:定义中断服务程序的入口地址,确保在发生中断时能正确跳转到对应的处理函数。

  4. 系统时钟配置 :某些启动文件或与其配合的C代码(system_stm32f10x.c)会进行基本的时钟设置,以确保CPU和外设能够按预期频率工作。

  5. C库初始化 :调用_init()函数来初始化C库,包括全局变量的初始化和静态构造函数的调用。

  6. 堆(heap)和栈(stack)的配置:尽管启动文件中可能包含对堆的基地址和大小的定义,但实际是否使用堆以及其大小,取决于应用代码中的动态内存分配需求。如果应用未使用堆,那么即使启动文件中有定义,编译后的映射文件(map file)中也不会显示堆的信息。

启动文件中关于栈和堆的大小配置(如Stack_SizeHeap_Size)可以根据具体应用的需求进行调整。如果程序中使用了大量的递归调用或者大的局部变量,可能需要增大栈的大小;如果程序中频繁进行动态内存分配,则可能需要更大的堆空间。

此外,中断矢量表的起始地址初始化通常在启动文件的复位处理程序中完成,通过设置系统控制块(System Control Block, SCB)的相应寄存器来指向中断向量表的起始位置。

什么意思呢?其实就是启动文件是系统上电后编译的第一个文件,主要完成了以下几个工作:

  1. 初始化堆栈指针SP=_initial_sp
  2. 初始化PC指针=Reset_Handler
  3. 初始化中断向量表
  4. 配置系统时钟
  5. 调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界

所以对于不同的芯片型号来说,芯片的启动文件也存在差异,然而那如何来选择启动文件呢?这就需要我们来了解启动文件的命名规则。

2.启动文件的命名规则

从上面这个表格就知道启动文件的类型和选择和芯片型号以及内存大小息息相关,而我们我们如何来确定自己芯片的Flash容量呢,就常见的F103系列就有很多的型号,我们如何来选择适合自己芯片的型号呢?这就需要了解芯片的命名规则。

3.stm32芯片的命名规则

通过手册中的解释我们就知道STM32的芯片型号遵循一定的结构,用以标识其系列、类型、性能、引脚数目、存储容量、封装类型等关键特性。而我们选择启动文件想要了解不同芯片的Flash,就需要关注芯片的存储容量标识:

如6(32K字节)、8(64K字节)、B(128K字节)、C(256K字节)、D(384K字节)、E(512K字节)、G(1M字节)等等。

通过对芯片型号的确定和第二部分各个系列对应的启动文件就可以正确选择启动文件。

(1M字节)等等。

通过对芯片型号的确定和第二部分各个系列对应的启动文件就可以正确选择启动文件。

相关推荐
xuxg20054 分钟前
4G 模组 AT 命令解析框架课程正式发布
stm32·嵌入式·at命令解析框架
CODECOLLECT2 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen2 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠5 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_5 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技7 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计7 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦9 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报9 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业9 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件