2、编译编译环境:arm-linux-gcc
3、开发板:Micro2440,2M nor flash,256M nand flash。
4、u-boot-version:u-boot-2010.06
5、linux -version:Linux-2.6.39
一、下载并解压内核源码
a)在命令行终端中可以通过下列方式下载,当然用其它下载工具下载
root@bootloader:/home/eilian/development/Linux# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.gz
b)解压源码
root@bootloader:/home/eilian/development/Linux#
root@bootloader:/home/eilian/development/Linux# tar zxvf linux-2.6.39.tar.gz
root@bootloader:/home/eilian/development/Linux# ls
linux-2.6.32.2 linux-2.6.36.2.tar.gz linux-2.6.39 linux-2.6.39.tar.gz
root@bootloader:/home/eilian/development/Linux# cd linux-2.6.39
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#
c)指定交叉编译器
移植目的让 Linux-2.6.39 可以在mini2440 上运行。首先,使得Linux-2.6.39的缺省目标平台成为ARM 的平台,修改主目录下的Makefile。
用vi打开Makefile,定位到196行,修改如下:
root@bootloader:/home/eilian/development/Linux/linux-2.6.39# vi Makefile
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH = arm
CROSS_COMPILE = arm-linux-
# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)
SRCARCH := $(ARCH)
修改完成后退出保存
/********************************************************************************************************************************/
d)创建目标平台
个性移植从SMDK2440到eilian240
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#cd arch/arm/mach-s3c2440
root@bootloader:/home/eilian/development/Linux/linux-2.6.39/arch/arm/mach-s3c2440#cp mach-smd2440.c mach-eilian240.c
将mach-eilian240.c文件中的所有smdk2440改成eilian240
root@bootloader:/home/eilian/development/Linux/linux-2.6.39/arch/arm/mach-s3c2440#vi mach-eilian240.c
操作如下:在vi的命令模式下输入

修改mach-s3c2440目录下的Makefile,打开Makefile定位到38行做如下修改
obj-$(CONFIG_MACH_ANUBIS) += mach-anubis.o
obj-$(CONFIG_MACH_OSIRIS) += mach-osiris.o
obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o
obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o
obj-$(CONFIG_MACH_MINI2440) += mach-mini2440.o
obj-$(CONFIG_MACH_NEO1973_GTA02) += mach-gta02.o
obj-$(CONFIG_MACH_RX1950) += mach-rx1950.o
obj-$(CONFIG_MACH_MINI2440) += mach-eilian240.o #为何这样修改呢 后面慢慢解释
修改mach-s3c2440目录下的Kconfig 添加如下代码
config MACH_MINI2440
bool "MINI2440 development board"
select CPU_S3C2440
select EEPROM_AT24
select NEW_LEDS
select LEDS_CLASS
select LEDS_TRIGGER
select LEDS_TRIGGER_BACKLIGHT
select S3C_DEV_NAND
select S3C_DEV_USB_HOST
help
Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
available via various sources. It can come with a 3.5" or 7" touch LCD.
config MACH_EILIAN240
bool "eilian240 development board"
select CPU_S3C2440
select EEPROM_AT24
select NEW_LEDS
select LEDS_CLASS
select LEDS_TRIGGER
select LEDS_TRIGGER_BACKLIGHT
select S3C_DEV_NAND
select S3C_DEV_USB_HOST
help
Say Y here to select support for the eilian240. Is a 10cm x 10cm board
available via various sources. It can come with a 3.5" or 7" touch LCD.
这样修改之后在选择配置缺省文件的时候直接选择mini2440_defconfig了
除此之外,还有一个地方需要改动,在eilian240_machine_init(void)函数中,把smdk_machine_init()