制作开发板配置文件
我们选用的是比较通用配置的开发板,所以用内核中自带的配置文件,进行修改是比较方便的做法。该配置单在内核源码的“arch/arm/configs/”目录下面,名为:“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和S3C24XX系列CPU相关的配置选项,我们完全可以在该配置单的基础上进行配置。首先将该文件考到根目录命名为.config 指令为:# cp arch/arm/configs/s3c2410default_config .config然后返回到配置界面,进入到内核配置单输入指令为:#make menuconfig 出现如图所示的配置界面:
选择“System Type”选项,然后配置各个平台如下所示:
System Type --->
S3C2410 Machines --->
SMDK2410/A9M2410
[ ] IPAQ H1940
[ ] Acer N30
[ ] Simtec Electronics BAST (EB2410ITX)
[ ] NexVision OTOM Board
[ ] AML M5900 Series
[ ] Thorcom VR1000
[ ] QT2410
S3C2412 Machines --->
[ ] SMDK2413
[ ] SMDK2412
[ ] VMSTMS
S3C2440 Machines --->
[ ] Simtec Electronics ANUBIS
[ ] Simtec IM2440D20 (OSIRIS) module
[ ] HP iPAQ rx3715
SMDK2440
[ ] NexVision NEXCODER 2440 Light Board
SMDK2440 with S3C2440 CPU module
S3C2442 Machines --->
[ ] SMDM2440 with S3C2442 CPU module
S3C2443 Machines --->
[ ] SMDK2443
配置完毕这个地方后,退回到最初的配置单。然后选择选项:“Save an Alternate Configuration File”,将其保存为:“.config”文件,因为编译系统时会调用该文件。如下面的图所示:
保存为“.config”文件后,退出配置单。
修改机器码
在我们之前移植的uboot的机器码是168,这里需要修改机器码,否则会出现不能启动的情况。机器码保存在内核源码的“arch/arm/tools/mach-types”文件中,在大概379行,把原来的362改为168保存即可。如下图:
修改nandflash分区
修改内核源码中的“arch/arm/liat-s3c24xx/common-smdk.c”文件,在109行附近会有名为 smdk_nand_part[]的结构体将其修改为:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Top-E:u-boot",
.size = 0x40000,
.offset = 0,
},
[1] = {
.name = "Top-E:kernel",
.offset = 0x40000,
.size = 0x4c0000,
},
[2] = {
.name = "Top-E:fs",
.offset = 0x500000,
.size = 0x3b00000,
}
};
其中name为内核启动时的标注,内容可根据自己需要填写,便于自己他人识别。offset为分区的起始地址,size为分区的大小。如下图所示:
三.制作镜像
然后输入:#make zImage,就可以进行编译了,编译完毕后,会在内核源码的“arch/arm/boot/”目录下面生成名为“zImage”的镜像,利用mkimage工具把生成的zImage转换成uIamge,(可以直接烧写zImage启动,我比较习惯用uImage)使用命令:#./mkimage –A arm –O linux –T kernel –C none –a 30008000 –e 30008040 –n “linux kernel” –d arch/arm/boot/zImage uImage
参数说明:
-A 指定CPU 的体系结构:
取值 表示的体系结构
alpha Alpha
arm A RM
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
我们选arm
-O 指定操作系统类型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、 |