内存笔记(一)RAM和FLASH

内存笔记(一)RAM和FLASH

前言

为什么突然要写这样一篇文章呢?主要原因是因为最近一个项目最初没有计算好所需要的RAM空间,加上我对系统规划的不合理,导致了各种各样看上去十分玄学的问题。所以就需要对RAM进行一定的了解。

RAM

##RAM介绍
RAM,一个外行人也略知一二的词汇,初步的认知可以理解为程序在运行过程中的数据存储区域,其RAM容量越大,可以运行的负荷也就越大,用平常话来说叫带的动,那么详细来说,有哪些数据会存在RAM里面呢?
RAM中存储的数据主要是DATA还有BSS1,还有一些只读的数据有时也会存储在RAM当中,这些数据是我们程序在正常运行过程中,CPU需要调用到的,那为什么CPU不直接去内存拿而是需要这么一段RAM呢?
这是因为我们从RAM中读取数据要远远快于从FLASH中读取数据,RAM的中文名叫随机存储器,也就是说从该内存中任何一个位置读取数据的速度都是一样的,不过其代价是价格一般是FLASH的6倍,因此在每个项目开始时我们应当对RAM进行预计,确保自己的RAM在60%~70%之间,我觉得是比较合理的,这样既有利于去开发我们系统的稳定性,也可以比较随意的去添加新的功能去适应市场需求。

FLASH

FLASH在嵌入式的地位类似于手机的ROM ,其作用是为了存储只读数据和程序,这对很多产品而言是非常实际的功能,类似于手机,电视机,电子表等一切需要人们进行菜单设置的智能电子产品,FLASH存储即是不可或缺的功能,如果说RAM是嵌入式的神经,那么FLASH就是RAM的大脑,即便睡一觉醒来(掉电),也会记得之前的重要数据。

堆和栈

这是几乎每一个IT行业的人都需要知道的基本知识,堆和栈的主要区别是堆是先进后出,而栈是先进先出
栈中存放的是程序中的局部变量,所以为什么中断里面不要嵌套太多层函数的原因就在这里,中断处理函数当中不允许做太多的事,而过多的有参数传递的函数封装会增加压栈的次数,所以中断里面尽量要干净明了。不要嵌套太多层。
而堆中的数据主要是对象,对于嵌入式而言更多的是数组,所以我们在挂操作系统任务分配内存的时候,其内容是存在堆中的,所以RAM大小的预估一定要考虑操作系统的影响,


  1. 指程序中未初始化或者初始化为0的全局变量和静态变量的区域。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白我超可爱的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值