Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3126078
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-08-04 16:44:17

原文地址:http://blog.csdn.net/zhaole20094463/article/details/6882266

最近打算做一个完整的嵌入式系统,首先就应该是内核的移植了,

所以便深入的学习了一下,为了联系,我总共是移植了三个版本的内核

分别是linux2.6.28和2.6.30,2.6.32。

我的开发板是mini2440,bootlorder是vivi。

首先说一下关于公司给的移植方法

比如说mini2440的官方技术手册。它里面就给出了很详细的移植方法。但是如果你使用它给你的内核的话,很显然你

学不到什么东西。因为那都是公司做好的,没有的东西,或者你会遇到的很多问题都已经帮你解决了。而且针对于不同

公司开发板的移植方法,都不是通用的,只是针对于一款硬件设备,所以下面我就介绍一下我的移植方法,一种通用的

移植方法。

关于内核的移植网上有很多资料,我想大家应该也已经看过很多了。

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

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

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

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

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

1。先添加对arm的支持

gedit Makefile

 

                                             ARCH?=$(SUBARCH)

                        CROSS_COMPILE?=

         改成:

 

                         ARCH?=arm

                         CROSS_COMPILE?=arm-linux-

         arm-linux-   后的“-”容易丢失

 

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

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

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的通用配置


cp 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 -> 2410/arm92410
去掉软浮点检测
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 内核就算移植完成了。如果遇到什么问题的话,就具体问题具体分析了。

阅读(1257) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~