0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机的RAM和FLASH认识理解

汽车玩家 来源:HACK实验室 作者:HACK实验室 2020-05-03 18:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近在一个问答社区回答了一个问题,关于单片机存储器的,于是有了想专门写一篇关于单片机存储器的想法。作为单片机内部一个重要组成部分,存储器占有很重要的地位,今天就来聊聊我对于单片机的内部存储器RAM和FLASH的一些认识和理解。

1、先聊聊存储器

存储器是单片机结构的重要组成部分,存储器是用来存储编译好的程序代码和数据的,有了存储器单片机系统才具有记忆功能。按照存储介质的特性,可以分“易失性存储器”和“非易失性存储器”两类。易失性存储器断电后,里面存储的内容会丢失;非易失性存储器断电后,数据可以依然保持。

单片机的RAM和FLASH认识理解

存储器分类

2、单片机的存储器

如下图所示是STM32F103RB系列单片机所使用的存储器大小,Flash为128KB,RAM为20KB,这里的RAM是指SRAM。

单片机的RAM和FLASH认识理解

STM32F103RB内存大小

这两个存储器的寄存器输入输出端口被组织在同一个4GB的虚拟线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。Flash用来存储编译好的程序文件,SRAM用来存储运行程序时所创建的临时数据。所以如果不加入外置存储器,那么程序里的东西就会出现在这两个存储器中。

下图为STM32F103RB单片机的内存映射图(部分),可以看到画红圈的两个就是SRAM和Flash存储器。不知道大家有没有注意,当使用J-Flash软件给stm32下载bin文件的时候需要填写起始地址,那个0x08000000其实就是Flash存储器的起始地址。

单片机的RAM和FLASH认识理解

STM32F103内存映射图

3、关于编译器生成的文件

如果你玩过单片机,那你应该对Keil这款软件不会感到陌生,下图是我的那款OLED时钟的软件用Keil编译后的编译信息。

单片机的RAM和FLASH认识理解

KEIL编译信息

很多人并不一定知道Program Size的含义,我来给大家解释一下。

Code:是程序中代码所占字节大小;

RO-data:程序只读的变量,也就是带const的,和已初始化的字符串等;

RW-data:已初始化的可读写全局/静态变量;

ZI-data:未初始化的可读写全局/静态变量;

那么这个程序占用的Flash存储器的空间大小是多少呢?程序所占Flash空间大小=Code+RO data+RW data=生成的bin文件大小。

那么这个程序占用的SRAM存储器的空间大小是多少呢?程序固定占用RAM大小=RW data+ZI data。

这些信息除了在编译器下方的信息栏里面看到,也可以在项目文件里的.map文件的最下面找到,如下图:

单片机的RAM和FLASH认识理解

.map文件信息

4、数据在存储器上的存储结构

程序在Flash上的存储结构如下图所示,通过阅读hex文件和MDK下调试综合提炼出来的。其中,ZI-data对应未初始化数据段,RW-data对应已初始化数据段,Code对应代码段。

单片机的RAM和FLASH认识理解

STM32的Flash存储结构

数据在SRAM上的结构,如下图所示。这部分大家可以参考上面的内存映射图来理解。

单片机的RAM和FLASH认识理解

STM32的SRAM存储结构

5、总结

