【单片机基础知识】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

相关推荐
لا معنى له2 小时前
目标检测的内涵、发展和经典模型--学习笔记
人工智能·笔记·深度学习·学习·目标检测·机器学习
石像鬼₧魂石4 小时前
内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)
linux·windows·学习·ubuntu
醇氧6 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
敲敲了个代码6 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
纳米软件7 小时前
IGBT模块测试项目集合——纳米软件
单片机·嵌入式硬件·模块测试
Pandora_4177 小时前
cursor学习
学习
崇山峻岭之间8 小时前
Matlab学习笔记02
笔记·学习·matlab
Kiri霧8 小时前
Range循环和切片
前端·后端·学习·golang
hssfscv10 小时前
Javaweb 学习笔记——html+css
前端·笔记·学习
Mr.Jessy10 小时前
JavaScript高级:深浅拷贝、异常处理、防抖及节流
开发语言·前端·javascript·学习