Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862549
  • 博文数量: 102
  • 博客积分: 7086
  • 博客等级: 少将
  • 技术积分: 2245
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:01
文章分类

全部博文(102)

文章存档

2012年(2)

2011年(1)

2010年(21)

2009年(31)

2008年(47)

我的朋友

分类: LINUX

2008-07-04 15:32:12

文件系统对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

文件的大小)

阅读(1610) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~