struct nand_ecclayout

flash芯片
MT29F8G08ABACA
? Open NAND Flash Interface (ONFI) 1.0-compliant1
? Single-level cell (SLC) technology
? Organization
– Page size x8: 4320 bytes (4096 + 224 bytes)   //目标flash
– Page size x16: 2160 words (2048 + 112 words)
– Block size: 64 pages (256K + 14K bytes)
– Plane size: 2 planes x 2048 blocks per plane
– Device size: 8Gb: 4096 blocks   //目标flash
– Device size: 16Gb: 8192 blocks

使用8bit BCH ECC效验算法,
下面看ecc保存在oob中的位置,主要解析ecc在obb中存放的位置
static struct nand_ecclayout msm_nand_oob_224_x8 = {
    .eccbytes    = 104,
    .eccpos        = {
          0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,
         13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,
         26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
         39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
         52,  53,  54,  55,  56,  57,  58,  59,     60,  61,  62,  63,  64,
         65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
         78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,
        123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
        },
    .oobavail    = 32,
    .oobfree    = {
        {91, 32},
    }
};

eccbytes 是最终通过bch ecc算法算出的校验字节,从芯片可看出,一个page为4096bytes,oob为224bytes
eccpos  为ecc效验字节存放在oob中的位置
oobavial    还有几个是空闲的
oobfree   空闲的oob的位置是哪些,oob线性地址31~91是空闲的

为什么是ecc是104bytes, 目前使用的是512byte为计算单位,而一个计算单元会产生13bit*t(t为可以纠正的错位个数),故(4096/512)*13*8/8 = 104byte

BCH算法没有看懂,所以没有列出来.

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

June_Hou

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值