文件系统对jffs2和Cramfs的支持都已经编入内核,用户只需要
设置各个文件系统分配不同的flash的大小和区间就可以了。同
时对应的将生成的jffs2和cramfs的disk烧写的flash中相应的位
置就可以了。
代码中相应的更改如下,参见
kernel/drivers/mtd/maps/s3c2410_llg.c文件第76行开始。
static struct mtd_partition s3c2410_partitions[] = {
{
name: "reserved for bootloader",
size: 0x040000,
offset: 0x0,
mask_flags: MTD_WRITEABLE,
},
{
name: "reserved for kernel",
size: 0x0100000,
offset: 0x040000,
mask_flags: MTD_WRITEABLE,
},
{
name: "reserved for ramdisk",
size: 0x400000,
offset: 0x140000,
mask_flags: MTD_WRITEABLE,
},
{
name: "jffs2(8M)",
size: 0x800000,
offset: 0x800000,
},
{
name: "cramfs(2.75M)",
size:0x2c0000,
offset:0x540000,
}
};
前3个分区对应着系统的bootloader、kernel、ramdisk,其实这
部分并不通过MTD来访问,把他们写在这里主要是为了便于理解
,为了代码的完整性,我们没有删除上面的三个分区。
我们主要注意第四个和第五个分区。
第四个分区是jffs2分区,其中offset表示该分区在flash中的相
对位置,(flash的起始地址为0),size表示该分区的大小。
Jffs2的配置表示jffs2分区位于flash上从8M开始8M大小的分区
上。
我们是后来增加的对cramfs文件系统的支持,此时flash上只剩
下从0x540000~0x800000的地址空间可用,所以我们就把cramfs
增加在flash的这一部分。如上cramfs的配置表示cramfs分区位
于flash上从0x540000开始,大小为2c0000的分区上,事实上,
cramfs是一个压缩的文件系统,这2.7M大小的分区大概可以支持
8M的空间的disk。
对应jffs2和cramfs的生成和烧写命令如下:
jffs2 disk的生成:(在pc机上)
./mkfs.jffs2 -d jffs2/ -o jffs2.img //jffs2表示含该分区
文件的目录
cp –f jffs2.imag /tftpboot
jffs2 disk的烧写,在板子上ppcboot方式下:
tftp 30008000 jffs2.img
fl 1800000 30008000 ****** (******的大小要大于jffs2.img
文件的大小)
cramfs disk的生成:(在pc机上)
mkcramfs mnt mnt.cramfs (mnt表示包含该文件系统的目录)
cp –f mnt.cramfs /tftpboot
cramfs disk的烧写:在板子的ppcboot方式下
tftp 30008000 mnt.cramfs
fl 1540000 30008000 ****** (******的大小要大于mnt.cramfs
文件的大小)
系统启动以后,用户可以mount cramfs文件系统
cd /
mkdir cramfs
mount –t cramfs /dev/mtdblock/5 cramfs
jffs2文件系统也同样可以mount
cd /
mkdir jffs2
mount -t jffs2 /dev/mtdblock/4 /jffs2
当然,用户可以将这部分写入到mnt/etc/init.d/rcS文件中,这
样系统启动以后就自动mount文件系统。
××××××××××××××××××××××××××××
××××××××××××
××××××××××××××××××××××××××××
××××××××××××
如果用户想重新进行分区,则只需要更改这一部分上述部分,比
如用户现在想生成4M的cramfs分区,其余部分给jffs2分区,则
上述代码应更改如下:
static struct mtd_partition s3c2410_partitions[] = {
{
name: "reserved for bootloader",
size: 0x040000,
offset: 0x0,
mask_flags: MTD_WRITEABLE,
},
{
name: "reserved for kernel",
size: 0x0100000,
offset: 0x040000,
mask_flags: MTD_WRITEABLE,
},
{
name: "reserved for ramdisk",
size: 0x400000,
offset: 0x140000,
mask_flags: MTD_WRITEABLE,
},
{
name: "jffs2(6.75M)",
size: 0x6c0000,
offset: 0x940000,
},
{
name: "cramfs(4M)",
size:0x400000,
offset:0x540000,
}
};
对应jffs2和cramfs的烧写命令如下:
jffs2 disk的烧写,在板子上ppcboot方式下:
tftp 30008000 jffs2.img
fl 1940000 30008000 ****** (******的大小要大于jffs2.img
文件的大小)
cramfs disk的烧写:在板子的ppcboot方式下
tftp 30008000 mnt.cramfs
fl 1540000 30008000 ****** (******的大小要大于mnt.cramfs
文件的大小)