一、这是个什么玩意
这个文件是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、深入的学习等以后有机会碰到再持续更新
四、成为大神的用法
暂无