【笔记】NandFlash介绍

目录

 

NandFlash结构

地址访问

如何使用NandFlash芯片?


NandFlash结构

  • 页(page)

        读和写的最小单位,不同厂家的芯片,大小有不同,常见的有256、512、1024、2048字节。

  • 块(block)

        擦除的最小单位,不同厂家大小也有所不同。

  • 额外空间()

         这块空间是在每一页的后面多出来的存储空间,不算入总的存储空间,大小一般数十个字节,视芯片而定。

地址访问

NandFlash的地址访问大致由列地址和行地址组成,如下图。

 

存储空间的访问,由行地址和列地址组成。
行地址:块地址+页地址
列地址:一页中的那个字节

NandFlash芯片除了位宽、命令、各个厂商有所差异外,这个地址的访问也是差异的,以下是两个不同厂商的NandFlash的地址访问描述。

基本上都是4周期和5周期两种,这个主要由存储体大小决定。

5周期

4周期

如何使用NandFlash芯片?

  1. 基本功能:读取、写入、擦除
  2. 扩展功能:ECC数据保存校验、坏块管理

读取操作:

  • 注意读取一般是按页读取,使用相应的读写命令。(这些命令各大厂商大体一致)
  • 实际使用中发现,其实可以按字节为单位,读取比页更小的数量,为了访问效率,应该按页读取。

写入操作:

  • 写入操作需要注意,必须保证待写入的存储区域为0xFF才能写入,这个特性基本上的Flash都是这样。所以一般的写入过程都是在擦除后进行。
  • 写入也是一般按页写入,使用相应命令完成。另外写入一般叫做“编程”(Program Operations)。

擦除操作:

  • 目的是把待处理的区域全部擦写成0xFF
  • 操作单位为块,按块擦除。

ECC数据保存校验、坏块管理:

由于Nand的物理特性,导致它的存储单元在使用的过程中会损坏,导致每次读写的数据,可能就不是原数据了。所以在每次读取和写入的操作时,会对数据进行校验,确保写入和读取的数据正确性。

ECC(Error Checking and Correcting)

  • 一般把要写入的这一页数据做一个计算,得到与这一页数据相关的一个值。把这个值写入到额外空间,等到读取时,把读取的数据再进行相同的计算,得到的值与写入时保存在额外空间的计算值进行对比,以验证数据的正确性,这个过程就叫做ECC(Error Checking and Correcting).

  • 这个计算过程可以使用软件计算、或者硬件计算。

软件计算(软件ECC):通过程序员自己设计相应的算法,通过占用CPU进行计算。

硬件计算(硬件ECC):在主控芯片的NandFlash控制器中,设计了专用的硬件进行相应计算。在读写前通过寄存器控制开启计算,读写后到相应的寄存器中获取计算结果就行。

下面以u-boot中NXP的一款控制器,使用硬件ECC的读取程序作为示例

坏块管理(待确定)

  • ​​​​​​​坏块管理,简单来说就是,在读写过程中或者专门检测中,发现该块损坏了,就对该块进行标记,类似于ECC数据一样,把标记值存入额外空间中。
  • 正常操作时,前从额外空间中读取标记值,确认是否为坏块。
  • PS:笔者尚未了解清楚,待定。

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值