环境:Ubuntu 9.10 arm-linux-gcc-4.3.2 linux-2.6.34 s3c2440
1. 修改内核代码根目录下的Makefile
ARCH改为arm, CROSS_COMPILE改为arm-linux-
2. 修改arch/arm/mach-s3c2440/mach-smdk2440.c 函数__init smdk2440_map_io
s3c24xx_init_clocks(16934400);改为s3c24xx_init_clocks(12000000);
(这里是根据个人的板子提供的外部晶振是多少就修改成多少就好了)
3. 然后就是make menuconfig了
(1). 选择Load an Alternate Configuration File, 输入arch/arm/configs/s3c2410_defconfig, 然后Ok
(2). 配置System Type
(3). 配置General setup, 添加Local version信息
(4). 配置Kernel Features, 选择支持EABI
(5). 选择Save an Alternate Configuration File, 输入.config, 保存配置单
4. 修改arch/arm/tools/mach-types, s3c2440的机器码修改为168(这里根据个人板子提供的uboot来决定)
5. 移植Nand flash驱动
修改arch/arm/plat-s3c24xx/common-smdk.c 结构体mtd_partition smdk_default_nand_part[]
[0] = {
.name = "uboot",
.size = 0x00040000,
.offset = 0x00000000,
},
[1] = {
.name = "kernel",
.offset = 0x00200000,
.size = 0x00200000,
},
[2] = {
.name = "file_system",
.offset = 0x00400000,
.size = 0x0FB80000,
}
然后修改 结构体s3c2410_platform_nand smdk_nand_info
.tacls = 10,
.twrph0 = 25,
.twrph1 = 10,
最后修改配置单, Device Drivers-->Memory Technology Device (MTD) support-->Nand Device Support
选择Samsung S3C NAND Hardware ECC
保存配置
6. 添加yaffs支持
到http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下载cvs-root.tar.gz
解压进入cvs/yaffs2, 然后给内核打上补丁 ./patch-ker.sh c /home/victorsummer/linux-2.6.34
修改配置单, File systems添加yaffs2选项, 增添语言支持选项
7. 现在就可以编译内核了make zImage, 编译完成后在arch/arm/boot下会生成名为zImage的镜像