我们都熟悉单片机上电后执行启动文件的汇编代码,初始化栈顶指针,初始化PC到reset_handler.
很疑惑,我们用的启动文件,怎么在机器上电的时候被执行的,是烧录的时候,启动文件的汇编代码被固化到哪了吗?求指导。
我们都熟悉单片机上电后执行启动文件的汇编代码,初始化栈顶指针,初始化PC到reset_handler.
很疑惑,我们用的启动文件,怎么在机器上电的时候被执行的,是烧录的时候,启动文件的汇编代码被固化到哪了吗?求指导。
1.汇编文件被编译link到bin文件中了。先看下工程设置里Link页,
该reset段是map文件中可以找到,如下:
通过上述可知,Reset_Handler的地址就是存放复位向量的。当芯片复位后,会进到复位中断处理函数处执行,即如下代码:
依次执行SystemInit函数及__main函数,注意这里的__main不是我们定义的main,而是C库函数,主要是用来初始化系统堆栈,并跳到我们定义的main处理运行。
更为详细的启动文件分析可以看下这篇文章:
https://blog.csdn.net/chenbee168/article/details/128246677