至此我相信大家应该对stm32单片机的内部存储有了更进一步的认识。其实如果想更深入的了解单片机的运行轨迹,我建议大家来详细研究一下stm32单片机的上电内存读取过程,如果搞明白了这块收获会是非常大的。后面有机会我也会对这块进行深入的总结,并整理成文章发出来,与大家一起分享。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45351

    浏览量

    663909
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154738
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119841
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32单片机如何让生活更便捷

    智能调节电量,根据电量情况进行节能策略的调整。例如,降低加热功率或减少冲洗时间等,以此提高电能的使用效率并节约能源。 CW32单片机是一种非常强大的工具,它适用于对FLASHRAM、GPIO等资源需求
    发表于 12-11 06:11

    单片机程序的执行

    上是不是只要Flash就可以了呢(直接相当于PC上的DDRRAM)?这样成本也会比一个RAM,一个Flash低,更节省成本,对于生产商更划算)。 对于单片机的程序执行时指令和数据的存
    发表于 12-04 06:20

    广州唯创电子单片机语音芯片:智能设备的声音灵魂与技术核心

    一、揭开单片机语音芯片的神秘面纱1.从基础概念认识核心技术在智能化设备普及的今天,单片机语音芯片已成为人机交互的重要桥梁。要理解这一技术,首先需要明确其两大核心组成部分:
    的头像 发表于 11-25 09:07 401次阅读
    广州唯创电子<b class='flag-5'>单片机</b>语音芯片:智能设备的声音灵魂与技术核心

    请问单片机RAM空间不够用了怎么办?

    单片机RAM空间不够用了怎么办?
    发表于 11-25 08:09

    嵌入式与单片机定义及区别

    ,我们将深入探讨这些不同类型的嵌入式处理器的定义、特性及其在各种应用领域中的作用。 我们的单片机,即嵌入式微控制器MCU,是一种高度集成的电子器件。它内部融合了ROM/RAM、总线逻辑、定时/计数器
    发表于 11-17 08:11

    单片机的误区

    功能,你会觉得昔**仰视的高峰不再。 现在网上的普遍现象,有些自以为很牛X的老鸟人建议直接越级学stm32单片机,很多人会学得很困难,理解上很有偏差,不排除有些人天赋异禀可以不必完全弄清楚硬件结构
    发表于 11-14 07:46

    单片机烧录原理是怎样的?辉芒微单片机烧录程序详细步骤讲解

    烧录(Programming)就是把 .hex/.bin 文件里的机器码搬运进单片机片内 Flash 的过程。辉芒微(FMD)单片机内部有一块 自举 BootROM,上电时会先跑这段程序;如果检测
    的头像 发表于 09-17 16:14 1440次阅读
    <b class='flag-5'>单片机</b>烧录原理是怎样的?辉芒微<b class='flag-5'>单片机</b>烧录程序详细步骤讲解

    单片机原理及应用详解

    单片机(Microcontroller Unit, MCC)  是一种集成计算机核心功能(CPU、存储器、I/O接口等)的微型芯片,广泛应用于嵌入式系统中。以下是其原理及应用的详细介绍: 一、单片机
    的头像 发表于 08-11 13:57 1600次阅读

    嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?

    嵌入式系统里,FLASH 中的程序代码并非必须搬到 RAM 中运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论是依赖片内 Flash 还是外挂的 SPI
    的头像 发表于 08-06 10:19 1155次阅读
    嵌入式系统中,<b class='flag-5'>FLASH</b> 中的程序代码必须搬到 <b class='flag-5'>RAM</b> 中运行吗?

    单片机的储存优点是什么

    场景。深圳市安凯星科技有限公司在单片机应用开发中,充分利用这些储存优点,为拓邦、朗科、安徽龙多等客户打造了高效稳定的解决方案。 1.集成度高,节省硬件空间 单片机将程序存储器(ROM)、数据存储器(RAM)与 CPU、I/O 接
    的头像 发表于 07-31 10:09 501次阅读

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 494次阅读

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的驱动电路,才能实现稳定
    的头像 发表于 07-25 09:31 449次阅读

    单片机怎么烧程序

    单片机烧程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机应用开发中不可或缺的环节。无论是简单的灯光控制程序,还是复杂的工业控制算法,都需要通过烧
    的头像 发表于 07-23 11:47 667次阅读

    扒一扒单片机与存储器的那些事

    单片机与存储器的关系像什么?单片机里的存储都是一样的吗?为什么有的单片机既有EEPROM又有Flash
    的头像 发表于 04-10 10:06 1345次阅读
    扒一扒<b class='flag-5'>单片机</b>与存储器的那些事

    PLC和单片机到底有什么区别?

    在自动化和嵌入式开发领域,PLC和单片机是两种常见的控制系统。虽然它们有许多相似之处,但它们的功能、应用范围、开发成本等方面也存在显著差异。本文将从多个角度详细探讨这两者的不同之处,帮助大家更好地理解
    的头像 发表于 04-07 11:58 4690次阅读
    PLC和<b class='flag-5'>单片机</b>到底有什么区别?