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

在将yaffs2移植到2.6.12旧版Linux内核时遇到读取OOB信息错误,通过分析源码和文档,发现数据偏移问题。解决方案包括在读取OOB时添加2字节偏移,并避免使用`mtd->read_ecc`函数,改为分别调用`mtd->read`和`mtd->read_oob`。最终成功解决读写问题,使2.6.12内核能正常使用yaffs2。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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++)
                                      {
                           

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值