yaffs2应用到较老版本linux上时的问题 (移植日记)

2009.7.21
yaffs2 在 2.6.22的 kernel 上表现很正常,但在老的 2.6.12 上,则出现问题。


无奈之下只好阅读 yaffs2 的代码

fs/yaffs2/yaffs_mtdif2.c 中的  nandmtd2_ReadChunkWithTagsFromNAND 函数从nand flash 中

读取 oob 信息, 获取 yaffs_ExtendedTags tags,

               if (tags){
                        memcpy(&pt, dev->spareBuffer, sizeof(pt));
                        yaffs_UnpackTags2(tags, &pt);
                        if(pt.t.chunkId  != -1)
                                {
                                printk("yaffs_UnpackTags2 chunkId = %x addr = %x/n",  pt.t.chunkId, addr);
                                int i = 0;
                                for(; i<28; i++)
                                      {
                                        printk(" %02x " , dev->spareBuffer[i]);
                                      }
                                printk("/n");
                               }

                        }
 通过和 2.6.22 的kernel 对比,发现数据偏移了两位, 我就太阳。。
后来找到下面这篇文章:

新版本内核中的MTD驱动考虑到了与yaffs2的接口问题,与yaffs2的整合一般都很顺利。但是老版本就容易出现写进去的文件umount/mount后丢失的问题。基本上应该属于oob中数据布局的问题。MTD中的oob(2k-page)布局:

==========

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值