`
xitong
  • 浏览: 6440394 次
文章分类
社区版块
存档分类
最新评论

在挂载yaffs2 文件系统出现的问题和解决办法。

 
阅读更多

还是想来吐槽先: 之前我一直的2.6.36.2 的内核已经可以成功启动OK6410 挂载 NFS 文件系统进入Linux 终端了,这几天因为测试USB 摄像头需要,

所以要进入 yaffs2,这样才不会占用 DM9000 的网卡,才能测试 网络摄像头。本来以为需要进入 yaffs2 文件系统可能会挺简单的,谁知道一大堆问

题,好了,开始进入正题:

我的操作环境是: 主机:xp, VMware Ubuntu 10.10 。 开发板: OK6410 , 2G nand flash ,4 个分区。 移植内核:Linux 2.6.36.2

先说说我的内核启动 yaffs2 的前提: 内核可以启动 NFS 根文件系统, 内核 已经打上了yaffs2 文件系统的补丁。可以参考:

http://blog.csdn.net/acanoe/article/details/7484123 这篇文章给内核打上 yaffs2 文件系统的补丁。

最后的打印信息为:

end_request: I/O error, dev mtdblock2, sector 24
Buffer I/O error on device mtdblock2, logical block 3
uncorrectable error :
uncorrectable error :
end_request: I/O error, dev mtdblock2, sector 24
Buffer I/O error on device mtdblock2, logical block 3
List of all partitions:
1f00 1024 mtdblock0 (driver?)
1f01 5120 mtdblock1 (driver?)
1f02 122880 mtdblock2 (driver?)
1f03 1968128 mtdblock3 (driver?)
No filesystem could mount root, tried: cramfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
[<c0039b20>] (unwind_backtrace+0x0/0xf8) from [<c0037b9c>] (dump_stack+0x18/0x1c)
[<c0037b9c>] (dump_stack+0x18/0x1c) from [<c004e100>] (panic+0x64/0x1c4)
[<c004e100>] (panic+0x64/0x1c4) from [<c00090fc>] (mount_block_root+0x1b0/0x258)
[<c00090fc>] (mount_block_root+0x1b0/0x258) from [<c0009270>] (mount_root+0xcc/0xf4)
[<c0009270>] (mount_root+0xcc/0xf4) from [<c00093e4>] (prepare_namespace+0x14c/0x1ac)
[<c00093e4>] (prepare_namespace+0x14c/0x1ac) from [<c00089c0>] (kernel_init+0x118/0x164)
[<c00089c0>] (kernel_init+0x118/0x164) from [<c0034a20>] (kernel_thread_exit+0x0/0x8)

我在网上google了很多,这是最常见的一种错误打印信息。照上面的打印信息,自己推测出现的问题是:

1、NAND Flash 有坏块。

解决办法: 在Uboot 下使用命令 : nand scrub 回车,选择 y ,y 没有显示,直接回车。就可以忽略坏块。

关闭内核 ECC 校验。

在文件 drivers/mtd/nand/s3c_nand.c 文件中,将

nand->ecc.mode = NAND_ECC_SOFT; 改为:

nand->ecc.mode = NAND_ECC_NONE;

配置中去掉的这个选项在代码中并没有完全去掉,只是去掉了硬件校验的方式,换成了软件校验。

只有在代码中给改成NAND_ECC_NONE,才不会校验。

2、 NAND Flash 分区加载不正确。

因为博主刚开始的内核可以加载 NFS 根文件系统,所以基本就排除了这种可能。


分享到:
评论

相关推荐

    yaffs yaffs2 文件系统正确补丁包 移植LINUX常用

    5. **挂载文件系统**:内核模块加载后,可以通过`mount`命令挂载YAFFS或YAFFS2文件系统。在挂载时指定正确的文件系统类型(如`-t yaffs2`)和设备节点。 6. **测试与调试**:确保挂载成功后,可以创建、读取、修改...

    yaffs2文件系统实现原理分析-带书签

    YAFFS2文件系统通过识别mtd-&gt;writesize,可以在挂载过程中根据需要自动转换成YAFFS或YAFFS2。由于YAFFS2文件系统与NOR闪存设计的JFFS/JFFS2文件系统在内存占用和启动时间方面做出的不同取舍,其通常更适合于NAND闪存...

    yaffs2文件系统介绍

    在文件系统架构上,YAFFS2的文件系统管理层接口、YAFFS内部实现层和NAND接口层的分离设计,不仅简化了与系统的接口设计,而且使其便于集成到多种操作系统中去,比如linux、uClinux和Windows CE。这种模块化的结构让...

    Yaffs2文件系统的源代码

    总之,Yaffs2文件系统是为了解决NAND闪存的特殊挑战而设计的,通过其日志式架构、垃圾回收和坏块管理等功能,确保了数据的可靠性和系统的高效运行。如果你对嵌入式系统或闪存管理有兴趣,深入研究Yaffs2的源代码会是...

    yaffs2文件系统分析

    yaffs2 文件系统是一种专为 NAND Flash 存储设备设计的文件系统,它考虑了 NAND Flash 特有的擦写特性,例如块级的擦除和页级的写入。在深入探讨 yaffs2 文件系统的细节之前,我们需要了解 NAND Flash 的基本概念。...

    最新的yaffs2文件系统

    然后,可以在启动时指定挂载点,或者通过`mkfs.yaffs2`工具创建YAFFS2文件系统镜像,再用`mount`命令将其挂载到系统中。 对于压缩包中的"yaffs2"文件,这可能包含的是源代码、文档、编译脚本或其他相关资源,供...

    linux下yaffs2文件系统剖析

    9. **挂载和卸载**:YAFFS2支持热插拔,可以在系统运行时挂载和卸载文件系统,提供了良好的用户交互体验。 10. **性能与效率**:YAFFS2的设计目标是低内存占用、低CPU使用率和高读写性能,适合资源有限的嵌入式设备...

    yaffs2文件系统源码

    《深入解析yaffs2文件系统源码》 在嵌入式系统领域,尤其是在Linux操作系统中,文件系统扮演着至关重要的角色。其中,yaffs2(Yet Another Flash File System version 2)文件系统因其对NAND闪存的优化而备受青睐。...

    Yaffs2文件系统源代码

    总之,Yaffs2文件系统是Nand Flash存储设备的重要组成部分,其设计考虑了Nand Flash的特性,提供了可靠的文件存储和管理解决方案。深入学习和理解Yaffs2,对于从事嵌入式系统开发或者需要处理Nand Flash存储的工程师...

    YAFFS2文件系统的移植

    本文将详细介绍如何在 MINI2440 上移植 YAFFS2 文件系统,并提供一些关键步骤和注意事项。 MINI2440 是一个基于三星 S3C2440A 处理器的嵌入式开发平台,它通常用于教学、研究和原型设计。为了在这样的平台上运行 ...

    yaffs2文件系统.pdf

    yaffs2 linux bsp YAFFS意义为‘yet another... YAFFS是目前为止唯一一个专门为NAND flash设计的文件系统,目前有YAFFS 和YAFFS2 两个版本,两个版本的主要区别之一在于YAFFS2 能够更好的支持大容量的NAND FLASH芯片。

    制作mkyaffs2image工具,并制作yaffs的文件系统

    5. **烧录和验证**:生成的YAFFS2映像文件可以烧录到NAND闪存设备上,然后在嵌入式系统启动时挂载,以验证文件系统的正确性。 在压缩包文件`yaffs2.tar.gz`中,可能包含了`mkyaffs2image`的源代码和其他相关工具,...

    最新yaffs2文件系统源码

    YAFFS2,全称是Yet Another Flash File System 2,是一种专为嵌入式设备设计的、在NAND闪存上运行的文件系统。它最初由英国的Tuxera公司开发,旨在解决NAND闪存特有的问题,如坏块管理、寿命限制以及错误校正等。...

    yaffs2 文件系统

    5. **卸载**:在系统关闭或重启前,YAFFS2会进行最后的清理工作,确保文件系统在下次启动时能正常挂载。 总结来说,YAFFS2文件系统是为了解决嵌入式系统中NAND闪存存储的特殊挑战而设计的。通过其独特的日志式结构...

    一种制作YAFFS2嵌入式文件系统的方法

    YAFFS2(Yet Another Flash File System version 2)是一种专为NAND型闪存设计的文件系统,它在嵌入式系统中得到了广泛应用,尤其在那些需要高效读写操作的场合。YAFFS2的实现提供了对NAND闪存的直接访问,减少了...

    制作yaffs文件系统的yaffs工具包2

    YAFFS2是其第二个版本,优化了性能和稳定性,尤其在嵌入式系统和移动设备中广泛应用,比如Android系统早期就采用了YAFFS2作为其默认的文件系统。 在制作YAFFS2文件系统时,我们需要使用到一系列的工具,这些工具...

    yaffs2文件系统制作详解

    以上步骤详细介绍了在 s3c2440 平台上制作 YAFFS2 文件系统的全过程,从理解 FHS 标准到 Busybox 的编译安装,再到 `/lib` 和 `/etc` 目录的构建,为开发嵌入式 Linux 系统提供了全面的技术指导。

    YAFFS2文件系统的加载过程

    YAFFS2 文件系统是一种flash-based 文件系统,能够在嵌入式系统中提供高效的文件存储和管理功能。为了在 VxWorks 环境下使用 YAFFS2 文件系统,需要对其进行移植和集成。 二、YAFFS2 文件系统驱动注册 在 VxWorks ...

    yaffs2文件系统压缩包

    5. **挂载YAFFS2文件系统**:在系统启动后,使用`mount`命令挂载YAFFS2文件系统,例如`mount -t yaffs2 /dev/mtdblockX /mnt/yaffs2`,其中`/dev/mtdblockX`是NAND设备的节点,`/mnt/yaffs2`是挂载点。 在实际应用...

Global site tag (gtag.js) - Google Analytics