Nand 的几个名词:oob,bbt,ecc

news/2025/2/22 22:05:12

例如Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理。8个I/O 引脚充当数据、地址、命令的复用端口。

    芯片内部存储布局及存储操作特点:
    一片Nand flash为一个设备(device), 其数据存储分层为:
    1 (Device) = 4096 (Blocks)
    1 (Block) - = 32   (Pages/Rows) 页与行是相同的意思,叫法不一样
    1 (Page)   = 528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)


     在每一页中,最后16个字节(又称OOB(out of block))用于Nand Flash命令执行完后设置状态用,剩余512个字节又分为前半部分和后半部分。可以通过Nand Flash命令00h/01h/50h分别对前半部、后半部、OOB进行定位通过
Nand Flash内置的指针指向各自的首地址。

    存储操作特点:
    1. 擦除操作的最小单位是块。
    2. Nand Flash芯片每一位(bit)只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前要一定将相应块擦除(擦除即是将相应块得位全部变为1).
    3. OOB部分的第六字节(即517字节)标志是否是坏块,如果不是坏块该值为FF,否则为坏块。
    4. 除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码。

BBT:bad block table,即坏块表。各家对nand的坏块管理方法都有差异。比如专门用nand做存储的,会把bbt放到block0,因为第0块一定是好的块。但是如果nand本身被用来boot,那么第0块就要存放程序,不能放bbt了。

有的把bbt放到最后一块,当然,这一块不能为坏块。


有的bbt中用2个bits表示1个block的状态,所以1个字节可以表示4个blocks。

bbt的大小跟nand大小有关,nand越大,需要的bbt也就越大。所以具体代码具体分析。

ECC:

NAND Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page(例如512Bytes)中只有一个或几个bit出错。一般使用一种比较专用的校验——ECC。ECC能纠正单比特错误和检测双比特错误,而且计算速度很快,但对1比特以上的错误无法纠正,对2比特以上的错误不保证能检测。


ECC一般每256字节原始数据生成3字节ECC校验数据,这三字节共24比特分成两部分:6比特的列校验和16比特的行校验,多余的两个比特置1.


当往NAND Flash的page中写入数据的时候,每256字节我们生成一个ECC校验和,称之为原ECC校验和,保存到PAGE的OOB(out-of-band)数据区中。其位置就是eccpos[]。
校验的时候,根据上述ECC生成原理不难推断:将从OOB区中读出的原ECC校验和新ECC校验和按位异或,若结果为0,则表示不存在错(或是出现了 ECC无法检测的错误);若3个字节异或结果中存在11个比特位为1,表示存在一个比特错误,且可纠正;若3个字节异或结果中只存在1个比特位为1,表示 OOB区出错;其他情况均表示出现了无法纠正的错误。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lanmanck/archive/2009/06/01/4230904.aspx


http://www.niftyadmin.cn/n/1736316.html

相关文章

QMessageBox中定位哪个按钮被按下

例: int retQMessageBox::information(this, tr("自定义模式"), tr("立刻切换到自定义模式: ")ui->textEdit->toPlainText(), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);if(retQMessageBox::Yes){ui->…

错误:Warning: File `../table/table.pro' has modification time 3.9e+08 s in the future

错误:Warning: File ../table/table.pro has modification time 3.9e08 s in the future 这个错误多半是因为改变了系统的时间,造成文件在将来被改写,,把时间改回去,把工程里面生成的中间文件例如:table.pro.user,Mak…

清空Qtablewiget 表格的内容

今天用到了Qtablewiget 清空表格内容; 其中: void QTableWidget::clear () [slot]//清空掉表格内所有内容,包括标题头Removes all items in the view. This will also remove all selections. The table dimensions stay the same.void QTableWidget::…

十说电容经典

话说电容之一:电容的作用 作为无源元件之一的电容,其作用不外乎以下几种:1、应用于电源电路,实现旁路、去藕、滤波和储能的作用。下面分类详述之:1)旁路旁路电容是为本地器件提供能量的储能器件&#xff0c…

不同窗口之间使用信号槽

不同窗口之间的信号槽&#xff0c;由一个窗口emit signal 然后在另一个窗口中用connect 响应。 editnetconfig.h #ifndef EDITNETCONFIG_H #define EDITNETCONFIG_H#include <QDialog>namespace Ui { class EditNetConfig; }class EditNetConfig : public QDialog {Q_O…

QT 获得tableWidget中QComboBox的内容

QWidget * QTableWidget::cellWidget ( int row, int column ) constReturns the widget displayed in the cell in the given row and column.QWidget * widgetui->tableWidget->cellWidget(i,0);//获得widgetQComboBox *combox(QComboBox*)widget;//强制转化为QComboBo…

FT5406触摸屏驱动

1.首先&#xff0c;分析下FT5406的基本电路接口 [html] view plaincopyExternal Interface I2C/SPI: an interface for data exchange with host INT: an interrupt signal to inform the host processor that touch data is ready for read WAKE: an interru…

qt中关于设置颜色

一般的属于QWidget子类的一些控件&#xff0c;可以直接使用样式表&#xff0c;例如 label->setStyleSheet("color:white"); Qpalette类相当于对话框或是控件的调色板&#xff0c;它管理着控件或窗体的所有颜色信息&#xff0c;每个窗体或控件都包含一个QPalette对…