硬件环境:基于Vmware5.0上的RedHat9.0 ;Windows XP
阳初S3c2410开发板
软件资源:linux2.6.14.1内核 下载地址:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.1.tar.bz2
交叉工具:(如果不能连接,请用迅雷新建任务下载)
ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
如果已经完成上面的内容就可以开始编译内核了:
以$前缀表示命令
一:安装linux-2.6.14.1.tar.bz2:
$tar jxf linux-2.6.14.1.tar.bz2 –C /usr/src/
安装arm-linux-gcc-3.4.1.tar.bz2:
$tar jxf arm-linux-gcc-3.4.1.tar.bz2 –C /
注意上面的 / 代表根目录
$export PATH=/usr/local/arm/3.4.1/bin:$PATH
输出交叉编译路径
二:对NAND FLASH 分区进行配置
$cd /usr/src/linux-2.6.14.1
$ vi arch/arm/mach-s3c2410/devs.c 添加下面内容
#include<linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>
...
#NAND需要的头文件
1.建立Nand Flash分区表
/* 一个Nand Flash总共64MB, 按如下大小进行分区 */
static struct mtd_partition partition_info[] ={
{
name: "vivi",
size: 0x00020000,
offset: 0,
}, {
name: "param",
size: 0x00010000,
offset: 0x00020000,
}, {
name: "kernel",
size: 0x001c0000,
offset: 0x00040000,
}, {
name: "root",
size: 0x03cf8000,
offset: 0x00200000,
mask_flags: MTD_WRITEABLE,
}, {
name: "usr",
size: 0x03a00000,
offset: 0x00600000,
}
};
这里请注意:上面的分区需要跟bootloader分区对应起来
本人bootloader用的是MIZI的VIVI 用命令part show可以看到分区信息;否则出现
kernel panic: VFS: Unable to mount root fs on Unkonw-block (31,2)
诸如此类的错误
2. 加入Nand Flash分区
struct s3c2410_nand_set nandset ={
nr_partitions: 5, /* the number of partitions */
partitions: partition_info, /* partition table */
};
# partition_info是上面的分区信息;nr_partitions: 5 为分区数目
3. 建立Nand Flash芯片支持
struct s3c2410_platform_nand superlpplatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
# tacls, twrph0, twrph1是nand flash的时序控制,
这3个值最后会被设置到NFCONF中
sets: 支持的分区集
nr_set:分区集的个数
