一、内核基本配置
1、 修改顶层的Makefile
ARCH?=(SUBARCH)
CORSS_COMPILE?=
修改为
ARCH=arm
CROSS_COMPILE=arm-linux-
2、 修改arch/arm/mach-s3c2440/mach-smdk2440.c文件的时钟频率
将s3c24xx_init_clock(16934400)
改为
s3c24xx_init_clock(12000000)
3、 执行make menuconfig配置系统类型(System-type)
System Type
ARM system type (ARM Ltd.Versatile family)
(X) Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442
S3C2440and S3C2442 Machines
[*]SMDK2440
[*]SMDK2440 with S3C2440 CPU module (NEW)
二、Nand Flash移植(MTD分区)
1、 修改内核源码“arch/arm/plat-s3c24xx/common-smdk.c”
文件中的“smdk_default_nand_part[]”的结构体
staticstruct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name ="bootloader",
.size =SZ_1M,
.offset = 0,
},
[1] = {
.name ="params",
.offset = MTDPART_OFS_APPEND,
.size =0x00020000,
},
[2] = {
.name ="kernel",
.offset = MTDPART_OFS_APPEND,
.size =SZ_4M,
},
[3] = {
.name ="root",
.offset = MTDPART_OFS_APPEND,
.size =MTDPART_SIZ_FULL,
}
};
2、 执行make menuconfig配置驱动DeviceDrivers
Device Drivers
<*> Memory Technology Device (MTD)support
<*> NAND Device Support
<*> NAND Flash support for Samsung S3C SoCs
<*> Support for generic platform NAND driver
<*> Caching block device access to MTD devices
<*> Direct char device access to MTD devices
三、串口驱动配置
1、 执行make menuconfig
Device Driversà
Characterdevices
Serialdrivers
<*>Samsung SoC serial support
[*]Support for console on Samsung SoC serial port
<*>Samsung S3C2440/S3C2442/S3C2416 Serial port support (NEW)
四、增加对yaffs的支持
1、 下载yaffs源码(yaffs2)
2、 给内核打补丁,进入yaffs2目录,执行
./patch-ker.sh c m /work/system/linux-3.2.81
3、 进入内核目录,执行make menuconfig
File systemsà
[*]Miscellaneous filesystemsà
<*> yaffs2 file system support
五、支持NFS启动文件系统
File systems
Network File Systems
<*> NFS file system support //要编译进内核,不能编译成模块
[*] Root file system on NFS
Networking
[*] Networking support
Networking options
[*] IP: kernel level autoconfiguration
六、保存退出,执行make uImage
在arch/arm/boot中生成uImage,但是该uImage的加载地址和入口地址一样,u-boot无法启动,所以执行
mkimage -n ‘linux-3.2.81’ -A arm -O linux -T kernel -C none -a0x30008000 -e 0x30008040 -d zImage uImage
生成的uImage即可使用