【原创】【stm32】startup_stm32l476xx.s文件分析

一、这是个什么玩意

这个文件是stm的mcu上电启动后执行的启动文件,说白就是上电后先执行这里,才能调到main函数。

二、有毛用啊

1、启动文件肯定是mcu启动时候要执行的文件(显而易见,从字面理解)

2、系统初始化(为C语言代码能够顺利的运行建立运行环境)

      ①、分配堆段、栈段和存放向量的数据段,此时栈和堆都未初始化,是由后面的_user_initial_stackheap来完成。


    


    






     ②、中断向量表初始化映射

     ③、各种中断映射的函数,主要看下Reset_Handle,SystemInit这函数重新映射中断向量表。然后就是main函数。如果单步跟的话在进入__main函数后还会执行以下几个函数:_scatterload函数和_scatterload_null函数和_scatterload_copy函数(初始化全局变量)和_scatterload_zerinit函数(清0过程)和_scatterload和_rt_entry函数和_user_inital_stackheap函数(初始化堆栈)

       ④、加在RW段,ZI段清0,初始化用户堆栈

       ⑤、调用main函数

期间涉及到一些map文件的东西,具体下节再分析介绍。

三、怎么用啊

1、这个一般不会改,+o+

2、比如做个栈溢出监测(原理就是在栈边界写个特殊值,然后再任务切换(函数调用)的时候监测该特殊值是否被修改,如被修改则说明栈溢出)

3、其他需要根据具体实际需求进行修改了,比如加个跳转函数等。

4、深入的学习等以后有机会碰到再持续更新

四、成为大神的用法

暂无



 





startup_stm32l051xx.s是STMicroelectronics提供的一个启动文件,用于启动STM32L051xx系列微控制器。它是一个汇编语言文件,包含了程序的入口点和初始化代码。 生成startup_stm32l051xx.s的过程如下: 1. 首先,打开STM32L051xx系列的开发环境,例如Keil MDK或者IAR Embedded Workbench。这些环境通常提供了创建或导入项目的功能。 2. 创建一个新的项目或打开一个现有的项目,然后选择所需的STM32L051微控制器型号。这会为你的项目创建相应的默认配置文件和链接脚本。 3. 在项目文件结构中找到startup_stm32l051xx.s文件。这个文件通常位于Startup目录下,用于存放启动文件。 4. 双击打开startup_stm32l051xx.s文件,在其中可以看到一些汇编指令的代码。这些指令用于初始化芯片的寄存器和系统设置,例如设置堆栈指针、设置中断向量表、启用系统时钟等。 5. 根据需要,你可以对startup_stm32l051xx.s文件进行自定义修改。例如,你可以添加或删除特定的初始化代码,以适应你的应用需求。 6. 编译项目,这将把startup_stm32l051xx.s文件与其他源代码一起编译为目标文件。编译器会将汇编指令转换为机器码。 7. 在链接阶段,链接器会将生成的目标文件与其他库文件和链接脚本一起进行连接,生成最终的可执行文件。该文件可用于下载到STM32L051微控制器并在芯片上运行。 总之,生成startup_stm32l051xx.s文件的过程涉及到选择微控制器型号、创建项目、编辑启动文件、编译和链接等步骤。这个文件的目的是在芯片上启动初始化系统,并为应用程序提供运行环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值