首先来个感性认识一下Linux的移植工作:
一、下载Linux-2.6.22.6
放到你的工作目录下,我的工作目录是 /opt/arm
解压: # tar -xjvf linux-2.6.22.6.tar.bz2
#pwd
/opt/arm
#cd linux-2.6.22.6
这个是以后工作的路径
/**********************************************************************************************/
二、修改内核源代码目录下的Makefile文件
用vim打开
# vim Makefile
进入到其文件中,找到185行,即有ARCH ?= $(SUBARCH) 这一行
如下图:
要做的就是把ARCH与CROSS_COMPILE修改,修改结果如下
即 ARCH = arm
CROSS_COMPILE = arm-linux-
保存退出。
/**********************************************************************************************/
三、修改开发板标志 MACH_TYPE
进入下面的目录:/opt/arm/linux-2.6.22.6/arch/arm/tools
打开文件 mach-types
找到s3c2400这一行,即
把后面326改成782 (这个是友善之臂开发板supervivi传入的,具体的号数可以从你的开发板得知)
保存退出
/**********************************************************************************************/
四、修改时钟函数
进入文件mach-smdk2440.c
这个文件在目录 ./arch/arm/mach-s3c2440/mach-smdk2440.c
找到函数 s3c24xx_init_clocks()
将里面的16934400改成12000000结果如下
保存退出。
/**********************************************************************************************/
五、修改NAND Flash分区
打开文件 common-smdk.c
这个文件在目录 ./arch/arm/plat-s3c24xx/common-smdk.c
找到 mtd_partition smdk_drfault_nand_part
把它修改成如下结果:
只作修改前面三个,后面保持默认,不需修改。
保存退出。
/**********************************************************************************************/
六、配置内核
先把s3c2410_defcofig拷贝到源目录下,把.config覆盖
# cp arch/arm/configs/s3c2410_deconfig .config
#make menuconfig
出现如下画面:
选择System Type ------>
进入以下界面
分别选择 S3C2410 Machines 与 S3C2440 Machines
具体全部的配置如下
System Type ---> S3C2410 Machines ---> [*] SMDK2410/A9M2410
S3C2440 Machines ---> [*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
返回到主菜单,进入Kernel Features --->
Kernel Features ---> [ ] Use the ARM EABI to compile the kernel
[ ] Allow old ABI binaries to run with this(EXPERIMENTA) kernel
不选这两项