内核移植开发文档

 

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

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

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

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

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

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

1。先添加对arm的支持

gedit Makefile

 

                        ARCH?=$(SUBARCH)

                        CROSS_COMPILE?=

         改成:

 

                         ARCH?=arm

                         CROSS_COMPILE?=arm-linux-

 2。修改平台时钟
 gedit arch/arm/mach-s3c2440/mach-smdk2440.c

找到数字16930000改为12000000

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

将S3C2440 后面的数字改为1999

将MINI2440后面的数字改为362

4移植nandflash驱动
 gedit arch/arm/plat-s3c24xx/commond-smdk.c
 根据bootlorder 里面的分区情况进行更改

平台时钟要看你的开发板上外接的晶振是多少,

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

将开发板连接上电脑,启动超级终端

进入supervivi模式

输入以下命令

param show  查看机器码

part   show    查看分区

5。 在 arch/arm/tools/mach-type 中s3c2440的机器码一定要与vivi 中的一致

 

Vivi中 param show –显示一小参数

 

 6,修改MTD分区

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

 

 

 

Vivi 中 part show –显示以下参数

 

bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,比保

 

证内核、文件系统能够烧写到nandflash中

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

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

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

make menuconfig

支持EABI

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


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

 

支持 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

进行内核的初步裁剪

system type ->

找到       S3C2400 Machines  --->                                       │ │ 

  │ │        S3C2410 Machines  --->                                       │ │ 

  │ │        S3C2412 Machines  --->                                       │ │ 

  │ │        S3C2440 Machines  --->                                       │ │ 

  │ │        S3C2442 Machines  --->                                       │ │ 

  │ │        S3C2443 Machines  ---> 

出去S3C2410Machines中的第一项和S3C2440Machines中全部选项留下外,

其余的全部去掉。

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

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

接着就是添加yaffs2的文件系统的支持,当然你也可以选别的

如果选择yaffs2的话,

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

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

后面是你自己的linux源码的位置,注意最后面的/一定不要忘了
添加完成后,make zImage 内核就算移植完成了。如果遇到什么问题的话,就具体问题具体分析了。

 

你可能感兴趣的:(内核移植开发文档)