+ -
当前位置:首页 → 问答吧 → 2.6.14内核上YAFFS的问题

2.6.14内核上YAFFS的问题

时间:2008-08-06

来源:互联网

我的分区:2.6.14
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "bootloader"
0x00100000-0x00400000 : "kernel"
0x00400000-0x02c00000 : "root"
0x02c00000-0x04000000 : "user"

所以,我是这样烧写的
2410>nand erase 0x2c00000
2410>tftp 0x30000000 my_rootfs.yaffs
2410>nand write.yaffs 0x30000000 0x2c00000 $(filesize)
2410>set bootargs 'console=ttySAC0 root=/dev/mtdblock3 rootfstype=yaffs'
2410>boot

出现的问题是
VFS: Cannot open root device "mtdblock3" or unknown-block(31,3)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

我的文件系统没有问题,这个yaffs文件系统其他内核里面跑过(2.6.22)。而后是我的bootargs和烧写,我现在想想还是没有问题。
如果不是文件系统和bootargs和烧写的问题,那估计就是内核了,但是内核配置,我是打了那个yaffs的补丁,而且把内核配置中关于yaffs2的所以选项几乎都选了,只剩下Use older-style on-NAND data format with pageStatus byte没有选.

不知道各位大虾可以指点一下不?谢谢.

作者: 北极狐BILL   发布时间: 2008-08-06

root=/dev/mtdblock3 对不对?试试root=/dev/mtdblock/3
这个panic和你的bootargs有关,弄对就好了

作者: freducn2002   发布时间: 2008-08-06

set bootargs 'console=ttySAC0 root=/dev/mtdblock2 rootfstype=yaffs'

作者: sep   发布时间: 2008-08-06

MS:
root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0   ??

作者: jn200002   发布时间: 2008-08-06

但是我用JFFS2文件系统
烧写到
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "bootloader"
0x00100000-0x00400000 : "kernel"
0x00400000-0x02c00000 : "root"
0x02c00000-0x04000000 : "user"

烧写
2410>nand erase 0x400000
2410>tftp 0x30000000 my_rootfs.yaffs
2410>nand write.yaffs 0x30000000 0x400000 $(filesize)

然后
2410>set bootargs 'console=ttySAC0 root=/dev/mtdblock2 rootfstype=jffs2'
2410>boot

这样倒是可以,但是YAFFS就是不行....

[ 本帖最后由 北极狐BILL 于 2008-8-6 10:05 编辑 ]

作者: 北极狐BILL   发布时间: 2008-08-06

倒...第0块第1块第2块=root ?

作者: jn200002   发布时间: 2008-08-06



QUOTE:
原帖由 sep 于 2008-8-6 09:36 发表
set bootargs 'console=ttySAC0 root=/dev/mtdblock2 rootfstype=yaffs'




QUOTE:
原帖由 jn200002 于 2008-8-6 10:03 发表
倒...第0块第1块第2块=root ?





对不起,我1楼那个第一分区红色部分给你误导了...

我的分区:2.6.14
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "bootloader"
0x00100000-0x00400000 : "kernel"
0x00400000-0x02c00000 : "root"
0x02c00000-0x04000000 : "user"

所以,我是这样烧写的
2410>nand erase 0x2c00000
2410>tftp 0x30000000 my_rootfs.yaffs
2410>nand write.yaffs 0x30000000 0x2c00000 $(filesize)

然后
2410>set bootargs 'console=ttySAC0 root=/dev/mtdblock3 rootfstype=yaffs'
2410>boot

出现的问题是
VFS: Cannot open root device "mtdblock3" or unknown-block(31,3)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

[ 本帖最后由 北极狐BILL 于 2008-8-6 10:10 编辑 ]

作者: 北极狐BILL   发布时间: 2008-08-06



QUOTE:
原帖由 北极狐BILL 于 2008-8-6 09:59 发表
但是我用JFFS2文件系统
烧写到
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "bootloader"
0x00100000-0x00400000 : "kernel"
0x00400000-0x02c00000 : "root"
0x02c ...


我没有用过yaffs文件系统,不知道它有没有特殊的要求
话说回来,jffs2文件系统不是比yaffs更优秀吗

作者: sep   发布时间: 2008-08-06

我到是用yaffs 只是配合做可读写的分区,并不是根

作者: jn200002   发布时间: 2008-08-06

vivi            : 0x00000000    0x00020000     0  128k
param           : 0x00020000    0x00010000     0   64k
kernel          : 0x00030000    0x001d0000     0    1M+832k
root            : 0x00200000    0x02300000     4   35M
yaffs           : 0x02500000    0x01b00000     0   27M

param set linux_cmd_line "noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,115200"

