单片机启动流程

存储器

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

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

相关推荐
ShallWeL33 分钟前
NVIDIA Jetson 早期系列演进
人工智能·嵌入式硬件·边缘计算·智能硬件
探索云原生1 小时前
终于搞懂 Kueue:5 个核心对象一次讲透
linux·docker·ai·云原生·kubernetes
An_s2 小时前
机器学习python之识别图中物品信息
java·linux·开发语言
2501_914245932 小时前
C语言与硬件交互:从GPIO到中断的嵌入式编程实践
c语言·单片机·交互
Championship.23.243 小时前
Linux 3.0 LVDS驱动开发详解
linux·运维·驱动开发·lvds
炸膛坦客4 小时前
单片机/C/C++八股:(二十四)编译文件( .bin 和 .hex ,包括 .elf 和 .axf )
c语言·c++·单片机
风向决定发型丶4 小时前
Shell中的特殊变量
linux·运维·bash
Yunhoa4 小时前
51单片机(DS18B20 数字温度传感器)
单片机·嵌入式硬件·51单片机
mounter6254 小时前
走向长时运行:引入协程(Coroutines),打破 BPF 程序的“一堂到底”限制
linux·ebpf·kernel
运维大师5 小时前
【Linux运维极简教程】05-软件包管理
linux·运维·服务器