Linux 2.6.31.4在TQ2440上的移植
平台:Fedora 10 内核 linux-2.6.27.5 在终端输入uname –a 可查看内核版本信息
交叉编译工具链:arm-linux-gcc 4.3.2 在终端输入arm-linux-gcc –v可查看版本信息
这里为了方便,直接修改顶层Makefile文件,指定平台和交叉编译器:
#vim Makefile
#:set nu 显示行号
第183和184行改为如下:这里按键盘上的ins键可切换插入和替换模式
ARCH ?= arm ß指定系统硬件架构
CROSS_COMPILE ?= arm-linux- ß指定交叉编译器
以下所有修改完成后都要保存,如下
#wq
修改arch/arm/mach-s3c2440/mach-smdk2440.c 这里是机器的时钟
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000); ß改为12000000
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
修改arch/arm/tools/mach-types 这里是机器码 一定要和开发板bootloader提供的
相同,否则会提示错误,由于我的是168,修改如下:
#:/s3c2440 搜索关键字
toto ARCH_TOTO TOTO 361
s3c2440 ARCH_S3C2440 S3C2440 168
ks8695p ARCH_KS8695P KS8695P 363
好了,以上确保内核最基本的引导,下面进入图形化配置界面:
在linux-2.6.31.4目录下:
#make menuconfig
选择 Load an Alternate Configuration File,输入2440的默认配置文件:
arch/arm/configs/s3c2410_defconfig
然后在保存为默认的 .config
这里进行配置:
在System Type里面
S3C24xx Machines里面选择这几项,其余取消
System Type --->
S3C2410 Machines --->
[*] SMDK2410/A9M2410
S3C2440 Machines --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
在Kernel Features里面选择:
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA
在Boot Options里面修改为:这里的mtdblock2是启动时要挂载的分区,确保根文件系统
在这一分区,后面会提到。console 为控制台,这里是串口
noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200
最后保存:
Do you wish to save your new kernel configuration?
<ESC><ESC> to continue.
< Yes > < No >
#make zImage