这是我的vivi的, 启动是从根开始的,根就是2啊

作者: jn200002   发布时间: 2008-08-06



QUOTE:
原帖由 sep 于 2008-8-6 10:14 发表

我没有用过yaffs文件系统,不知道它有没有特殊的要求
话说回来,jffs2文件系统不是比yaffs更优秀吗



但是,现在遇到问题,想解决
过去总是逃避问题,现在想执着点,嘿嘿

谢谢你的帮忙,我再想想办法。

作者: 北极狐BILL   发布时间: 2008-08-06



QUOTE:
原帖由 jn200002 于 2008-8-6 10:22 发表
我到是用yaffs 只是配合做可读写的分区,并不是根



同样是用yaffs做root,我用另外一个内核(2.6.22,这个不是我编的)挂YAFFS成功,但是我现在用2.6.14的内核挂,却出现了问题,想解决。

不知道大家还有什么办法,我知道这里高手多

[ 本帖最后由 北极狐BILL 于 2008-8-6 11:08 编辑 ]

作者: 北极狐BILL   发布时间: 2008-08-06



QUOTE:
原帖由 北极狐BILL 于 2008-8-6 11:02 发表


但是,现在遇到问题,想解决
过去总是逃避问题,现在想执着点,嘿嘿

谢谢你的帮忙,我再想想办法。


噢,对了,你在给nandflash分区的时候,不是有一个part flag参数吗。你试下从这个方向入手

作者: sep   发布时间: 2008-08-06



QUOTE:
原帖由 北极狐BILL 于 2008-8-6 11:07 发表


同样是用yaffs做root,我用另外一个内核(2.6.22,这个不是我编的)挂YAFFS成功,但是我现在用2.6.14的内核挂,却出现了问题,想解决。

不知道大家还有什么办法,我知道这里高手多


那很明显了,你现在的内核不支持yaffs文件系统
要支持yaffs文件系统的话,要下几个文件,重新编译内核吧

作者: sep   发布时间: 2008-08-06



QUOTE:
原帖由 sep 于 2008-8-6 11:08 发表

噢,对了,你在给nandflash分区的时候,不是有一个part flag参数吗。你试下从这个方向入手



分区时候的参数?

我用的是uboot,我的做法,一般只是nand擦除,然后烧写(我的uboot放在nor上)。然后添加内核的static struct mtd_partition smdk_default_nand_part[] = {};相关信息

S3C2410的板子

然后通过修改bootargs和bootcmd等来修改参数。

恕我无知,你说的part flag是什么

作者: 北极狐BILL   发布时间: 2008-08-06

是不是现在还没有生成mtdblock的驱动节点呢,在dev下找不到~ 你上网找下udev 的资料 ,高版本的2.6内核用的是udev,没有自己创建驱动设备节点,你得自己创建,要么就用devfs

作者: jojolin   发布时间: 2008-08-06



QUOTE:
原帖由 jojolin 于 2008-8-6 11:33 发表
是不是现在还没有生成mtdblock的驱动节点呢,在dev下找不到~ 你上网找下udev 的资料 ,高版本的2.6内核用的是udev,没有自己创建驱动设备节点,你得自己创建,要么就用devfs



我还发现一个问题

在2.6.22内核下(此内核挂载yaffs文件系统没有问题),可以mount任何类型的文件系统
# mount -t yaffs /dev/mtdblock4 /mnt/yaffs
# mount -t jffs2 /dev/mtdblock3 /mnt/jffs2

但是我的2.6.14(这个挂yaffs老错),却不行
# mount -t jffs2 /dev/mtdblock3 /mnt/jffs2/
# mount -t yaffs /dev/mtdblock4 /mnt/yaffs/
mount: mounting /dev/mtdblock4 on /mnt/yaffs/ failed: No such device

也就是说没有找到/dev/mtdblock4 !!!!!但是我结合TAB键,却给出了/dev/mtdblock4 的提示

我的分区信息
0x00000000-0x00100000 : "vivi--nand"
0x00100000-0x00500000 : "kernel---2.6.14"
0x00500000-0x00900000 : "kernel---2.6.22"
0x00900000-0x01900000 : "jffs2"
0x01900000-0x02900000 : "yaffs"
0x02900000-0x04000000 : "yaffs2"

但我可以找到/dev/mtdblock3,因为可以从jffs2中启动,所以我把yaffs移动到了0x00900000-0x01900000 ,也就是我把jffs2的内容都擦除了,然后烧写上yaffs的内容,结果连/dev/mtdblock3都找不到了

作者: 北极狐BILL   发布时间: 2008-08-06

应该是2

作者: sydnash   发布时间: 2010-08-13

热门下载

更多