加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

在挂载yaffs2 文件系统出现的问题和解决措施

发布时间:2021-11-23 15:47:05 所属栏目:教程 来源:互联网
导读:在挂载yaffs2 文件系统出现的问题和解决办法。 还是想来吐槽先: 之前我一直的2.6.36.2 的内核已经可以成功启动OK6410 挂载 NFS 文件系统进入Linux 终端了,这几天因为测试USB 摄像头需要, 所以要进入 yaffs2,这样才不会占用 DM9000 的网卡,才能测试 网络

在挂载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 文件系统的补丁。 
 
最后的打印信息为:
 
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 根文件系统,所以基本就排除了这种可能。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读