单片机启动流程

存储器

​ 一个单片机中存在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之中。具体情况如下所示:

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

相关推荐
@ZzHhXx21 小时前
嵌入式学习---(单片机)
单片机·嵌入式硬件·学习
世微 如初21 小时前
精准掌控功率流动:AP3465 同步降压芯片的设计艺术
单片机·嵌入式硬件
CC呢21 小时前
基于单片机智能水龙头/智能洗漱台设计
stm32·单片机·嵌入式硬件·单片机设计
彭祥.1 天前
Mid-360 雷达获取数据并使用 Open3d+python 进行可视化
单片机·嵌入式硬件
芯岭技术1 天前
XL5300测距模组与XL32F001/PY32F030单片机测距 最大7.6M距离测量
单片机·嵌入式硬件
m0_571372821 天前
关于嵌入式学习——嵌入式硬件3
嵌入式硬件·学习
AI小小怪1 天前
在linux下使用MySQL常用的命令集合
linux·数据库·mysql·oracle
不会留有遗憾1 天前
【FPGA】单总线——DS18B20
stm32·单片机·嵌入式硬件
Gss7771 天前
Ansible 项目管理核心要点总结
linux·运维·ansible
@Ryan Ding1 天前
Jenkins调用Ansible构建LNMP平台
linux·数据库·ansible·jenkins