单片机启动流程

存储器

​ 一个单片机中存在rom和ram,Soc也有rom和ram(ddrx),部分Soc还包含MMU(Memory Manage Unit 内存管理单元)--- (用于系统内存管理,比如说虚拟内存空间,内存区间的分页分块)。其rom和ram的设计需要根据所采用的芯片架构来定。不同的芯片架构具有不同的内存映射,而且如果芯片架构中支持IMU那么内存映射也变得更加复杂。依最简单的情况来分析,Cortex-M3和Cortex-M4 代码和数据共用一块内存,且不支持MMU的情况。查询Cortex-M4架构手册,可得:

​ 可见其内存映射情况,不同的芯片架构有不同的内存映射。但实际制作芯片的厂商制作出来的芯片,还要根据需求来设计实际的ram和rom以及外设等等内存。比如STM32F4ZGT6 虽然是Cortex-M4架构但是其Ram只有256k,Rom只有1024k。而不是如其架构所示的512Mb,或者说同为Cortex-M4架构的STM32中F4系列的芯片,不同型号也有不同大小的RAM和ROM。

​ 那么RAM和ROM在实际编程中是用来干什么的呢?在编写C/C++程序时,将程序分为了不同的段比如keil中的MDK-ARM编译器将程序分为四个部分code,ro-date,rw-date,zi-data等等。而不同的段又分别存储于RAM和ROM之中。具体情况如下所示:

​ 值得注意的是堆栈段中的变量是随着程序运行不断变化的,所以堆栈段在刚刚编译出来是没有已使用的大小的,所以需要事先定义一个最大的堆栈空间,通常在启动文件中指定其大小。

相关推荐
浅念-5 小时前
Linux 开发环境与工具链
linux·运维·服务器·数据结构·c++·经验分享
SUNNYSPY0016 小时前
65R135 -ASEMI超结MOS管TO-220封装
单片机
似水এ᭄往昔7 小时前
【Linux】gdb的使用
linux·运维·服务器
tian_jiangnan7 小时前
grafana白皮书
linux·服务器·grafana
jacklood7 小时前
基于STM32的车载振动曲线摆件创意设计
stm32·单片机·嵌入式硬件
mizuhokaga8 小时前
Linux内网集群基于Docker 安装 Chat2DB
linux·运维·docker
jomoly8 小时前
星闪NL002开发板测评+匆匆
单片机·嵌入式硬件
Ricky_Theseus8 小时前
数据库关系代数 - 连接操作
linux·数据库·算法
一招定胜负9 小时前
课堂教学质量综合评分系统
java·linux·前端
学不完的9 小时前
ZrLog 高可用架构监控部署指南(Prometheus + Grafana)
linux·运维·架构·负载均衡·grafana·prometheus·ab测试