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单片机的上电内存读取过程,如果搞明白了这块收获会是非常大的。后面有机会我也会对这块进行深入的总结,并整理成文章发出来,与大家一起分享。

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

    关注

    6078

    文章

    45568

    浏览量

    673301
  • FlaSh
    +关注

    关注

    10

    文章

    1759

    浏览量

    155868
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1400

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机中有FLASH为啥还需要EEROM?

    单片机里明明有FLASH,为啥还要再塞个EEPROM?不少刚接触嵌入式的小伙伴估计都有过这样的疑惑:FLASH能存程序,容量大,读取又快,干嘛还要加个读写慢、容量小的EEPROM?这不是多此一举嘛。其实,这俩兄弟各有所长,分工明
    的头像 发表于 03-05 13:39 258次阅读
    <b class='flag-5'>单片机</b>中有<b class='flag-5'>FLASH</b>为啥还需要EEROM?

    单片机里的程序运行方式

    我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序在
    发表于 01-16 06:57

    单片机Flash是什么类型

    最近看到交流群小伙伴在讨论单片机Flash的话题,比如:Flash类型、速度等。 我们平时在单片机开发过程中也会遇到各种各样的Flash,比
    发表于 01-04 07:10

    Infineon SEMPER NOR Flash与HYPERRAM™ 2.0 Gen2 Flash+RAM MCP产品解析

    Infineon SEMPER NOR Flash与HYPERRAM™ 2.0 Gen2 Flash+RAM MCP产品解析 引言 在汽车集群和工业HMI应用中,通常会使用NOR Flash来存储
    的头像 发表于 12-20 16:20 1352次阅读

    单片机程序的执行

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

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

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

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

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

    单片机的误区

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

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

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

    单片机原理及应用详解

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

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

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

    单片机的储存优点是什么

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

    怎么测单片机系统频率

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

    单片机怎么驱动电机?

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

    单片机怎么烧程序

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