开发板启动调试记录--nand启动

本文记录了在开发板上通过NAND启动时遇到的问题及解决过程,包括U-Boot设置启动参数错误、NFS服务器未配置、根文件系统挂载失败等。通过调整启动参数和根文件系统生成工具,最终成功从NANDflash启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

u-boot设置启动参数,在启动时候会传给kernel,如下方式修改了启动参数:
setenv bootargs "noinitrd root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/first_fs ip=192.168.2.26:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0"
内核解压缩之后,挂住。

多加了引号,正确参数:
setenv bootargs noinitrd root=/dev/nfs console=ttySAC0,115200 nfsroot=192.168.2.102:/nfsroot/rootfs ip=192.168.2.26:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off init=/linuxrc mem=64M

设置之后,有错误提示:
NET: Registered protocol family 16
setenv bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M boot

设置gatewayip 之后提示信息:
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtdblock3" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00             256 mtdblock0 (driver?)
1f01            3072 mtdblock1 (driver?)
1f02          257024 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Backtrace:
[<c003bfd4>] (dump_backtrace+0x0/0x10c) from [<c03406d4>] (dump_stack+0x18/0x1c)
 r7:c047a4e8 r6:c04b2020 r5:c380c000 r4:c381df40
[<c03406bc>] (dump_stack+0x0/0x1c) from [<c0340724>] (panic+0x4c/0x124)
[<c03406d8>] (panic+0x0/0x124) from [<c0008e30>] (mount_block_root+0x178/0x234)
 r3:00000000 r2:c38556ec r1:c381df40 r0:c0409358
[<c0008cb8>] (mount_block_root+0x0/0x234) from [<c0008f9c>] (mount_root+0xb0/0xf4)
[<c0008eec>] (mount_root+0x0/0xf4) from [<c00090d8>] (prepare_namespace+0xf8/0x18c)
 r7:c04b1a04 r6:c002083c r5:c002083c r4:c002084c
[<c0008fe0>] (prepare_namespace+0x0/0x18c) from [<c0008478>] (kernel_init+0xc8/0xf4)
 r7:00000000 r6:c001f0d0 r5:c001ecb0 r4:c001f0d0
[<c00083b0>] (kernel_init+0x0/0xf4) from [<c004cf30>] (do_exit+0x0/0x620)
 r7:00000000 r6:00000000 r5:00000000 r4:00000000


第一个提示:VFS: Unable to mount root fs via NFS, trying floppy.
这是没有设置nfs server的原因,然后尝试其他方式启动。

根据提示,尝试修改:
setenv bootargs noinitrd root=/dev/mtdblock0 rootfstype=yaffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M boot

s3c2410-rtc s3c2410-rtc: setting system clock to 2014-02-07 13:40:48 UTC (1391780448)
yaffs: dev is 32505856 name is "mtdblock0"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.0, "mtdblock0"
yaffs: NAND geometry problems: chunk size 2048, type is yaffs2, inbandTags 0
List of all partitions:
1f00             256 mtdblock0 (driver?)
1f01            3072 mtdblock1 (driver?)
1f02          257024 mtdblock2 (driver?)
No filesystem could mount root, tried:  yaffs2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,0)
Backtrace:
[<c003bfd4>] (dump_backtrace+0x0/0x10c) from [<c03406d4>] (dump_stack+0x18/0x1c)
 r7:c047a4e8 r6:c04b2020 r5:c380c000 r4:c381df40
[<c03406bc>] (dump_stack+0x0/0x1c) from [<c0340724>] (panic+0x4c/0x124)
[<c03406d8>] (panic+0x0/0x124) from [<c0008e90>] (mount_block_root+0x1d8/0x234)
 r3:00000029 r2:c381df53 r1:c381df40 r0:c0409358
[<c0008cb8>] (mount_block_root+0x0/0x234) from [<c0008f9c>] (mount_root+0xb0/0xf4)
[<c0008eec>] (mount_root+0x0/0xf4) from [<c00090d8>] (prepare_namespace+0xf8/0x18c)
 r7:c04b1a04 r6:c002083c r5:c002083c r4:c002084c
[<c0008fe0>] (prepare_namespace+0x0/0x18c) from [<c0008478>] (kernel_init+0xc8/0xf4)
 r7:00000000 r6:c001f0d0 r5:c001ecb0 r4:c001f0d0
[<c00083b0>] (kernel_init+0x0/0xf4) from [<c004cf30>] (do_exit+0x0/0x620)
 r7:00000000 r6:00000000 r5:00000000 r4:00000000


根据手册提示,不同大小的nandflash生成根文件系统的工具不同,64M用的是mkyaffsimage_2,生成的root 大概50多兆;128M使用的是mkyaffs2image,生成20多兆。
然后修改启动参数:
setenv bootargs noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M boot
改为从nandflash启动,ok。

但是,nor方式,bootsystem 还是panic。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值