新闻详情

新闻详情

首页 / 资讯中心 / 详情

关于MCU启动的个人理解

发布时间:2026/9/29 7:12:57来源:尧图网络
关于MCU启动的个人理解
MCU启动流程ps其中地址是假设值MCU白启动流程1.上电电压升到阈值 →释放复位信号不是触发复位。POR 上电阶段是保持复位有效按住 CPU电压稳定后撤销复位CPU 才开始干活。2.硬件采样 BOOT0 引脚电平从 0x00000000 进行地址映射到 0x08000000 这个 flash 地址。3. 在这个 flash 地址开头有 flash 是向量表内核硬件自动读取向量表第 0 项的值载入内核 MSP 寄存器配置完栈顶指针向量表第 1 项是 Reset_Handler 地址硬件自动把这个地址载入 PCCPU 跳转到 Reset_Handler。4.Reset_Handler汇编调用SystemInit()完成时钟、Flash 等待周期然后跳转至 C 库入口__main。拷贝.data、清零.bss 是__main 里面做的。__main全部内存初始化完成之后才调用用户main()。MCU启动BOOTLOAD情况下1. 硬件采样 BOOT000x00000000 映射到 Flash 起始 0x08000000Boot 分区开头。2.读向量表加载 Boot 的 MSP 栈顶读取 Boot 的 Reset_Handler 地址送入 PC。CPU 开始执行 Bootloader 的启动代码。3. 初始化底层外设CRC 校验模块。4. 校验 App 程序。情况 AApp 校验合法 → 准备跳转到 App。情况 BApp 损坏 / 不存在 / 校验失败 → 停留在 Bootloader等待上位机升级接收固件写入 App 分区。 5. 跳转过去相当于软件触发一次 “逻辑复位”App 独立完整走一套启动流程。进入 App 的 Reset_Handler然后走一遍正常启动的流程。5. 跳转过去相当于软件触发一次 “逻辑复位”App 独立完整走一套启动流程。进入 App 的 Reset_Handler然后走一遍正常启动的流程。ps1.跳转app过程中关闭所有 Boot 打开的中断SysTick、UART、定时器等清除中断挂起位。关闭已经开启的外设。2.bootload的Reset_Handler是硬件跳转是拿到固件的时候就定死的而后面app重新启动的Reset_Handler是软件复位是可以人为配置的。A/B 双分区 Bootloader核心思想Flash 划分A 分区、B 分区两个分区都可以存放完整 App 固件任何时刻只有一个分区是可运行的「活动分区」另一个作为备份 / 待升级分区。1. 在 bootload 的 main启动之后 初始化串口 / 无线、Flash 驱动、CRC读取【分区标记区】判断分区状态。2. 知道哪个分区是活动分区active本次要从这个分区启动知道 A/B 分区各自固件 CRC、固件版本升级标记 / 校验标记 / 回滚标记。3.A 区 CRC 合法正常走完整流程并运行业务。不合法切换 B 区进行 B 固件的校验B 区 CRC 合法就启动 B 区B 区不合法就停在 BOOT 的 main当中其中可能有循环去等待 OTA。4. 升级包写入【非活动分区】全部写入完成后App 计算 B 分区完整 CRC写入 Flash 标记区设置标记准备把 B 置为下一次启动的活动分区。App 触发软复位。ps写CRC标志位可以在接受完固件后完成也可以在BOOT效验的时候再去计算。5.重启后 Boot 读取标记尝试启动 B 分区B 分区 CRC 合法跳转到 B 的 App。App 正常启动成功写入启动确认标记B 成为稳定活动分区。若 B 固件异常App 来不及写入确认标记就崩溃看门狗复位Boot 检测到尝试启动 B 但无成功标记自动回滚将活动分区切回 A。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Git与GitLab零到一实操:安装部署、SSH免密与代码上传指南 2026/9/29 9:00:56

Git与GitLab零到一实操:安装部署、SSH免密与代码上传指南

如果你坐在新配的电脑前,刚把Git和GitLab从零到一折腾了一遍,应该能理解这篇东西想讲什么:装好Git、配对SSH、部署一套能用的GitLab社区版,再跑通本地项目和远端仓库之间那套日常操作。看起来是五六件小事,串起来处处有…

阅读更多 →
Win10 从零安装 WSL2:Ubuntu 22.04 开发环境配置与调优 2026/9/29 9:00:49

Win10 从零安装 WSL2:Ubuntu 22.04 开发环境配置与调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
TF-LLM:大语言模型驱动的可解释交通预测与工程落地 2026/9/29 9:00:49

TF-LLM:大语言模型驱动的可解释交通预测与工程落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
.NET Core WebApi文件上传下载服务实战:从搭建到避坑 2026/9/29 9:00:49

.NET Core WebApi文件上传下载服务实战:从搭建到避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
GeneMark-ES/ET/EP安装实战:从许可证配置到三种运行模式详解 2026/9/29 9:00:42

GeneMark-ES/ET/EP安装实战:从许可证配置到三种运行模式详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Windows密码重置原理与Secure Boot绕过实战指南 2026/9/29 9:00:35

Windows密码重置原理与Secure Boot绕过实战指南

1. 这不是“破解”,而是系统级密码重置:从Windows安全机制说起如果你在开机时输入错误密码超过五次,屏幕右下角弹出的不是“密码错误”,而是“你的设备已被锁定。请稍后再试”——这说明你面对的不是简单的字符比对失败&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