RAM、ROM、FLASH内存的区别和使用

前言

在嵌入式开发中,大家都会涉及到操作内存,例如烧录程序、断电记忆读写FLASH、堆栈使用。本文主要讲解,这些常用的ROM RAM FLASH到底有什么区别,使用时需要注意些什么

ROM RAM FLASH含义

ROM:只读内存,最早的PROM,只能编程一次,无法重复写入,所以较为只读内存,后面发展出紫外线照射下可写可擦的EPROM,但由于擦写麻烦又发展出了EEPROM,电可擦的ROM。

RAM:随机存储器,可按字节读写,读写速度块,但有缺点,掉电会丢失数据。

FLASH:可擦可写。断电不丢失数据;EEPROM的一种,操作的最小内存大小为扇区/block,不同厂商叫法不一致,又分为NAND FLASH,NOR FLASH。

为了更好的区分和使用这几种存储介质,可以看下图:

经过上述框图的分类,大家应该对这几种内存的基本特性有所了解,下面叙述下,实际工作中这些内存是如何使用以及注意事项。

内存使用说明及注意事项

ROM:嵌入式中常用的主控芯片,都带有片内ROM、RAM;有的芯片说自己片内FLASH多大,实际说的是nor flash,也是ROM的一种;ROM一般用于存储我们的boot、应用程序、OTA升级包、应用内存区(用于保存要断电记忆的数据)、加密区等等。

注意事项:FLASH由于本身存储介质的特性,在高低温下、电压不稳时、以及超过擦写寿命后,擦写FLASH会有可能发生擦写错误的情况;由于FLASH操作的最小单元为扇区,那出现过擦现象时,首先此扇区的数据会丢失,另外由于存储介质的冲击特性,发生过擦时可能会影响所操作的扇区的相邻一片内存也挂掉。

例如,设备程序和应用分区,在内存中相邻;设备在高温下擦写应用区数据,发生过擦现象导致设备程序的内存分区也挂掉,那么此时设备就会变砖头了,对于产品来说是无法忍受的,各大厂商对此,都会有一系列的防护措施,见仁见智,就不多说了。

RAM:我们程序所分配的堆、编译器自动使用的栈,都是在RAM内,同时设备启动后也会根据程序策略,按需将flash中的程序拷到RAM中运行,RAM的特点就是快;

注意:使用RAM遇到的问题多为内存泄漏和内存压缩的问题,需多考虑异常情况下内存的释放问题,但很多时候无法避免,只有在经过一轮轮测试,发现问题,解决问题。

NAND FLASH:常用的设备有固态硬盘、U盘、SD卡,特点是擦写较NOR FLASH快的多,寿命高,且存储密度高,缺点是发生比特翻转的概率比NOR FLASH大的多,多用于存储大容量的数据,对存储的策略依赖较强;比较烂的产品体现就是,U盘、固态用用速度越来越慢,再严重的直接读不出数据,变成砖头。

  • 16
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值