单片机启动流程

存储器

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

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

相关推荐
wqqqianqian6 分钟前
国产linux系统(银河麒麟,统信uos)使用 PageOffice 在线打开Word文件,并用前端对话框实现填空填表
linux·前端·word·pageoffice
清风来点灯23 分钟前
Ubuntu22.04安装显卡驱动/卸载显卡驱动
linux·笔记·ubuntu
不脱发的程序猿32 分钟前
STM32实现九轴IMU的卡尔曼滤波
stm32·嵌入式硬件
吃货界的硬件攻城狮1 小时前
【STM32 学习笔记】USART串口
笔记·stm32·单片机·学习
吴爃1 小时前
linux搭建hadoop学习
linux·hadoop·学习
海尔辛2 小时前
学习黑客Linux Flags and Switches 入门
linux·运维·学习
檀越剑指大厂2 小时前
【Linux系列】跨平台安装与配置 Vim 文本编辑器
linux·运维·vim
吃货界的硬件攻城狮2 小时前
【STM32 学习笔记】I2C通信协议
笔记·stm32·单片机·学习
Johny_Zhao3 小时前
思科安全大模型SOC作业应用分析
linux·网络·人工智能·网络安全·ai·信息安全·云计算·shell·devops·cisco·yum源·系统运维·itsm
阿沁QWQ3 小时前
目录粘滞位的使用
linux