嵌入式学习笔记(46) NandFlash的结构

嵌入式学习笔记(46) NandFlash的结构_第1张图片

9.2.1 Nand的单元组织:block与page(大页Nand与小页Nand)

(1)Nand的页和以前讲过的块设备(尤其是硬盘)的扇区是类似的。扇区最早在磁盘中是512字节,后来也有些高级硬盘扇区不是512字节,而是1024字节/2048字节/4096字节等。Nand也是一样,不同的Nand的页的大小是不同的,也有512字节/1024字节/2048字节/4096字节等。

(2)一个block等于多少page也是不定的,不同的Nand也不同。一个Nand芯片有多少个block也是不定的,不同的Nand芯片也不同。

总结:Nand的组织架构挺乱的,接口时序也不同,造成结果就是不同厂家的Nand芯片,或者是同一个厂家的不同系列型号存储容量的Nand接口也不一样。所以Nand有一个很大的问题就是一旦升级容量或者换芯片系列则硬件要重新做、软件要重新移植。

9.2.2带内数据和带外数据(ECC与坏块标记)

(1)Nand的每个页由2部分组成,这2部分各自都有一定的存储空间。譬如K9F2G08中2K+64B。其中2K字节数据带内数据,是我们真正的存储空间,将来存储在Nand中的有效数据就是存在这2K范围内的(我们平时计算Nand的容量时也是只考虑这2KB);64字节的带外数据不能用来存储有效数据,是作为别的附加用途的(譬如用来存储ECC数据、用来存储坏块标志等····)

(2)什么是ECC:(error correction code,错误校验码)。因为Nand存储本身出错(位反转)概率高(Nand较Nor最大的缺点就是稳定性),所以当我们将有效信息存储到Nand中时都会同时按照一定算法计算一个ECC信息(譬如CRC16等校验算法),将ECC信息同时存储到Nand这个页的带外数据区。然后等将来读取数据时,对数据用同样的算法再计算一次ECC,并且和从带外数据区读出的ECC进行校验。如果校验通过则证明Nand的有效数据可信,如果校验不通过则证明这个数据已经被破坏(只能丢弃或者尝试修复)。

(3)坏块标志:Nand芯片用一段时间后,可能某些块会坏掉(这些块无法擦除了或者无法读写了),Nand的坏块非常类似于硬盘的坏道。坏块是不可避免的,而且

随着Nand的使用,坏块会越来越多。当坏块还不算太多时这个Nand都是可以用的,除非坏块太多了不划算使用了才会换新的。所以我们为了管理Nand发明了一种坏块标志机制。Nand的每个页的64字节的带外数据中,我们(一般是文件系统)

定义一个固定位置(譬如定位24字节)来标记这个块是好的还是坏的。文件系统在发现这个块已经坏了没法用了时会将这个块标记为坏块,以后访问Nand时直接跳过这个块即可。

9.2.3 Nand的地址时序

(1)Nand的地址由多位,分4/5周期通过IO引脚发送给Nand芯片来对Nand进行寻址。寻址的最小单位是字节,但是读写的最小单位是页。

(2)Nand的地址在写代码时要按照Nand要求的时序和顺序依次写入。

9.2.4 Nand的命令码

(1)外部SoC要想通过Nand控制器来访问Nand(实质就是通过Nand接口),就必须按照Nand接口给Nand发送命令、地址、数据等信息来读写Nand。

(2)Nand芯片内部的管理电路本身可以接受外部发送的命令,然后根据这些命令来读写Nand内容与外部SoC交互。所以我们队Nand进行的所有操作(擦除、读、写...)都要有命令、地址、数据的参与才能完成,而且必须按照Nand芯片规定的流程来做。

 嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。在评论区输入“嵌入式”,即可0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

你可能感兴趣的:(嵌入式学习笔记,嵌入式,编程,学习,笔记,嵌入式硬件,stm32,单片机)