一、内核
将内核烧入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空间过小时,会导致文件系统的诸多数据丢失。