嵌入式关于FLASH的一点小知识

1 什么是FLASH

Flash属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。

非易失性存储设备在断电后数据也不会消失,关于非易失性存储器件/设备除了FLASH还有其它比较常见的如:光盘、软盘、机械硬盘、PROM(Programmable read-only memory)、ROM、EEPROM(Electrically erasable programmable read only memory)等。

与之相对的,易失性存储设备断电后,数据就丢失了,不论是以前的SDRAM、DDR SDRAM,还是现在的DDR3、DDR4以及LPDDR5运存都是属于易失性存储器件。

2 FLASH写过程

在嵌入式开发中,我们常常会接触到对芯片内置/外置FLASH的操作,FLASH的编程原理是只能将1写为0,而不能将0写为1,因此在FLASH编程之前,必须将要写的对应块区域擦除,擦除过程就是把所有位都写为1的过程,相对应的块区域的所有字节都变为0xFF,同时FLASH存在一个擦写均衡的问题,不能经常在同一块位置进行擦写操作,这样容易导致坏块,我们在实际过程中一定要注意这一点。

了解了前面的知识之后,拓展个固态硬盘SSD选购的知识,SSD就是NAND FLASH。购买SSD的时候我们不只要看它的品牌、价格,我们还要看它使用的什么颗粒(SLC、MLC、TLC、QLC?),不同颗粒对应的使用寿命是不同的,即不同颗粒对应的擦写次数不同,如下摘自网络的描述:

NAND FLASH的每一次读写擦都会对减少自身的寿命,为了提高容量降低成本,NAND FLASH从最初的SLC,向MLC,TLC还有QLC演变,单元存储密度从1bit,向2bit,3bit和nbit递增,但是擦写次数却不断递减,从100000(SLC)次,向5000(MLC)和1000(TLC)次和150次(QLC)递减。如果一个block寿命到了,写入这个block的数据就会出现无法处理的bit反转,这个block就不能再被使用了,需要管理算法使用保留的好块去把这个新增坏块替换下来,如果保留的好块使用完了,那么就不能再往里面写入数据了,所以管理算法需要具有平衡磨损模块,用于记录每个block的擦写次数,尽量保证每个block的擦写次数基本持平,从而提高整个器件的使用寿命。顺便说一下,当一个器件被使用了很久以后,清空平衡磨损表重新建立,每个block的磨损寿命信息就已经丢失,这时候再使用这个器件就非常危险,因为可能某个block的磨损度已经很高了,但是却没有被记录下来,这个block会突然出现无法处理的数据出错。

所以为什么我们买SSD的时候要看它的颗粒是SLC、MLC还是TLC或QLC了。SLC非常贵,个人使用的话没有必要,一般用于军工,MLC或TLC一般来说是最好的选择,以购买力来选择就行了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及嵌入式系统中的闪存(flash)时,以下是一些详细的知识点: 1. 闪存类型:常见的嵌入式系统闪存类型包括 NOR FlashNAND Flash。NOR Flash 适用于执行代码和存储引导程序等任务,而 NAND Flash 则适用于大容量数据存储。它们在结构、工作原理和性能方面有所不同。 2. 块和页:闪存被划分为块和页。块是闪存的最小擦除单元,通常为64KB或更大。页是闪存的最小编程单元,通常为512字节或更大。擦除操作会将整个块中的所有页数据擦除,而编程操作可以单独写入一页数据。 3. 寿命和耐用性:闪存具有有限的擦写寿命,每个块可以擦写的次数有限。因此,在设计嵌入式系统时需要考虑最小化对闪存的擦写操作,以延长其寿命。常见的方法包括使用 wear leveling 技术来平衡块的使用,以及使用数据压缩和错误检测纠正码等技术来减少对闪存的写入量。 4. 编程和擦除:要写入或更新闪存中的数据,需要执行编程操作。编程操作是将数据写入到一页中。如果要擦除闪存中的数据,需要执行擦除操作,将整个块的数据擦除为初始状态。擦除操作比编程操作耗时更长,且会导致整个块中的所有页数据丢失。 5. 引导加载程序:闪存通常用于存储引导加载程序(bootloader),该程序负责引导和初始化嵌入式系统。引导加载程序通常位于闪存的固定地址,并在系统启动时被加载和执行。 6. 文件系统:在嵌入式系统中,闪存也可以用作存储文件系统。常见的文件系统包括 FAT、ext2/3/4 等。文件系统管理闪存中的文件和目录结构,使嵌入式系统能够方便地读取和写入文件。 7. 可靠性和安全性:闪存中的数据可以受到各种因素影响,如电源故障、物理损坏或意外擦写。为了确保数据的可靠性和安全性,可以使用数据备份、校验和错误检测纠正码等技术。 这些是嵌入式系统中关于闪存的一些详细知识点,设计和管理闪存在嵌入式系统开发中非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值