yaffs tragedy: Bad object type 错误

当系统挂在USERDATA 分区时,会出现下面的错误(后边的log信息)。如果分区不跨地址0x10000000,就不会有这样的错误。

 

Log如下:

[   22.660522] yaffs: dev is 32505871 name is "mtdblock15"

[   22.665771] yaffs: passed flags ""

[   22.669128] yaffs: Attempting MTD mount on 31.15, "mtdblock15"

[   23.330200] yaffs tragedy: Bad object type, -1 != 15, for object 268435201 at chunk 61568 during scan

[   23.339630] Partially written block 964 detected

[   23.344451] Partially written block 964 detected

[   23.349273] Partially written block 964 detected

……

[   43.323150] DB error at address 0x102b0800

[   43.327270] 0x00000000: 01 00 00 00 02 00 00 00 7e 3a 34 42 64 68 4a 43

[   43.333862] 0x00000010: 05 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.340484] 0x00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.347076] 0x00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.353668] 0x00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.360290] 0x00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.366882] 0x00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.373443] 0x00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.380065] 0x00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.386657] 0x00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.393249] 0x000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.399841] 0x000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.406463] 0x000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.413055] 0x000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.419647] 0x000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.426239] 0x000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[   43.432830] 0x00000100: 00 00 00 00 00 00 00 00 00 00 c2 18 a0 00 00 00

[   43.439422] 0x00000110: 00 00 00 00 00 00 00 00 51 44 20 10 10 44 48 08

[   43.446044] 0x00000120: 0c 44 44 20 00 00 00 00 2d db 7e 6a 3a 35 db fa

[   43.452636] 0x00000130: 2c 40 ce 19 98 34 9b ff ea b0 a7 2a fe fa a2 f1

[   43.459228] 0x00000140: cb 6b 73 4b 79 a7 34 35 52 7f 5b fd 3e 16 1d f5

[   43.465820] 0x00000150: cd 18 9a 6e ff 67 86 99 be 8f b3 31 c6 a9 3d dd

……

[   48.095184] yaffs tragedy:attempt to put data chunk into a non-file

[   48.101470] ==>> yaffs bug: fs/yaffs2/yaffs_guts.c 3419

[   48.123992] yaffs tragedy:attempt to put data chunk into a non-file

[   48.130218] ==>> yaffs bug: fs/yaffs2/yaffs_guts.c 3419

[   48.141418] yaffs tragedy:attempt to put data chunk into a non-file

……

……

解决:由于 nand 驱动中,对高位地址的选取错误导致。修改即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
YAFFS2(Yet Another Flash File System 2)是一种针对嵌入式系统设计的开源嵌入式文件系统。移植YAFFS2到单片机上涉及以下步骤: 1. 了解单片机的硬件和存储器:单片机的硬件架构和存储器类型对文件系统的移植至关重要。需要了解单片机的处理器类型、存储器大小和类型,例如闪存或EEPROM等。 2. 下载和配置YAFFS2:从官方网站或源代码仓库下载YAFFS2的最新版本。根据单片机的硬件和存储器特性,修改YAFFS2的配置文件,例如设置闪存大小、页大小和块大小等。 3. 移植文件操作接口:单片机的操作系统可能不支持标准的文件操作接口,需要根据单片机的特性实现文件系统的操作接口。这些接口包括读写文件、创建删除文件、目录遍历等。 4. 适配存储器驱动程序:YAFFS2需要针对单片机的存储器类型进行适配。根据单片机的存储器接口和特性,修改YAFFS2的底层驱动程序,确保与单片机的存储器正常交互。 5. 编译和链接YAFFS2:使用适当的交叉编译工具链,将YAFFS2编译为单片机可执行的格式。确保编译选项与单片机的体系结构和操作系统匹配。 6. 测试和调试:将移植后的YAFFS2文件系统部署到单片机上,并进行详细的功能测试和性能测试。通过检查文件系统的功能和性能是否符合预期,进行必要的调试和优化。 总之,移植YAFFS2到单片机需要对单片机硬件和存储器有深入的了解,并进行文件操作接口适配和存储器驱动程序适配。合理配置和编译YAFFS2,最后进行测试和调试,确保其正常运行。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值