Chinaunix首页 | 论坛 | 博客
  • 博客访问: 348962
  • 博文数量: 88
  • 博客积分: 907
  • 博客等级: 准尉
  • 技术积分: 1230
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 13:27
文章分类

全部博文(88)

文章存档

2017年(1)

2014年(3)

2013年(29)

2012年(21)

2011年(26)

2010年(8)

分类: LINUX

2010-09-28 22:27:25

前些时间,我做了yaffs2的移植笔记。但是里面还是有好多的问题,虽然我们就cramfs的文件系统是可以正确使用的。然而我们在yaffs2的时候,我们也可以挂载,但出现下边的问题。

第一类情况:

Freeing init memory: 124K
Warning: unable to open an initial console.
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel.

实验证明,这里的错误主要源于对yaffs2的分块不明白,其用528B进行存储,所以只能按照528来。还有就是必须用nand write.yaffs2 来写文件系统才可以。

第二类情况:

VFS: Mounted root (yaffs filesystem) readonly on device 31:3
mtd: partition "root" doesn't end on an erase block -- force read-only

2010年9月我终于解决了yaffs2文件系统的问题,也就是关于文件系统是只读的问题。这个问题源于我对NAND的不了解。我们这里是128M的nand,那么我们按照规定我们就必须使用128k的整数倍分配存储空间才可以。即在内核中需要按照0x20000来分配才行。不然会出错误上边的错误。


第三类情况:

cannot run '-/bin/sh': No such file or director

而且还在超级终端上不停的输出找不到tty2、tty3、tty4.

这种情况则在建立文件系统时,在/dev目录下建立几个节点。

[root@localhost dev]# mknod -m 660 tty2 c 1 3
[root@localhost dev]# mknod -m 660 tty3 c 1 3
[root@localhost dev]# mknod -m 660 tty4 c 1 3

还有就是要正确烧写文件系统,不要弄错位置了


好了,总结一下,很多问题都是我们对nand的原理不了解,才使我们移植文件系统那么难,网络上其实移植的方式到处都是。正因为我们不了解怎么对nand分区,所以我们在内核分区时,都是按照网上的资料来的,但是很多需要验证。在这里我们需要了解nand原理。那样我们才知道怎么去分配空间。


下面是我的内核分配:

[0] = {
.name = "Boot",
.offset = 0,
.size = 0x00060000,

},
[1] = {
.name = "param",
.offset = 0x00060000,
.size = 0x00020000,
},
[2] = {
.name = "kernel",
.offset = 0x00080000,
.size = 0x00200000,
},
[3] = {
.name = "root",
.offset = 0x00280000,
.size = 0x042c0000,
}

上面的分配都是可以被0x20000整除的。


下面是烧写内核和文件系统的步骤。

1:设置u-boot对于内核的启动参数

set bootcmd 'nand read 0x31000000 0x80000 0x00200000;bootm 0x31000000'

2:设置文件系统启动的参数

set bootargs 'noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 rootfstype=yaffs mem=32mb'

3:下载内核镜像文件

tftp 0x30000000 uImage.img
nand erase 0x80000 0x200000
nand write 0x30000000 0x80000 0x1da000(这个数据要注意,tftp后的数据大小不是这个,我将其变成了能被2k整除的数据,这个数据最好是能被2k整除,原因现在未知。 )


4:下载文件系统

tftp 0x30000000 root-2.6.30.4.img

nand erase 0x280000 0x42c0000

nand write.yaffs2 0x30000000 0x280000 0x7e5c40

5:重启开发板,你会看见系统起来了。



好了,如果还有上面错误希望大家指正。


对了,还要在这里提醒一下。关于制作文件系统的工具,千万不要弄错了哦。有些虽然是用于制作yaffs2的,但是太老了,也许你制作的文件系统,在新内核上没法用。如果真找不到,你支一声,我可以给你发一个。







阅读(1662) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~