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

相关推荐
小淮AI3 小时前
从“刷题”到“追问”:AI课堂正在重塑哪些学习旧习惯?
人工智能·学习
码上上岸3 小时前
基于单片机的老人跌倒监测报警器设计与实现
stm32·嵌入式硬件·物联网·智能硬件·硬件
恒锐丰科技林技术员3 小时前
SS6209 半桥驱动器:小型半桥电源方案的优选器件
经验分享·嵌入式硬件
wixzjsh5 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing5 小时前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
程序员大雄学编程5 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
别催小唐敲代码6 小时前
Pixhawk 6C — Mission Planner 烧录 & 全套校准教程
stm32·单片机·嵌入式硬件
指针常量7 小时前
【RL系列文章】难样本学习等
学习·大语言模型·rl·后训练
wuyk5558 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
Freak嵌入式8 小时前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活