linux内核移植到mini2440:

一、说明

     1、许多移植步骤都是参照了网上的一些博客的资料,为尊重他人劳动成果,现将一些主要的参考质料列出

           (1)http://blog.csdn.net/hpwzd/article/details/7365781

           (2)http://blog.csdn.net/dreambegin/article/details/6904822

           (3)http://3y.uu456.com/bp-93689db5998fcc22bcd10dac-2.html

     2、所有要修改的地方都用红色标注

二、移植环境

·主机:VMware  centos 6.3

·内核版本:2.6.32

·编译器arm-linux-gcc-4.3.2.tgz

·开发板信息:  mini2440

                         SDRAM:  H57V2562GTR(256M*2)

                         nandflash:K9K8G08U0B-PCBO(1GB)

                         norflash:  S29AL016M10TF102 (2M)



二、移植步骤

1、修改makefile

  修改内核源码顶层的makefile,在183行附近

makefile里的

         ARCH ?= $(SUBARCH)

         CROSS_COMPILE ?=

修改为

         ARCH ?= arm

         CROSS_COMPILE ?= arm-linux-


2、修改分区信息,

   这个分区信息要以bootloader一致,我的板子中norflash已经下载好了supervivi,可以从中查看,也可以观察友善之臂原有内核启动时打印出的信息。(目前自己也在学习uboot,但uboot自己还没怎么搞清,这里只说了supervivi)比如,我的板子所打印出的信息如下, 其中有4个分区,分别为supervivi   param    kernel   root  注意,分区的名字不重要,关键是起始位置和大小,为此,我们就要更具这个修改我们内核中的分区


  打开文件 arch/arm/mach-s3c2440/mach-mini2440.c  定位到245到287行附近,需要修改如下:

static struct mtd_partition mini2440_default_nand_part[]__initdata = {
[0] = {
.name = "u-boot",
.size = SZ_256K,
.offset = 0,
},
[1] = {
.name = "u-boot-env",
.size = SZ_128K,
.offset = SZ_256K,
},
[2] = {
.name = "kernel",
/* 5 megabytes, for a kernel with no modules
* or a uImage with a ramdisk attached */
.size = 0x00500000,
.offset = SZ_256K + SZ_128K,
},
[3] = {
.name = "root",
.offset = SZ_256K + SZ_128K + 0x00500000,
.size =MTDPART_SIZ_FULL,
},
};


static struct s3c2410_nand_set mini2440_nand_sets[] __initdata= {
[0] = {
.name = "nand",
.nr_chips = 1,
.nr_partitions= ARRAY_SIZE(mini2440_default_nand_part),
.partitions = mini2440_default_nand_part,
.flash_bbt = 1, /* we use u-boot to create a BBT */
},
};


static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
.tacls = 0,
.twrph0 = 25,
.twrph1 = 15,
.nr_sets = ARRAY_SIZE(mini2440_nand_sets),
.sets = mini2440_nand_sets,
.ignore_unset_ecc = 1,
};


 (1)对于第一个函数mini2440_default_nand_part[] __initdata,  首先要修改分区信息,对于我的开发板,只要将MTDPART_SIZ_FULL改为0x04000000即可。其次,一定要将__initdata删掉,因为__initdata属性造成这部分数据会在根文件系统挂载后被释放,但事实上它们还会被nand flash driver用到,因此就出现了memory access问题。

 (2)对于第二个函数mini2440_nand_sets[] __initdata,要将__initdata删掉

 (3)对于第三个函数mini2440_nand_info __initdata修改下列数据,并且将__initdata删掉

.tacls20,
.twrph0 60,
.twrph1 20,



3、修改机器码。

修改arch/arm/tools/mach-types” 文件中,在大概 379 ,把原来的 362改为782



4、去掉内核ECC校验

修改drivers/mtd/nand/s3c2410.c ,搜索关键字NAND_ECC_SOFTs3c2410_nand_init_chip函数里,修改NAND_ECC_SOFT NAND_ECC_NONE



5、增加Yaffs2文件系统的支持

下载yaffs2源码,在源码目录进行打补丁操作,时内核支持Yaffs2文件系统。执行:

./patch-ker.sh c  /“你的内核源码目录” 。此时到内核源码的“fs/”目录下面您将看到新添加了一个名为“yaffs2/”的目录,同时 fs/目录下面的 Makefile 文件和 Kconfig 文件也添加了 yaffs2 的配置和编译条件。


6、配置内核

 这一步骤就可以参考我参考的资料,注意,那里用到的内核版本不一样,他的有些选项不存在,不必担心。

 请参照 http://blog.csdn.net/hpwzd/article/details/7365781



7、编译内核

make zImage

  

   











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值