一、内核基本配置

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即可使用