linux 2.6.2x中 mtd yaffs ecc layout分析

 Yaffs2支持 2K pagenandflash读写。2k pagenandflash包含的oob数据为64 bytesYaffs利用了oob区保存了自己的节点信息。对于数据的eccyaffs并不参与计算生成,而是交给mtd来处理。其中决定yaffs是否生成数据的ecc的关键是useNANDECC。如果这个变量=1,则mtd生成数据的ecc。可以通过 cat /proc/yaffs来检查yaffs的配置信息

 

如果yaffs不生成数据的ecc,则oob数据区的使用由mtd来管理。Mtd根据nand_base.c中的nand_ecclayout结构来定义。

 

Mtd采用256 bytes数据生成3ecc数据的算法。如果是2048的数据,需要的ecc数据为24个。Eccbytes = 24。这24ecc数据在oob区中的位置为从第40个开始,到第63个结束。就是在oob区的最后排列。Eccpos描述了这个排列方法。Oob其他未使用的数据定义为oobfree,开始为第2个,长度有38个。这样整个oob区如下分布

最开始的两个没有使用,用来标识badblock,接下来的38个为free区,最后的24个用来保存数据的ecc

 

Yaffs使用了oobfree中的28(16+12)bytes用来保存节点信息yaffs_PackedTags2。这个信息包含一个tags和对应的ecc数据。

  • 2
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值