smp865x广告机之nand(1)

作者 QQ: 35327864,msn: fgwf1@hotmail.com,mail: agooou@gmail.com

smp8652, smp8653, smp8654, smp8655

NAND 编程指导
一,概述
    在产品线中,NAND编程器需要将一个事先生成的image烧写到NAND闪存中。为此,我们需要了解NAND的工作原理和编程方法。本文主要介绍如下几个方面:
    1,明白image的格式
    2,明白编程方法
    3,明白坏块管理方法
    4,如何判断坏的NAND芯片

二,实现
    1,image格式
        image是一个由程序员使用工具生成的,要写往NAND闪存的二进制文件。
        A)image是2112字节对齐的。2112字节由一页2048字节大小数据和64个字节的备用数据组成。备用数据包含ECC及其他管理信息。在这种模式下,我们每次直接读取2112字节,并直接写往NAND闪存。
        B)编程者不需要自己做ECC校验和填充。可以在创建image的时候由工具自动处理。
        C)开头的10个块供系统引导和NAND管理使用。一个块的大小为一个可擦除块的大小。一般为一页数据及备用数据的整数倍,如,128*2112个字节。
        D)除了这10个块的其他区域为数据区,可以存放操作系统,文件系统,bootloader等。
        E)image的格式如下(前面数字为块索引):
        0  Boot Block
        1  Boot Block
        2  Boot Block
        3  Boot Block
        4  NAND Super Block
        5  NAND Super Block
        6  NAND Super Block
        7  NAND Super Block
        8  NAND Management Blocks
        9  NAND Management Blocks
        10----- Operating System  or File System or Bootloader

    2,编程方法
        A)image的前10块必须对应拷贝到NAND的前10块。image的开头10块是极其重要的,前4块是引导相关的,如果全部坏块,则无法使用NAND启动。
        B)image前10块拷贝到NAND后,其余内容则必须写入到第264块(从0算起,第264块)开始的地址中。
        C)此步骤可选。每写一页的时候,可以做ECC校验,如果校验错误,则表示写失败。ECC算法和备用数据区格式由simga提供。
        D)image和NAND的块对应简图(数字为块索引)。
        image  NAND  含义
        0        0        boot block
        1        1        ...
        2        2        ...
        3        3        ...
        4        4        NAND Super Block
        5        5        ...
        6        6        ...
        7        7        ...
        8        8        NAND Management
        9        9        ...
        10        264        OS, file system, bootloader...

    3,坏块管理模式
        如果在写NAND过程中发现坏块,则需要将此块忽略,并写往下一个可用块。
        NAND闪存的前10块在系统引导过程中是非常关键的,只有有限的容错能力。其他区域的没有什么特殊性。
    4,不合格的NAND
        就像上面说的,NAND的前10块对于系统引导有关键作用。过多的坏块将导致引导失败。
        0-3这4个boot块,只允许存在一个坏块,否则就这个NAND就算废品。
        4-7这4个超级块(super),只允许存在一个坏块,否则NAND为废品。
        8-9这2个管理块(management),用于块管理,这2个块没有什么特殊要求,不会造成NAND报废。
        在0-263这264个块中,如果坏块数超过32,则NAND也报废。

三,备用区域数据格式
    uint16 w_counter;   // 2 bytes
    uint8 ecc[12];      // 12 bytes total
    uint8 Page_status;  // 1 byte
    uint8 Block_status; // 1 byte

四,ECC
    每一页数据,有4个24bit的ECC校验码,即每512字节的数据有一个24bit的ECC校验码。
    每当读取一页数据时,需要计算他们的ECC校验码,并与存放在备用数据区的ECC码做运算。如果运算结果全0,则没有数据冲突,如果运算结果全1,则表示仅有一位冲突,并且可以修复,其他情况则不能修复。
    运算式(其中x=0,1,2,3):
NAND_ECC_codex[23:12] ^ Software_ECC_codex[23:12] ^ NAND_ECC_codex[11:0] ^ software_ECC_codex[11:0]

五,NAND编程方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值