nand flash中的坏块

NAND FLASH 坏块相关知识 NAND FLASH 坏块相关知识 NAND FLASH坏块NAND FLASH 坏块相关知识相关概念NAND FLASH1 NAND FLASH Memory介绍2 NAND FLASH的硬件实现机制Bad Block3.1Bad block的定义3.2 坏块的分类:出厂坏块FBB & 使用坏块 GBB3.3 坏块管理&坏块表:3.4坏块的数量和位置3.5 坏块对好块的影响3.6 坏块的检测3.7 坏块的标记 相关概念 NAND FLASH 1 NAND FLASH Memory介绍 NA 阅读详情

NAND Flash的坏块

1)为什么会出现坏块

由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。
坏块的特性是:
    当编程/擦除这个块时,不能将某些位拉高,这会造成Page Program和Block Erase操作时的错误,相应地反映到Status Register的相应位。

2)坏块的分类
总体上,坏块可以分为两大类
a.固有坏块
这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将坏块第一个page的spare area的第6个byte标记为不等于0xff的值。

b.使用坏块
这是在NAND Flash使用过程中,如果Block Erase或者Page Program错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。为了和固有坏块信息保持一致,将新发现的坏块的第一个page的 spare area的第6个Byte标记为非0xff的值。


3)坏块管理

    根据上面的这些叙述,可以了解NAND Flash出厂时在spare area中已经反映出了坏块信息,因此,如果在擦除一个块之前,一定要先check一下spare area的第6个byte是否是0xff,如果是就证明这是一个好块,可以擦除;如果是非0xff,那么就不能擦除。

当然,这样处理可能会犯一个错误―――“错杀伪坏块”,因为在芯片操作过程中可能由于电压不稳定等偶然因素会造成NAND操作的错误。但是,为了数据的可靠性及软件设计的简单化,我们就要奉行“蒋委员长”的“宁可错杀一千,也决不放过一个”的宗旨。

4)补充
   (1)需要对前面由于Page Program错误发现的坏块进行一下特别说明。如果在对一个块的某个page进行编程的时候发生了错误就要把这个块标记为坏块,首先就要把其他好的page里面的内容备份到另外一个空的好块里面,然后,把这个块标记为坏块。

    当然,这可能会犯“错杀”之误,一个补救的办法,就是在进行完页备份之后,再将这个块擦除一遍,如果Block Erase发生错误,那就证明这个块是个真正的坏块,那就毫不犹豫地将它打个“戳”吧!
(2)可能有人会问,为什么要使用spare area的第六个byte作为坏块标记。这是NAND Flash生产商的默认约定,你可以看到Samsung,Toshiba,STMicroelectronics都是使用这个Byte作为坏块标记的。


//20080522

 xdfc_read读取一个Page不会出问题,如果连续读取1个blocks大小,将会错误!svn://192.168.1.250/blob/pool/b074_d...ptp_pxa930/DKB

 volatile UINT32_T   r_es;
volatile UINT32_T   r_os;
int verify_flash_data(FlashBootType_T fbt)
{
    UINT_T Retval;
    P_FlashProperties_T pFlashP = GetFlashProperties(fbt);
    ReadFlash_F read;
    UINT_T tmp_buffer;
#define page_size           (2048)
#define block_size          (64*page_size)
#define read_start_addr    (1*block_size)
#define read_end_addr      (2048*block_size) //waste 1:30
    int i,j;

    read = pFlashP->ReadFromFlash;
    tmp_buffer = 0x80800000;

    r_es = r_os = 0;
    for(i = read_start_addr;i < read_end_addr;i += block_size)
    {
        for(j = 0;j < block_size;j += page_size)
        {
            Retval = read(i + j, tmp_buffer, 2048, fbt);
            if(Retval == NoError)r_os++;
            else r_es++;
        }
    }
}


volatile UINT32_T   w_es;
volatile UINT32_T   w_os;
int write_flash_data(FlashBootType_T fbt)
{
    UINT_T Retval;
    P_FlashProperties_T pFlashP = GetFlashProperties(fbt);
    WriteFlash_F write = pFlashP->WriteToFlash;
    UINT_T tmp_buffer;
#define block_size          (64*2048)
#define write_start_addr    (1*block_size)
#define write_end_addr      (2048*block_size) //waste 1:30
    int i;

    tmp_buffer = 0x80800000;

    {
        char *p = (char*)tmp_buffer;
        for(i = 0;i < block_size;i++)
        {
            *p++ = i;
        }
    }

    w_es = w_os = 0;
    for(i = write_start_addr;i < write_end_addr;i += block_size)
    {
        Retval = write(i, tmp_buffer, block_size, fbt);
        if(Retval == NoError)w_os++;
        else w_es++;
    }
}
原文地址 http://hi.baidu.com/mythinks/blog/item/f9482ddbe28f5763d0164e9e.html
Nand Flash坏块 nand flash坏块 阅读详情

