嵌入式系统存储器

简介

首先分为两大类:主存(内存)和辅存(非易失存储)。

主存和辅存的区别主要是访问速度和数据易失性两个考量。

主存速度快,但掉电后数据丢失。

辅存能掉电后保存数据,但访问速度慢。比如PC的硬盘。

内存

在嵌入式系统中,主存分为SRAM和DRAM,在速度和成本方面有着差异。

1,Static Random Access Memory (SRAM)

速度快,大概是DRAM的4倍。但每一bit的数据,需要更多的晶体管,所以更贵。

2,Dynamic Random Access Memory (DRAM)

为了保持数据,需要每隔几毫秒就刷新一下,否则数据就会被擦除。即使电源没断电还是需要刷新。

因为DRAM中的数据bit是保存在电容中,经过一定时间数据就会消失,所以需要一个控制器,不断选中一行行地址来补充电荷。

这个周期是ms级别的,比如1s中刷新4次。

因为有刷新操作,所以耗电更多。

最开始的SRAM就叫做RAM,后来DRAM出现了,才从RAM改名为SRAM,以示区分。

在嵌入式系统中,通常是SRAM和DRAM混合使用。

辅存

一般是用来存储程序和数据的电子器件。

第一个,要介绍的是掩膜ROM(Masked ROM)。

掩膜的意思是指这种IC器件的生产方式,是工艺厂家根据客户所要存储的信息,设计专用的掩膜板进行生产的。

这个是在存储器件制造的过程中,就把数据写进去,所以后面也无法更新数据。

这种功能和应用的使用场景,一般是用来存储微控制器的bootloader程序,还有微处理器的微码程序。

微码就是CPU中的软件,用来将复杂的指令转换成CPU可以能字节执行的简单指令序列,或者预防CPU硬件设计问题,能提供一些软件补救措施。

比如硬件电路设计不对,就要飞个线,但CPU没法飞线,就使用软件改变一些控制位,来改变电路行为。

这样的话,CPU得到一个指令,就可以根据不同的控制条件,来输出不同的操作。

这种存储使用的场景,一般是大规模生产的,生命周期很长的产品,从而成本控制很严格。

并且每个bit数据比其他种类存储器件需要的空间很小,这样设计出来的集成电路也就更小,所以厂商很很喜欢这一点。

第二个,是PROM,指Programmable Read-Only Memory。也称为OTP ROM,one time Programable ROM。

和掩膜ROM不同,可以烧写一次,烧写完后既不能擦除也不能再烧写。

比如台湾松瀚Sonix的8bit的芯片,SN8PXXXX,低功耗的8位微控制器MCU,4KB的OTP ROM,表示,只能烧写一次,所以用调试器调试好再发布量产软件,出厂了就不能改了。

当时用这个芯片,好像有个功能用调试器模拟不来,好像是休眠功耗,要测电流。所以改一次代码,用烧写器烧一个芯片,然后再把旧芯片吹下来,新芯片贴上去,很麻烦。

不过这么少的资源,功能一定很简单,成本也很低,自然是符合其使用场景的,不能重新烧写也没问题,还有内存SRAM是256个字节。

使用场景(Function and Application area):

用于大规模生产的,但生命周期相对掩膜ROM短一些的产品。

较短的生命周期是因为科技迭代较快,可能每年就会有新的产品推出,所以使用掩膜ROM来做不划算。

考虑投入产出比(cost/benefit trade-off)。

这类产品包括TV,微波炉和洗碗机等。

第三个,是EPROM。

全程Erasable Programmable Read-Only Memory。这类器件通常在顶部有一个小的玻璃窗口,如果在紫外线直射下可以擦除芯片数据。

擦除以后,就能够再次烧写数据。

使用场景:

和PROM类似,也是用来存储源代码生成的软件和常量数据。但这类芯片经常用于软件开发阶段,因为可以重复擦除和烧写,这在开发阶段很有用。

在开发完成后,硬件设计师通常会把这个芯片换成PROM。这样PROM和EPROM的最终使用场景是类似的。

第四个,EEPROM。

全称是Electrically Erasable Programmable Read-Only Memory。

这类器件使用电压就可以重新擦除和烧写,而不用像EPROM一样,使用UV(紫外)射线。

使用场景:

一般有三个,

1,在产品开发阶段用于存储软件。

2,存储产品使用过程中需要的常量数据。

3,用于软件可升级的产品。

掩膜ROM,PROM和EPROM是真正的ROM,因为它们仅可读,但EEPROM可以作为一个仅可读和可读可写存储设备的混合体。

通过控制器的操作,EEPROM的每个数据bit是可编程的,并且和RAM相比是非易失的数据。

这样在产品出场并到达用户手中时,产品制造商还可以对软件进行升级,这提高了产品的品质。

第五个,Flash存储器。

这是目前最流行的存储器,根据类型区分有Nor Flash,Nand flash等,根据接口区分有SPI-Flash等。

和EEPROM一样,可擦除可重写,但不是一个bit一个bit操作,而是一个block位单位操作。

Block的大小是多个字节,在芯片手册中可以查询。

使用场景:

Flash Memory的最大优点是经济性(cost-effective),以每个字节为单位来计算,这个比EEPROM要便宜的多。

所以可以用来存储很大的文件。现在越来越复杂的嵌入式系统,也需要更多的存储空间来存储软件和数据。

NorFlash 特点

NOR可以直接使用,并可在上面直接运行代码。不需要初始化

NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节

NOR与NAND特性的差别,主要是由于其内部“地址/数据线”是否分开导致的。由于 NOR的地址线和数据线分开,它可以按“字节”读写数据,符合 CPU 的指令译码执行要求,所以假如 NOR上存储了代码指令, CPU 给 NOR一个地址, NOR 就能向CPU 返回一个数据让 CPU 执行,中间不需要额外的处理操作。

由于 NAND 的数据和地址线共用,只能按“块”来读写数据,假如 NAND 上存储了代码指令, CPU 给 NAND 地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。 即不支持立即执行的特性(eXecute In Place),若代码存储在NAND上,可以先把它加载到RAM存储器上,再由CPU执行。  

第六个,NVRAM (Non Volatile Random Access Memory)

这是一种特殊的RAM,用来存储维持性数据。基本上就是一个SRAM带一个供电(比如纽扣电池CR2032),也叫做RAM disks。

使用场景:

一般使用在启动时间很重要的场合。毫秒级的时间损失都是不可接受的。

所以不能从一个低速的存储器中,比如flash或EEPROM中来加载程序。

一般只是把这低速存储器作为备份,在更换电池时,把运行中的数据存到备份存储器中,电池更换后,再重新载入。

参考链接:

https://embeddedinventor.com/8-types-of-memory-every-embedded-engineer-should-know-about/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜流冰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值