s3c2440的linux内核移植简程

来源:互联网 发布:权力的游戏 大麻雀知乎 编辑:程序博客网 时间:2024/05/16 15:31

平台:JZ2440

系统:Ubuntu

编译链:arm-linux-gcc-3.4.5
此文章为s3c2440平台移植linux内核简单教程。

1. 打yaffs2文件系统补丁
(假设内核目录为/work/linux-2.6.22.6,yaffs源码目录为/work/Development)
a 解压压缩包linux2.6.22.6.tar.bz2和压缩包yaffs_source.tar.gz
b. 执行以下命令向内核源码打补丁:
/work/Development/yaffs2/patch-ker.sh  C  /work/linux-2.6.22.6

2.  修改内核目录顶层的Makefile文件内容
原文:
   ARCH ?=  $(SUBARCH)
   CROSS_COMPILE ?=
修改为:
   ARCH ?=  arm
   CROSS_COMPILE ?=  arm-linux-

3. 复制配置文件s3c2410_defconfig到顶层覆盖.config文件
命令:#make  /work/linux-2.6.22.6/s3c2410_defconfig

4. 配置内核的内容参数等等,有关配置内容请查看详细内容
命令: make  /work/linux-2.6.22.6/menuconfig

5. 内核的配置界面中,在Boot options的第三行命令行参数里输入以下内容
noinitrd  root="/dev/mtdblock3"  rootfstype="jffs2"(空格后紧接下一行) 
console="ttySAC0",115200  init="/linuxrc"  mem="64M"

6. 内核配置后选择Save an Alternate Configuration File保存退出

7. 修改文件/work/linux-2.6.22.6/arch/arm/mach-s3c2440/mach-smdk2440.c内容
将函数static void __init smdk2440_map_io(void)中的数值16934400修改为12000000

8. 修改文件/work/linux-2.6.22.6/arch/arm/plat-s3c24xx/common-smdk.c内容
修改后的内容为:
static struct  mtd_partition  smdk_default_nand_part[ ] = {
[0] = {
.name  = "bootloader",
.size     =  0x00040000,
.offset  =  0,
},
[1] = {
.name  = "params",
.size     =  0x00020000,
.offset  =  MTDPART_OFS_APPEND,
},
[2] = {
.name  = "kernel",
.size     =  0x00200000,
.offset  =  MTDPART_OFS_APPEND,
},
[3] = {
.name  = "root",
.size     =  MTDPART_SIZ_FULL,
.offset  =  MTDPART_OFS_APPEND,
}
};

9. 进行内核编译,要用到工具mkimage(将此工具放在Ubuntu的目录/usr/bin)
命令:#make  /work/linux-2.6.22.6/uImage
0 0