内核与板上文件系统移植杂记

一、内核

将内核烧入Nand Flash 第一次能正常加载,如果仅烧入kernel,重启正常,烧入文件系统后,重启开发板却内核检测异常:

而在首次正常加载时,得到如下信息:

(1)Nand Flash 的分区信息(arch/arm/plat-s3c24xx/common-smdk.c)


(2)内核的存储布局

修改arch/arm/plat-s3c24xx/common-smdk.c

如下:

static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                    .name   = "uboot",
                    .size   = 0x40000,
                    .offset = 0,
              },
        [1] = {
                    .name   = "kernel",
                    .offset = 0x40000,
                    .size   = 0x200000,
              },
        [2] = {
                    .name   = "rootfs(read only)",
                    .offset = 0x240000,
                    .size   = 0x800000,   
              }
};

修改后:

(1)Nand Flash 的分区信息

(2)内核的存储布局


二、板上文件系统

我用的文件系统格式为jffs2

首先准备mkfs.jff2制作工具

  下载zlib-1.2.3.tar.bz2解压缩到主机生成zlib-1.2.3目录

    $ cd zlib-1.2.3

    ./configure

    $make

    $make install

  下载 mtd-snapshot-20050519.tar.bz2 解压缩 $ cd mtd/util

  $make

  $sudo make install
这样在你的PC机上就有了mkfs.jffs2的工具,它只是一个制作jffs2文件系统镜像的工具而不能格式化成相应的jffs2文件系统,区别mkfs.ext2.

生成板上文件系统

mkfs.jffs2 -r /opt/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000

加载文件系统时有如下信息


不想看到如上信息,则制作文件系统时,用如下命令

mkfs.jffs2 -r /opt/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -n


在arch/arm/plat-s3c24xx/common-smdk.c 被修改前文件系统初次启动成功时还会得到如下信息:




此后重启,内核检测出错或文件系统不能正常加载,无法得到上述信息。必须按前面的方法修改 Nand Flash 分区信息。

static struct mtd_partition smdk_default_nand_part[]给fs空间过小时,会导致文件系统的诸多数据丢失。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值