相关推荐

Nand Flash基础知识与坏块管理机制的研究

概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做

Linux/Android/AI 11万+

SPI NAND FLASH坏块管理

这个比较少见,因为有些spi nand flash是提供了一个坏块表管理的.恰好我使用的这款是没有的.第一步首先抽象出nand 驱动typedef struct{ unsigned char (*readID)(unsigned char *rxID); unsigned char (*init)(void); unsigned char (*readPage)(unsigned long ...

weixin_31980479的博客 8886

NAND Flash产生坏块原因

由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。坏块的特性是:当编程/擦除这个块时,不能将某些位拉高,这会造成Page Program和Block Erase操作时的错误,相应地反映到Status Register的相应位。

NANDFLASH的学习(二)

文章目录三、动态坏块处理(一)、坏块的概念(二)、坏块管理的方法1、跳过坏块2、保留坏块(三)、动态坏块管理算法设计思想(四)、动态管理算法设计流程及函数实现1、建立坏块表 上一篇文章NANDFLASH的深度学习(一) 三、动态坏块处理 (一)、坏块的概念 NAND Flash由于生产工艺的问题,会存在一定数量的坏块。它产生的原因是解码失败、地址线错误和存储单元等,当区块超出擦写次数时也很容易变成...

oyzy_Sean的篝火 3167

NAND flash中坏块管理

Nand Flash 中,一个块中含有 1 个或多个位是坏的,就称为其为坏块 Bad Block。 坏块的稳定性是无法保证的,也就是说,不能保证你写入的数据是对的,或者写入对了,读 出来也不一定对的。与此对应的正常的块,肯定是写入读出都是正常的。

LMX2820即时校准实战:从失锁到稳定锁频的完整指南

本文详细解析了LMX2820锁相芯片在高频段(11.3-22.6GHz)易出现随机失锁问题的根源,并提供了即时校准(InstCal)的完整实战指南。通过寄存器编程、Index例程和校准配置的关键步骤,确保从失锁到稳定锁频的高可靠性,大幅提升射频合成器在通信与测试测量应用中的性能。

bert9linguist的博客 960

【重要】Nand Flash基础知识与坏块管理机制的介绍

Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做Flash Mem。出现坏块,则将数据顺序写入下一个好块。相对应的是,所有正常的块,好的块,里面所有数据都是0xFF的。

lyd0813的博客 4504

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 376

spi nand 硬件组成介绍

以W25N01GV型号进行举例介绍; 封装 一般常见的有WSON和BGA封装; 协议 走SPI协议,一般是4线模式(标准模式):片选、时钟、数据写、数据读;还有其他两种模式:Dual/Quad SPI; 1、/CS;片选信号,低电平有效,在进行读写操作时需要把片选信号拉低; 2、DI, DO and IO0, IO1, IO2, IO3;...

TSZ0000的博客 6337

Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南)

本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。

weixin_29210727的博客 409

android 如何分析应用的内存(十六)——使用AS查看Android堆

在前面,先介绍了如何使用jdb和VS code查看应用栈相关内容。本文将介绍,如何查看堆中的内容。

安仔的博客 4254

NandFlash存储管理技术(磨损均衡、坏块管理、位翻转)

Nandflash属于非易失型的存储介质,常作为外存使用。而在实际使用中因为nandflash的物理特性导致的安全问题,轻则数据错误、文件乱码,重则系统死机。这里对nandflash的存储管理技术进行总结,并给出了嵌入式端管理的方案,经验不足之处请多多指教。

weixin_44164532的博客 9824

ComfyUI 局部重绘工作流示例

本文介绍了使用ComfyUI进行图像局部重绘的基础工作流程,重点讲解如何修改人物眼睛颜色和表情。主要内容包括:1.准备工作(可选下载DreamShaperv8模型);2.加载素材图片和工作流文件;3.使用遮罩编辑器绘制需要修改的区域;4.修改提示词控制生成内容;5.调整denoise参数优化效果。教程提供了详细的提示词示例(如"smile,blackeyes"等)和参数设置建议,帮助用户通过多次尝试获得理想效果。该工作流适用于修改图像局部区域而不影响整体画面。

云域A的博客 333

nand flash 坏块

本文针对nand flash坏块部分进行简单的记录

seasonyrq的专栏 2万+

Simulink实例--电动汽车充电站与微电网协同运行仿真

​电网负荷剧增:单站1000台车同时充电需150MW功率(超配电网容量30%)​能源孤岛问题:传统充电站仅作为单向负荷,无法参与电网调频​可再生能源消纳:光伏/风电波动导致充电站功率波动±40%​多目标矛盾:充电效率、电网稳定性、设备寿命的协同优化​节能效果:每百万辆车年节电1.8GWh​成本回收:投资回报周期<4年(IRR>25%)​减排效益:每年减少CO₂排放12万吨。

xiaoheshang_123的博客 330

基于Matlab的自动泊车系统开发:利用模糊控制实现智能停车解决方案的详细教程

Matlab是一种广泛应用于科学计算、工程建模与仿真的编程语言,其强大的工具箱和简洁的编程语法,使其成为开发自动泊车系统的理想选择。在开始编写代码之前,我们需要搭建Matlab的工作环境,并熟悉相关的工具箱,如Fuzzy Logic Toolbox,用于实现模糊控制。首先,确保你已经安装了Matlab软件,并加载了必要的工具箱。接下来,我们将逐步讲解如何在Matlab中实现自动泊车系统。

qq_38334677的博客 663

nand flash坏块管理

坏块表 nand_scan_tail // nand_base.c ... if (chip->options & NAND_SKIP_BBTSCAN) return 0; return chip->scan_bbt(mtd); //控制器驱动或nand_base.c=> nand_scan_ident=&...

IT利刃出鞘的博客 1225

【报错】raise pickle.UnpicklingError(_get_wo_message(str(e))) from None_pickle.UnpicklingError: Weigh

File "/opt/conda/envs/py_3.12/lib/python3.12/site-packages/torch/serialization.py", line 1470, in load raise pickle.UnpicklingError(_get_wo_message(str(e))) from None _pickle.UnpicklingError: Weights only load failed.

静谧、淡雅 785

遇到Nand Flash坏块怎么处理?

转载:https://blog.youkuaiyun.com/MENGHUANBEIKE/article/details/87182824 Nand Flash存储器是Flash存储器的一种,为固态大容量内存的实现提供了廉价有效的解决方案。NAND存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,如嵌入式产品中包括数码相机、记忆卡、体积小巧的U盘等。 1989年,东芝公司发表了Nand Flash结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。经过十几年的发展,NAND应用

7724

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

linux nand 坏块_Linux内核中NAND Flash坏块管理

由于NAND Flash的现有工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND芯片出厂的时候,厂家只能保证block 0不是坏块,对于其它block,则均有可能存在坏块,而且NAND芯片在使用的过程中也很容易产生坏块。因此,我们在读写NANDFLASH 的时候,需要检测坏块,同时还需在NAND驱动中加入坏块管理的功能。NAND驱动在加载的时候,会调用nan...

weixin_35851482的博客 1596

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

nand flash 的oob 及坏块管理

转载出处:http://blog.youkuaiyun.com/liukun321/article/details/6598921#comments 0.NAND的操作管理方式      NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages)

没有伞的孩子的专栏 3394

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NAND Flash的坏块

1.为什么会出现坏块  由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。坏块的特性是:当编程/擦除这个块时,不能将某些位拉高,这会造成Page Program和Block Erase操作时的错误,相应地反映到Status Register的相应位。 2.坏块的分类   总体上,坏块可以分为两大类   (1) 固有坏块     这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将坏块第一个p

zjjyliuweijie的专栏 1183

linux nand 坏块_NAND FLASH 坏块管理 申酷啊,,

关于NAND FLASH 的坏块管理就现在的NAND FLASH ,有串口和并口两种,并口就是48PIN的数据的输入和输入公用IO的串口的就是使用SPI接口的NAND FLASH说下NAND FLASH 管理的核心思维:1 识别坏块,标记坏块,2 如何保存坏块信息3 交换区概念4 保留去概念1,NANDFLASH 的工艺不能保证写进去的每个块里面的数据,和读出来的数据一致,所以是存在坏块的,而NA...

weixin_30431923的博客 713

NAND Flash 坏块管理实现方案

在 NAND Flash 中,坏块通常指的是在擦除、编程或读取过程中无法正常工作的一些存储块。坏块有可能是制造时已存在的,也可能在使用过程中因寿命消耗或外部因素损坏。擦除操作失败。写操作失败。读取操作失败(如无法正确读取数据或返回的错误)。块内有过多的坏页(一般由厂商定义)。坏块管理是 NAND Flash 存储器设计中至关重要的部分。通过合理的坏块检测、标记、隔离和替换机制,可以显著提高 NAND Flash 的可靠性和使用寿命。

kuixiang_yin的博客 1634
上一篇: 爆料!你不知道的网络招聘与求职潜规则
下一篇: 我的10年18家工作经历
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值