【单片机基础知识】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]——老版

请跳转到最新版:

【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]-CSDN博客

参考资料:

MCU的三种启动方式 - EdgeAI Lab

立芯嵌入式的视频

在SRAM中运行代码 - EdgeAI Lab

利用 Boot 选择不同的启动方式:

根据不同的启动方式,将不同的地址(主 FLASH/系统存储器/嵌入式 SRAM)映射到 0x0000 0000(系统中断向量表) 上

【不是问题的问题】为什么STM32的Flash地址要设置到0x08000000 - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

1. 从系统存储器启动:

【BootLoader】当选择系统存储器启动,从 0x0000 0000 跳转至对应地址启动(映射),一般系统存储器启动的话会存放 BootLoader 程序

我们可以提前在系统存储器写入 BootLoader 程序(各种通信接口)的,然后以该方式启动
此时用 IAP 下载工具烧录程序,单片机执行 BootLoader 程序,会以对应的通信接口返回指定数据,符合通信要求后(收发特定数据)。
IAP 下载工具开始发送烧录程序(hex 文件),由单片机的 BootLoader 程序(利用对应通信接口)一一接收,然后逐个刷新到 Flash 上(Flash memory-主 Flash[0x0800 0000 - 0x0807 FFFF = 512KB 标定大小 ]),

一般出厂会自带 Boot 程序,一般系统存储器又叫 BootROM

2. 从主 Flash 启动(一般单片机的启动方式)

【不是问题的问题】为什么STM32的Flash地址要设置到0x08000000 - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

还是将 0x0800 0000 映射到 0x0000 0000(由 AHB 总线映射)

3. 从嵌入式 SRAM 启动(RAM 空间):【比较好奇】

在SRAM中运行代码 - EdgeAI Lab

使用场景:为么为什么需要从SRAM启动

可能的原因有以下几点(参考资料《ARM Cortex M3 & M4权威指南》15.7节MCU经典书籍 - EdgeAI Lab):

  1. 所使用的设备可能具有OTP ROM(仅可进行一次编程),因此在最终确定前,是不会将程序编程到芯片中的。
  2. 有些微控制器中没有内部Flash存储器,需要使用外部的存储器,在软件开发期间,可能会想用内部的SRAM进行测试。
  3. 对于产品测试或者特定方面的测试,不想改动Flash中现有的程序实现某些新功能的测试工作 ,此时可以将测试代码下载到SRAM中运行。【在 Flash 烧一次后,不想改变现有 Flash 程序,但是想调试,可以利用 SRAM 空间进行调试】
  4. 对于Flash存储器比较小的系统,可能想在启动阶段将程序从Flash复制到SRAM中以提高性能,并在SRAM中执行程序以达到最佳性能。

基本理解:

还是将 0x2000 0000 映射到 0x0000 0000(由 AHB 总线映射)

  • 在 SRAM 中也是可以放一个小的 BootLoader 程序,也可以搞 IAP 下载【应用案例:Jlink 下载算法启动后跑到 SRAM 中】

实现步骤:

在SRAM中运行代码 - EdgeAI Lab

相关推荐
xiangw@GZ14 分钟前
智能锁TouchKey的抗干扰设计【2】-软件算法
嵌入式硬件
iCxhust18 分钟前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
一起搞IT吧20 分钟前
相机Camera日志实例分析之二十:相机Camx【照片后置4800/5000/6400万拍照】单帧流程日志详解
android·嵌入式硬件·数码相机·智能手机
MegaDataFlowers1 小时前
英语六级我还在背单词:Unit 1(Lesson 2)
学习
笨笨饿1 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
东京老树根2 小时前
SAP学习笔记 - BTP SAP Build12 - SAP Build Content Package
笔记·学习
幸福巡礼5 小时前
【LangChain 1.2 实战(一)】 概述
笔记·学习·langchain
知识分享小能手5 小时前
R语言入门学习教程,从入门到精通,R语言数据计算与分组统计(9)
开发语言·学习·r语言
lizhihai_996 小时前
股市学习心得—半导体12种核心材料
大数据·人工智能·学习
FreakStudio6 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy