yaffs2 inband_tag 文件系统制作与烧录

  • 硬件平台
    • 君正 x1000 halley2

uboot中对yaffs2文件系统的支持

一般yaffs2文件系统会使用nand的oob区域存放tag信息,nand的数据区域存放实际的数据,由于不同的nand oob区域所存放的数据不一样,对于128Bytes oob的nand, 一般第一个byte用来标记坏块,第64Byte之后存放硬件ecc,那么在制作yaffs文件系统的时候,就需要避开这两个区域。对于其他的nand还需要根据实际情况避开,使得在后续维护不同的nand时非常的不方便,需要调整oob的读写。查看uboot源码,发现当实现的mtd驱动告诉上层,oobavail为0时,yaffs2层会使用in_band__tags。如下

fs/yaffs2/yaffs_uboot_glue.c

if (chip->ecc.layout->oobavail < sizeof(struct yaffs_packed_tags2))
dev->param.inband_tags = 1;

inband_tags 存储方式即区别于oob存储tag方式,将tag存储在nand的数据区域

  • 非inband_tags方式如下存储格式
nand data area(2048Bytes) nand oob area(128Bytes)
yaffs2 chunkSize(DATA) yaffs2 spareSize(TAGS)

* inband_tags方式如下存储格式

nand data area(2048Bytes) nand oob area(128Bytes)
yaffs2 chunkSize + yaffs2 spareSize yaffs2 not used

继续跟踪uboot代码,发现tag在inband_tags方式下的具体存放位置为chunkSize的最后(notag_ecc时)。

代码中体现如下:

fs/yaffs2/yaffs_mtdif.c
=======================

/* For yaffs2 writing there must be both 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值