制作文件系统映像和相关参数设置

来源:互联网 发布:幼儿园远程监控软件 编辑:程序博客网 时间:2024/04/30 09:02

本文只是介绍不同文件系统环境变量的设置,以及制作不同映像的命令和烧写过程

引导cramfs的linux_cmd_line
#define CONFIG_BOOTARGS         "noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/mtdblock3 rootfstype=cramfs mem=32M"“

引导nfs的linux_cmd_line
#define CONFIG_BOOTARGS        "noinitrd root=/dev/nfs rw nfsroot=211.87.227.75:/nfsshare/fsv2.0 ip=211.87.227.35:211.87.227.75:211.87.227.1:255.255.255.0 console=ttySAC0,115200"

引导yaffs的linux_cmd_line
#define CONFIG_BOOTARGS        "noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/mtdblock3 rootfstype=yaffs mem=32M"”

在uboot中设置了启动参数,并烧写到Flash上之后,内核的启动时,就会忽略自己设置的启动参数,用Flash保存的环境变量中的

启动参数

cramfs 文件系统

制作映像

./mkcramfs fs fs.img
下载到内存RAM

nfs 0x30008000 211.87.227.75:/nfsshare/fs.img

烧写到Nand Flash

nand erase 0x2b0000 0x700000

nand write 0x30008000 0x2b0000 0x****

0x**** 是块大小的整数倍,写个大数就行了……
注意:
   擦除的起始地址是你存放根文件系统映像的分区的起始地址,我的 root=/dev/mtdblock3,在
第四个分区,
我的分区如下:
Creating 4 MTD partitions on "NAND 32MiB 3,3V 8-bit":
0x000000000000-0x000000080000 : "BootLoader"
0x000000080000-0x0000000b0000 : "params"
0x0000000b0000-0x0000002b0000 : "kernel"
0x0000002b0000-0x0000012b0000 : "rootFS"

把内核 kernel 下载到RAM,就可以启动了

nfs 文件系统

不用制作映像,把做好的文件系统(你的文件夹,比如我的是 fsv2.0),放到nfs 的目录即可

设置好启动参数

把内核 kernel 下载到RAM,就可以启动了

yaffs 文件系统

./mkyaffsimage  fsv2.0 fsv2.0.yaffs

注意:fsv2.0.yaffs 的后缀名没有什么约束,这里只是便于记得是 yaffs 的映像,完全可以取名为
fsv2.0.img

2.
烧写根文件系统映像,将
启动 uboot,进入命令行,输入如下命令,fsv2.0.yaffs 放到 nfs 目录,
我的电脑 IP 为 211.87.227.75,nfs 目录是 /nfsshare
nfs 0x30008000 211.87.227.75:/nfsshare/fsv2.0.yaffs
nand erase 0x2b0000 0x700000
nand write.yaffs 0x30008000 0x2b0000 0x****
注意:
   擦除的起始地址是你存放根文件系统映像的分区的起始地址,我的 root=/dev/mtdblock3,在
第四个分区,
我的分区如下:
Creating 4 MTD partitions on "NAND 32MiB 3,3V 8-bit":
0x000000000000-0x000000080000 : "BootLoader"
0x000000080000-0x0000000b0000 : "params"
0x0000000b0000-0x0000002b0000 : "kernel"
0x0000002b0000-0x0000012b0000 : "rootFS"
   uboot 需要支持 yaffs 的烧写,这个可以看另一篇文章,关于 uboot 的修改
   nand write.yaffs 0x30008000 0x2b0000 0x**** 中,最后一个参数是映像的实际大小,
当下载完成的时候会告诉你 Bytes transferred = 10858320 (a5af50 hex),如下
Load address: 0x30008000
Loading: #################################################################
    ....................................
     #################################################################
     #########################################
done
Bytes transferred = 10858320 (a5af50 hex),此处 a5af50 即为映像大小的 16 进制表示
所以,此处命令为 nand write.yaffs 0x30008000 0x2b0000 0xa5af50