mini2440内核移植

第一步,应该是修改对硬件平台的支持。

首先,应该是arm架构,其次是arm-linux-gcc的编译方式的支持

第二步,就是平台时钟和机器码了,只有选择了相对应得平台时钟才能正常的工作。

第三步,就是对硬件分区的支持了,也可以说是nand flash驱动的移植

第四步,是对yaffs2的文件系统的支持。

linux内核的移植中,你所要更改的大部分设置都在arch/arm目录下。

1.   先添加对arm的支持

进入内核文件夹

#vi  Makefile

 

                        ARCH?=$(SUBARCH)

                        CROSS_COMPILE?=

        改成:

 

                         ARCH?=arm

                         CROSS_COMPILE?=arm-linux-

 2.修改平台时钟频率
# vi arch/arm/mach-s3c2440/mach-smdk2440.c

找到数字16930000改为12000000

3 .修改机器码
 # vi arch/arm/tools/mach-types

S3C2440后面的数字改为1999

MINI2440后面的数字改为362

4.移植nandflash驱动
 vi arch/arm/plat-s3c24xx/common-smdk.c

 

nand flash的分区,就要看你的vivi在开发板上显示的信息作相应的更改了,

将开发板连接上电脑,启动超级终端/secureCRT,选则q后,

进入supervivi模式,

输入以下命令:

param show 查看机器码

part   show   查看分区

5.  arch/arm/tools/mach-types3c2440的机器码一定要与vivi中的一致

vivi param show –显示一小参数

 

 6.修改MTD分区

   根据vivi中part show 之后的信息

         arch/arm/plat-s3c24xx/common-smdk.c中修改

mini2440内核移植_第1张图片

例如

Static struct mtd_partition smdk_default_nand_part[]={

             [0]={

                    .name    =”vivi”,

                    .size      =0x00040000,

                    .offset   =0x00000000,

},

[1]={

                    .name    =”kernel”,

                    .offset   =0x00060000,

                    .size      =0x00200000,

},

[2]={

                    .name    =”root”,

                    .offset   =0x00260000,

                    .size      =0x3fd80000,

}

};

 注:多余项必须删掉。且param项也必须删除,不然会出现kernel panic的错误

 修改成这样是没有问题的,但出现

mini2440内核移植_第2张图片

上图中的 中ftl_cs:FTL header not found.的问题(这不是我当时做的截图,但问题是一样的)

我们修改成下图这样的数据格式就不会出现ftl_cs:FTL header not found这个问题了。

mini2440内核移植_第3张图片

 

 

7接下来就是对内核的定制了,

首先复制一下对于S3C2410/2440的通用配置

注意:在执行make menuconfig之前一定要先执行下面这一步
cp  -rf   arch/arm/configs/s3c2410_defconfig  .config

make menuconfig

 

1)支持EABI

Kernel Features  --->
[*] Use the ARM EABI to compile the kernel                  


[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)

 

 mini2440内核移植_第4张图片

2)支持 NandFlash

Device Drivers --->

     <*> Memory Technology Device (MTD) support --->

           [*]   MTD partitioning support

           <*> NAND Device Support --->

                <*>   NAND Flash support for S3C2410/S3C2440 SoC

                [ ]    S3C2410 NAND Hardware ECC    //这个一定不要选上 ,

      Nand Flash Capacity Select(256M Nand For TX-24)

mini2440内核移植_第5张图片

mini2440内核移植_第6张图片

3)进行内核的初步裁剪

system type ->

找到      S3C2400 Machines --->                                      

       S3C2410 Machines --->                                      

        S3C2412 Machines --->                                    

         S3C2440 Machines --->                                    

         S3C2442 Machines --->                                   

         S3C2443 Machines ---> 

除了S3C2410Machines中的第一项和S3C2440Machines中全部选项留下外,

其余的全部去掉。

mini2440内核移植_第7张图片

 

mini2440内核移植_第8张图片

 

4)接着去掉软浮点检测
gedit drivers/mtd/nand/s3c2410.c

找到chip->ecc.mode = nand_ECC_SOFT改为NONE

 

5)接着就是添加yaffs2的文件系统的支持(即为内核打上yaffs2的补丁),当然你也可以选别的。

首先,如果选择yaffs2的话,

在网上下载一个yaffs2源码,解压后进入

执行 ./patch-ker.sh c /home/test/linux-2.6.32.2

后面是你自己的linux源码的位置

 

此时进入linux-2.6.32.2/fs目录,可以看到已经多了一个yaffs2目录(这样在make menuconfig中才会有YAFFS2 System Support选项)

mini2440内核移植_第9张图片

配置和编译带YAFFS2支持的内核

Linux内核源代码根目录运行:make menuconfig,移动上下按键找到File Systems,如图,按回车进入该子菜单

mini2440内核移植_第10张图片

再找到“Miscellaneous filesystems”菜单项,按回车进入该子菜单,如图

mini2440内核移植_第11张图片

出现如下图菜单,找到“YAFFS2 file system support”,并按空格选中它,这样我们就在内核中添加了yaffs2文件系统的支持,按“Exit”退出内核配置。

 

mini2440内核移植_第12张图片
添加完成后。

8.make zImage内核就算移植完成了。如果遇到什么问题的话,就具体问题具体分析了。

 

 

你可能感兴趣的:(mini2440内核移植)