当前位置: 首页 > news >正文

单片机启动流程

存储器

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

image-20231103201402866

​ 可见其内存映射情况,不同的芯片架构有不同的内存映射。但实际制作芯片的厂商制作出来的芯片,还要根据需求来设计实际的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之中。具体情况如下所示:

image-20231103213913633

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

image-20231103195626627

http://www.lryc.cn/news/226765.html

相关文章:

  • Linux学习教程(第二章 Linux系统安装)2
  • 操作系统 | proc文件系统
  • 刷题笔记(第五天)
  • 【OpenHarmony内核】Harmony内核互斥性信号量
  • 给OFFICE增加一个功能搜索
  • 53基于matlab的Tamura纹理特征提取
  • C++初阶--类与对象(3)(图解)
  • 考研分享第1期 | 末9生物跨专业考研北京大学电子信息404分经验分享
  • openGauss学习笔记-120 openGauss 数据库管理-设置密态等值查询-概述及使用gsql操作密态数据库
  • 软件自动化测试平台
  • springMVC 导出Excel ,并提供下载(处理日期格式问题)
  • 软件工程理论与实践 (吕云翔) 第二章软件过程 课后习题及其答案
  • HTML跳转锚点
  • 新能源汽车高压线束是如何快速连接到测试设备上进行电性能测试的
  • Azure 机器学习 - 使用受保护工作区时的网络流量流
  • 强化学习中蒙特卡罗方法
  • Pytorch从零开始实战09
  • Milvus Cloud ——Agent 的展望
  • EM@比例恒等式@分式恒等式
  • 使用米联客FPGA开发板进行光口开发时遇到的问题总结
  • 【chat】 1:Ubuntu 20.04.3 编译安装moduo master分支
  • C#基于inpoutx64读写ECRAM硬件信息
  • 图论13-最小生成树-Kruskal算法+Prim算法
  • 免费博客搭建笔记
  • 网络运维Day10
  • @Cacheable 注解的 @CacheManager 示例
  • springboot二维码示例
  • nacos做服务配置和服务器发现
  • KCC@广州与 TiDB 社区联手—广州开源盛宴
  • CSS3 分页、框大小、弹性盒子