当前位置: 首页 > news >正文

MCU的启动流程你了解么?

MCU(微控制器单元)的上电过程是一个精心设计的序列,它确保芯片从完全断电状态可靠地进入正常工作状态。

1. 上电复位(Power-on Reset)

当给MCU上电时,电源电压从0V开始上升至额定工作电压(如3.3V)。MCU内部的复位电路会监测电压变化,确保仅在电压稳定后才释放复位信号,防止电压波动导致CPU误操作。复位信号会将MCU置于一个已知的初始状态:

  • 寄存器初始化​:所有CPU寄存器(包括程序计数器PC、堆栈指针SP)和特殊功能寄存器(SFR)被重置为默认值(通常为0)

  • 程序计数器设置​:PC会被设置为一个特定的复位向量地址​(例如,许多ARM Cortex-M芯片是0x00000000,STM32系列可能是0x8000000)

2. 启动模式选择

MCU复位后,会根据特定引导引脚​(如STM32的BOOT0和BOOT1)的电平状态决定从何处加载程序。常见的启动模式有:

  • 从主Flash启动​:最常用的模式,执行用户烧录的程序。

  • 从系统存储器启动​:通常内置了厂家预置的Bootloader,用于串口编程等。

  • ​从SRAM启动​:通常用于调试阶段,代码掉电丢失。

3. 加载向量表

CPU从启动介质指定的起始地址(复位向量地址)获取中断向量表​。向量表是一个存储异常处理程序入口地址的数组,其中最关键的两个条目是:

  • 初始栈顶指针(MSP)​​:向量表的第一个条目,CPU会将其加载到主堆栈指针寄存器中,为后续函数调用和中断处理建立栈空间

  • 复位向量​:向量表的第二个条目,指向复位中断服务程序(Reset_Handler)​​ 的入口地址。CPU获取该地址后跳转执行。

4. 执行复位中断服务程序

Reset_Handler是MCU上电后执行的第一段代码,通常由芯片厂商提供在启动文件(如startup.s)中。它负责搭建最基本的软硬件环境:

  • 初始化内存​:

    • 将已初始化的全局变量(.data段)从Flash复制到RAM(因为RAM读写更快)。

    • 将未初始化的全局变量(.bss段)清零,防止使用随机值

  • 系统初始化​:

    • 关闭中断​(cpsid i):防止初始化过程被中断打扰

    • 初始化时钟系统​:配置内核时钟、主时钟和各外设时钟

    • 关闭看门狗​:防止在冗长的初始化过程中看门狗超时导致复位

    • 配置中断向量表​:设置其位置(Flash或RAM)和偏移

  • 初始化堆栈​:为C语言环境设置好堆(heap)和栈(stack)

5. 跳转到主程序

所有初始化工作完成后,Reset_Handler会调用或跳转到C库的入口函数(如__main),该函数会最终跳转到用户的main()函数,MCU自此开始正式执行用户应用程序。

MCU的上电过程是一个从硬件到软件、从底层到上层的精细有序的初始化过程,确保了芯片能从一个确定的状态开始可靠地运行你的代码。理解这个过程有助于进行底层驱动开发、系统调试以及性能优化。

http://www.cnnetsun.cn/news/27074.html

相关文章:

  • 逻辑回归(Logistic Regression)进行多分类的实战
  • RNN(循环神经网络)原理
  • 人机协同重构创作生态——生成式AI赋能内容产业的变革与思考
  • Java 小白求职者在互联网大厂的面试实录:从 Spring Boot 到微服务架构
  • V助手舆情分析智能体:重塑舆情分析,从“人找信息”到“信息为人”
  • 连接2026:十款远程控制软件真实力横评与选择指南
  • 计算机毕业设计springboot基于Spark++Vue.js的学生管理系统 Spark+Vue 高校学生综合信息管理平台 基于 SpringBoot+Spark+Vue 的全链路学生事务中心
  • JavaScript 集合操作的哈希碰撞:攻击者如何利用特殊 Key 导致 Map/Set 性能降级到 O(N)
  • 为什么 C盘空间会莫名其妙减少(即使没装新软件)?
  • 17、深入理解 Linux 文件系统机制与结构
  • 29、Linux 软件使用与故障排除指南
  • 从入门到转行:网络安全自学与跳槽的终极建议
  • 网络安全小白自学之路,别拜师了,求人不如求己_网络安全小白怎么自学
  • 从系统运维到网络安全工程师,8个月转行真实经验分享!
  • 算法系列(Algorithm)- 快速排序
  • RobotStudio2025全功能授权
  • IsaacLab中UR机械臂与Robotiq夹爪的5大配置难点与解决方案
  • cmark Markdown解析器终极指南:从入门到精通
  • 4-bit量化FLUX模型:让专业AI绘图走进寻常百姓家
  • Excel VBA快速入门:7天从零到精通终极指南
  • AutoHotkey鼠标轨迹自动化终极指南:从零开始实现精准操作回放
  • UxPlay 终极指南:在 Linux 系统上实现 AirPlay 镜像的完整教程
  • 1-2 惜败!国安亚冠连败 中超 16 强魔咒难破
  • 一键解锁阅读3.0书源终极合集:1629个精品资源任你选
  • 一般人不懂Windows
  • Java 基于多线程机制的专项实验
  • 51、Linux 系统中 shell 环境管理与脚本编写全解析
  • 53、编写高效 Shell 脚本:从基础到实践
  • 解锁共享单车数据:从入门到精通的完整分析指南
  • KOOM:如何快速解决Android应用内存泄漏的终极方案