1解压缩文件
tar -jxf linux-3.0.tar.bz2
cd linux-3.0
2修改makefile,配置CPU类型和交叉编译器(195,196行)
ARCH ?= arm
CROSS_COMPILE ?= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-
注意:在配置交叉编译器路径的时候,不要多加多余的空格,否则编译器不会被找到,我刚刚修改的cross_compile的时候,就是因为在arm-linux-后面多加了一个空格,然后编译器找不到,害得我搞了很久才发现。
添加zImage头制作(559行后面)
cp arch/arm/boot/zImage . -f
../u-boot-2010.09.bak/tools/mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n "Linux Kernel" -d zImage
linuxrom-s3c2440.bin
rm -f zImage
该段是在linux编译的内核的前面,加上一个64字节的头,让u-boot能够引导内核启动
3拷贝 arch/arm/configs/s3c2410_defconfig作为.config的模板,
make menuconfig
System Type --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
Kernel Features --->
[*]UsetheARMEABItocompilethekernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
4修改时钟和串口
将arch/arm/mach-s3c2440/mach-smdk2440.c中的__init smdk2440_map_io()函数中对时钟的初始化修改为12MHz:
s3c24xx_init_clocks(12000000);
将drivers/tty/serial/samsung.c中设置如下:
#define S3C24XX_SERIAL_NAME "ttyS"
将uart_driver s3c24xx_uart_drv结构体中的.driver_name设置为如下
.driver_name = "ttyS",
5修改arch/arm/tools/mach-types,将machine_ID配置为如下
s3c2440 ARCH_S3C2440 S3C2440 1999
mini2440 MACH_MINI2440 MINI2440 362
6 开始编译:make
编译好了之后,把linxurom-s3c2440.bin 下载到开发板的30008000地址下,启动,这时候我们发现,我们的开发板已经跑起来了,可以进入内核了。高兴一下吧,这几天都在调试内核,配置make menuconfig,把我搞晕了,太多的选项要选。。。。。。。。。慢慢来吧!