全部博文(84)
分类: 嵌入式
2010-11-05 18:28:54
#tar xjvf linux-2.6.36.tar.bz2 |
#gedit arch/arm/tools/mach-types |
smdk2440 MACH_SMDK2440 SMDK2440 1008 |
#gedit arch/arm/mach-s3c2440/mach-smdk2440.c //修改文件最后面 |
//MACHINE_START(S3C2440, "SMDK2440") |
#gedit arch/arm/mach-s3c2440/mach-smdk2440.c |
static void __init smdk2440_map_io(void) |
#gedit arch/arm/plat-s3c24xx/common-smdk.c |
/* NAND parititon from 2.4.18-swl5 */ |
首先加载s3c24xx系列的通用配置,然后在此基础上修改
各配置选项如下。这里只列出了要修改的项,其他的默认
配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件
6. 交叉编译内核
#make zImage |
如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件zImage即是。为了方便我们可以修改arch/arm/boot/下面的Makefile文件,在其58行加上"@cp -f arch/arm/boot/zImage zImage"
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE |
-o -name '*.gcno' \) -type f -print | xargs rm -f rm zImage |
-type f -print | xargs rm -f rm zImage |
-o -name '*.gcno' \) -type f -print | xargs rm -f rm zImage |
经过编译后的u-boot在根目录下的tools目录中,会有个叫做mkimage的工具,他可以给zImage添加一个header,也就是说使得通常我们编译的内核zImage添加一个数据头信息部分,我们把添加头后的image通常叫uImage,uImage是可以被u-boot直接引导的内核镜像。
mkimage工具的使用介绍如下:
使用: 中括号括起来的是可选的 mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image 选项: |
先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,这样就可以在主机的任何目录下使用该工具了。现在我们进入kernel生成目录(一般是arch/arm/boot目录),然后执行如下命令,就会在该目录下生成一个uImage.img的镜像文件,把他复制到tftp目录下,这就是我们所说的uImage。
mkimage -n 'linux-2.6.36' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage |
为了方便我们可以把上面这句写成一个脚本叫做mkkernel.sh,并给它加上可执行权限
#vi mkkernel.sh |
mkimage -n 'linux-2.6.36' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage |
#chmod +x mkkernel.sh |