我现在已经实现了uboot通过tftp方式下载PC虚拟机redhat下uImage文件;系统启动成功;加载nfs文件系统,启动成功。
配置如下:
//保证uImage文件存在于主机/tftpboot目录下;保证rootfs文件存在于主机/temp目录下;nfs方式启动rootfs系统
[u-boot@MINI2440]# setenv bootcmd tftp 31000000 uImage \; bootm 31000000 //中间有两个空格
[u-boot@MINI2440]# setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.0.1
01:/temp/rootfs ip=192.168.0.105:192.168.0.101::255.255.255.0 console=ttySAC0,11
5200 init=/linuxrc mem=64M //没有分行分段,是一句话
现在我需要实现重新上电后,不需要重新tftp下载,直接从flash启动uImage,文件系统yaffs也在flash中
另外我有几个问题
1.下载uImage到指定的flash地址 命令怎么实现?norflash or nandflash,地址一般是多少
2.我的文件系统名为rootfs,如何下载rootfs到flash? rootfs是yaffs or cramfs (supervivi下我是用mkyaffs2img) 下载地址如何设置
3.我的bootargs bootcmd又该怎么设置?
9 个解决方案
#1
设置bootcmd参数就可以了
setenv bootcmd 'cp.b f0000000 70800000 380000; bootm 70800000'
首先还是先tftp到内存,下面随便举个例子
#tftp 70800000 uImage
//写到norflash
#cp.b f0000000 70800000 300000
(cp [.b, .w, .l] source target count)
这里的f0000000是norflash的起始地址
//写到nand
#nand write 70800000 0 300000
(nand write - addr off|partition size)
文件系统写到哪里需要与内核里面的分区地址对应,那样才好设置启动参数
#setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttymxc1,115200 init=/linuxrc video=mxcfb0:dev=vga,800x600M@60,if=RGB24这个是我用的jffs2的,其他的基本差不多,改一下类型就可以,然后就是注意root=文件系统所在的分区
以上只作参考。
setenv bootcmd 'cp.b f0000000 70800000 380000; bootm 70800000'
首先还是先tftp到内存,下面随便举个例子
#tftp 70800000 uImage
//写到norflash
#cp.b f0000000 70800000 300000
(cp [.b, .w, .l] source target count)
这里的f0000000是norflash的起始地址
//写到nand
#nand write 70800000 0 300000
(nand write - addr off|partition size)
文件系统写到哪里需要与内核里面的分区地址对应,那样才好设置启动参数
#setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttymxc1,115200 init=/linuxrc video=mxcfb0:dev=vga,800x600M@60,if=RGB24这个是我用的jffs2的,其他的基本差不多,改一下类型就可以,然后就是注意root=文件系统所在的分区
以上只作参考。
#2
nand flash uboot启动Linux系统 问题
1.要想nand flash方式启动Linux,是不是要先把uboot下载到nand flash中,如何操作?
(通过H-JTAG下载uboot.bin到mini2440 nand flash ???
还是在norflash uboot启动后,#cp.b )
2.把uImage拷贝到nand flash中
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
[u-boot@MINI2440]# nand write 31000000 0 300000
NAND write: device 0 offset 0x0, size 0x300000
Writing at 0x20000 -- NAND write to offset 64 failed 0
0 bytes written: ERROR
这又是怎么回事??? (ERROR)
3.设置bootcmd参数
[u-boot@MINI2440]# setenv bootcmd 'cp.b xxxx 31000000 300000(size); bootm 31000000'
xxxx处,应该为nand flash中uImage的地址,如何确认这个地址???
size的大小,如何确认??? (300000)
4.关于rootfs
我在宿主机制作了根文件rootfs
我是不是要把rootfs写到nand flash,如何操作??? (先tftp .img再nand write? addr 和 size 如何确定)
5.
是不是nand flash中有了uImage和rootfs,bootcmd参数正确就可以从nand flash正常启动系统了???
#3
从 nand 启动:首先通过某种方式(很多),将 kernel 、rootfs 写入 nand 分区,然后设置从 nand 启动(修改 u-boot )
具体操作已经记不清了,关于 mini2440 的资料网上太多了,学会 Google
具体操作已经记不清了,关于 mini2440 的资料网上太多了,学会 Google
#4
在nor flash启动uboot,如何对NandFlash进行分区,查看分区
#5
Flash 的分区在 u-boot 和 内核的文件中都有,和板子相关的那个文件
#6
把uImage拷贝到nand flash中
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
#7
nanf flash内,有好几个分区,
一个分区,存储着uboot (需要先tftp uboot.bin到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着uImage (需要先tftp uImage到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着rootfs (需要先tftp ???什么格式的,到内存,再从内存cp.b到指定nand flash分区)
是不是都具备了,才可以从nand flash启动?
nand flash分区信息,在内核arch/arm/plat-s3c24xx/common-smdk.c中?
Flash 的分区在 u-boot 和 内核的文件中都有,应该是依据哪个分区了?uboot中nand flash分区信息代码位置
一个分区,存储着uboot (需要先tftp uboot.bin到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着uImage (需要先tftp uImage到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着rootfs (需要先tftp ???什么格式的,到内存,再从内存cp.b到指定nand flash分区)
是不是都具备了,才可以从nand flash启动?
nand flash分区信息,在内核arch/arm/plat-s3c24xx/common-smdk.c中?
Flash 的分区在 u-boot 和 内核的文件中都有,应该是依据哪个分区了?uboot中nand flash分区信息代码位置
#8
是不是按照下图所示操作,先mkyaffs2image rootfs rootfs.yaffs.
#9
rootfs’ 在uboot里面设置一下启动参数
#1
设置bootcmd参数就可以了
setenv bootcmd 'cp.b f0000000 70800000 380000; bootm 70800000'
首先还是先tftp到内存,下面随便举个例子
#tftp 70800000 uImage
//写到norflash
#cp.b f0000000 70800000 300000
(cp [.b, .w, .l] source target count)
这里的f0000000是norflash的起始地址
//写到nand
#nand write 70800000 0 300000
(nand write - addr off|partition size)
文件系统写到哪里需要与内核里面的分区地址对应,那样才好设置启动参数
#setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttymxc1,115200 init=/linuxrc video=mxcfb0:dev=vga,800x600M@60,if=RGB24这个是我用的jffs2的,其他的基本差不多,改一下类型就可以,然后就是注意root=文件系统所在的分区
以上只作参考。
setenv bootcmd 'cp.b f0000000 70800000 380000; bootm 70800000'
首先还是先tftp到内存,下面随便举个例子
#tftp 70800000 uImage
//写到norflash
#cp.b f0000000 70800000 300000
(cp [.b, .w, .l] source target count)
这里的f0000000是norflash的起始地址
//写到nand
#nand write 70800000 0 300000
(nand write - addr off|partition size)
文件系统写到哪里需要与内核里面的分区地址对应,那样才好设置启动参数
#setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttymxc1,115200 init=/linuxrc video=mxcfb0:dev=vga,800x600M@60,if=RGB24这个是我用的jffs2的,其他的基本差不多,改一下类型就可以,然后就是注意root=文件系统所在的分区
以上只作参考。
#2
nand flash uboot启动Linux系统 问题
1.要想nand flash方式启动Linux,是不是要先把uboot下载到nand flash中,如何操作?
(通过H-JTAG下载uboot.bin到mini2440 nand flash ???
还是在norflash uboot启动后,#cp.b )
2.把uImage拷贝到nand flash中
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
[u-boot@MINI2440]# nand write 31000000 0 300000
NAND write: device 0 offset 0x0, size 0x300000
Writing at 0x20000 -- NAND write to offset 64 failed 0
0 bytes written: ERROR
这又是怎么回事??? (ERROR)
3.设置bootcmd参数
[u-boot@MINI2440]# setenv bootcmd 'cp.b xxxx 31000000 300000(size); bootm 31000000'
xxxx处,应该为nand flash中uImage的地址,如何确认这个地址???
size的大小,如何确认??? (300000)
4.关于rootfs
我在宿主机制作了根文件rootfs
我是不是要把rootfs写到nand flash,如何操作??? (先tftp .img再nand write? addr 和 size 如何确定)
5.
是不是nand flash中有了uImage和rootfs,bootcmd参数正确就可以从nand flash正常启动系统了???
#3
从 nand 启动:首先通过某种方式(很多),将 kernel 、rootfs 写入 nand 分区,然后设置从 nand 启动(修改 u-boot )
具体操作已经记不清了,关于 mini2440 的资料网上太多了,学会 Google
具体操作已经记不清了,关于 mini2440 的资料网上太多了,学会 Google
#4
在nor flash启动uboot,如何对NandFlash进行分区,查看分区
#5
Flash 的分区在 u-boot 和 内核的文件中都有,和板子相关的那个文件
#6
把uImage拷贝到nand flash中
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
先#tftp 31000000 uImage (把宿主机中的uImage通过网络tftp方式下载到mini2440内存地址31000000)
然后#nand write 31000000 0 300000 (nand write - addr off|partition size)
我如何确认uImage size的大小??? (300000)
#7
nanf flash内,有好几个分区,
一个分区,存储着uboot (需要先tftp uboot.bin到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着uImage (需要先tftp uImage到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着rootfs (需要先tftp ???什么格式的,到内存,再从内存cp.b到指定nand flash分区)
是不是都具备了,才可以从nand flash启动?
nand flash分区信息,在内核arch/arm/plat-s3c24xx/common-smdk.c中?
Flash 的分区在 u-boot 和 内核的文件中都有,应该是依据哪个分区了?uboot中nand flash分区信息代码位置
一个分区,存储着uboot (需要先tftp uboot.bin到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着uImage (需要先tftp uImage到内存,再从内存cp.b到指定nand flash分区)
一个分区,存储着rootfs (需要先tftp ???什么格式的,到内存,再从内存cp.b到指定nand flash分区)
是不是都具备了,才可以从nand flash启动?
nand flash分区信息,在内核arch/arm/plat-s3c24xx/common-smdk.c中?
Flash 的分区在 u-boot 和 内核的文件中都有,应该是依据哪个分区了?uboot中nand flash分区信息代码位置
#8
是不是按照下图所示操作,先mkyaffs2image rootfs rootfs.yaffs.
#9
rootfs’ 在uboot里面设置一下启动参数