You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

startup code和reset handler有何区别?微控制器启动/复位时调用哪个?

嵌入式开发启动相关问题解答

1. startup code与reset handler的核心区别

二者是嵌入式启动流程中前后衔接的两个模块,核心差异如下:

  • 定位不同:Reset Handler是芯片硬件定义的复位异常入口,是整个系统上电/复位后第一个被硬件调用的代码节点,属于Startup Code的首个组成部分;Startup Code是微控制器从复位结束到进入main函数之前,所有初始化代码的全集。
  • 职责不同:Reset Handler的职责极精简,仅完成栈指针寄存器的初始赋值,之后直接跳转到Startup Code的主体逻辑执行;Startup Code负责完成C/C++运行环境搭建(清BSS段、复制全局变量到RAM、初始化静态变量)、核心硬件配置(系统时钟、外置DRAM/Flash初始化)、可选的系统级预配置,最终跳转到应用层入口main函数。

2. 正常启动与复位操作的调用逻辑

不存在二选一的调用逻辑,二者是固定的先后执行顺序:

  • 不管是正常冷启动(上电)还是任何形式的复位操作(软复位、硬件复位、看门狗复位等),芯片复位完成后硬件都会自动跳转到Reset Handler的地址执行。
  • Reset Handler执行完最小初始化后,会直接调用Startup Code的其余逻辑。

3. Reset Handler的存放位置

绝大多数情况下,Reset Handler和Startup Code的汇编逻辑共同存放在startup.s文件中(ARM架构下通常会带上芯片型号命名,比如startup_stm32h750xx.s),属于启动汇编文件的核心组成部分。
少数厂商的SDK会将Reset Handler单独拆分到独立的汇编文件,编译后统一链接到向量表指定的固定地址段。


内容的提问来源于stack exchange,提问作者Jboud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:45:03