【原创】【stm32】startup_stm32l476xx.s文件分析
2018-01-23 21:46
155 查看
一、这是个什么玩意
这个文件是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、深入的学习等以后有机会碰到再持续更新
四、成为大神的用法
暂无
这个文件是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、深入的学习等以后有机会碰到再持续更新
四、成为大神的用法
暂无
相关文章推荐
- STM32启动文件详解——startup_stm32f10x_xx.s
- startup_LPC17XX.s 启动文件分析
- startup_stm32f10x_hd.s分析--stm32启动文件
- STM32启动文件详解及SystemInit函数分析(转)
- STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例
- STM32启动文件分析
- STM32启动过程解析-2.02固件库启动文件分析
- STM32 usb_init.c和usb_int.c文件分析
- STM32学习笔记之USB工程目录文件分析
- STM32启动过程解析-2.02固件库启动文件分析
- STM32在MDK5下建立工程文件步骤分析
- startup_stm32f40xx.s: error: A3906U: Malformed via file '.\debug\startup_stm32f40xx._ia'.
- STM32学习笔记之 USB驱动usb_endp.c文件和usb_istr.c文件分析
- STM32启动文件分析
- stm32 启动文件.s源码 分析
- startup_stm32f10x_xx.s 启动代码文件选择
- STM32 usb_pwr.c文件分析
- STM32学习笔记之USB库文件分析
- STM32启动文件——startup_stm32f10x_hd.s
- STM32 system_stm32f10x.c文件分析