发 帖  
原厂入驻New

我的内核移植笔记linux-2.6.25.8移植到OK-2440-III

2010-1-26 14:11:02  2156
分享

文章来源:http://www.witech.com.cn/

写给比我晚接触嵌入式嵌入式爱好者们!!

接触嵌入式有一段时间了,这段时间里多亏了飞凌工程师帮忙,解答了我发在论坛里的很多弱弱的问题。。。。这里我把这段时间里我移植内核到飞凌的OK-2440-III板子的详细步骤发出来,希望能对朋友们有所帮助,也当作一种回报给论坛。。。。。

交叉编译工具链:cross-3.4.1(飞凌的随板子光盘里面提供了,或者自己可以去百度搜)

内核:linux-2.6.25.8 (可以到www.kernel.org去下载)

目标板:飞凌公司的ARM9开发板OK-2440-III

平台:虚拟机redhat linux-9


移植开始!

 

还有不知道有没有必要说,以下我说的执行XX命令都是在虚拟机linux的终端执行。。。。。。。。

 

一、首先正确配置虚拟机,安装Vmtools,使虚拟机linux可以和windows共享文件(怎么安装虚拟机linux就不用说了吧,不会的去百度吧):

 

VMware工具的安装:
1.在虚拟机开机时,在VMware菜单中选择VM->Install VMware tools选项安装VMware工具。
注意:其实通过这步操作并没有真正安装上。你可以看一下,你设的共享目录仍然没有,分辩率也没法设。
2.在虚拟机linux里打开光驱,有两个文件,其中一个是VMware Tools的tar文件,我现在的是VMware-Tools-5.5.3-34685.tar.gz。
3.copy这个tar文件到~/temp下(你的主目录下的哪个目录下都行)。
4.解压这个文件到当前目录,会发现~/temp下多了一个解压出的vmware-tools-distrib目录。
5.cd到这个目录下,执行./vmware-install.pl(安装很简单一路回车就OK)。
6.cd vmware-tools-distrib/bin目录下 执行./vmware-config-tools.pl来配置工具(这个过程需要虚拟机上已经安装了GCC,过程也很简单,根据提示作就可以完成)。
重新启动虚拟机,会发现我们在第六步设置的分辨率起作用了,我们设的共享目录也可以看到了(在/mnt/hgfs目录下)。


。。。。。。设置好之后在windows端你设置的共享文件夹里放入需要共享到虚拟linux的文件,然后在linux的/mnt/hgfs目录下就可以找到。。。。


至此,搞定windows和虚拟linux文件共享问题!

 

二、安装交叉编译工具链


     在/usr/local目录下,新建arm/目录,将共享的交叉编译工具cross-3.4.1.tar.bz2复制到里面(即复制到/usr/local/arm目录),新建终端,执行:cd /usr/local/arm,切换到/usr/local/arm目录,执行:tar jxvf cross-3.4.1.tar.bz2命令将交叉编译工具解压到当前目录,会生成3.4.1文件夹,将来编译所需的工具就在里面。


。。。。。。至此交叉编译环境搭建好了。。。

 

三、内核移植

 

     将共享的linux-2.6.25.8.tar.bz2复制到/home目录,执行:tar jxvf linux-2.6.25.8.tar.bz2命令将内核解压到当前目录,在终端执行:cd /home/linux-2.6.25.8命令切换到内核源码目录。


。。。。。真正的移植开始。。。。


1、执行:gedit Makefile命令打开顶层的Makefile文件(注意Makefile的第一个字母是大写,linux里面是区分大小写的),找
      ARCH ?=(SUBARCH) 和 CROSS_COMPILE ?=


将其改为:

    ARCH ?= arm


CROSS_COMPILE  ?=/usr/local/arm/3.4.1/bin/arm-linux-


(相信很多人在网上会看到资料说:CROSS_COMPILE  ?=arm-linux- ,但是这样就需要设置环境变量,还不如直接写全路径的好)


2、执行:gedit arch/arm/mach-s3c2440/mach-smdk2440.c找到

 

Smdk2440_map_io函数,将16934400修改为12000000(此处为平台输入时钟,OK-2440-III用的是12MHz的外部时钟


3、修改MTD分区


执行:gedit arch/arm/plat-s3c24xx/common-smdk.c命令

 

在109行左右,找到内核的分区信息:

 

将它修改为和bootloader的分区一致,即:

 

static struct mtd_partition smdk_default_nand_part[] = {

 

 

[0] = {


         .name = "Boot",

         .size   = 0x00100000,


         .offset = 0


    },

 

    [1] = {


         .name = "MyApp",


         .size   = 0x003c0000,


         .offset = 0x00140000,

    },

 

    [2] = {


         .name = "Kernel",

 

         .size   = 0x00300000,


         .offset = 0x00500000,

 

    },

    [3] = {

         .name = "fs_yaffs",

         .size   = 0x03c00000,  

         .offset = 0x00800000,

    }, 


    [4] = {

         .name = "WINCE",

         .size   = 0x03c00000,

         .offset = 0x04400000,


    }

 

};

4、修改drivers/mtd/nand/s3c2410.c禁止flash ECC校验


找到s3c2410_nand_init_chip()函数,在该函数体最后把:


chip->ecc.mode = NAND_ECC_SOFT;


修改成:


chip->ecc.mode = NAND_ECC_NONE;

修改完成后保存,关闭。

。。。。。。。。做完这些后,内核的基本修改已经完成,接下来可以简单配置一下内核,然后编译,再下载到板子上看看效果,但是现在还没有进行文件系统的移植,一定会报错的,没关系,只要能看到你内核分区的打印信息就说明上面的修改生效了,然后就可以继续移植文件系统了。。。。。。。。。


5、移植yaffs文件系统

说明一下,这里的移植文件系统还不是真正的移植,只是给内核打上文件系统补丁,让内核支持yaffs文件系统,因为O-2440-III的板子预先烧写好的文件系统就是yaffs的,所以这里咱们先利用预先烧写好的文件系统来测试移植的内核,换句话说就是:如果内核移植和配置的没有问题的话,是可以正确挂载板子上预先烧写的文件系统的。Understand?

 

好了,废话少说,开始干活。。。。。。。


首先到 www.aleph1.co.uk/cgi-bin/viewcvs.cgi 下载一个yaffs文件系统的补丁,打开网页后,点击Download tarball 下载补丁。


然后利用上面做好的windows和虚拟机linux共享文件的方法把下载好的压缩包复制到/home目录下,假如你下载的这个压缩包名字为:root.tar.gz


解压到当前目录:tar xvzf root.tar.gz

进入解压出来的yaffs2目录

执行:./patch-ker.sh c /home/linux-2.6.25.8/    (注意最前面有个“.”)

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

。。。。。。。至此基本的移植工作已经完成(除一些相关驱动移植,驱动移植在后面慢慢完成),下面将自己移植的内核配置一下就可以烧进板子检验一下了。。。。。

6、配置内核

   切换到内核目录:cd /home/linux-2.6.25.8

   执行:make s3c2410_defconfig 载入缺省的2410内核配置,因为2410的配置和2440的相近,这样我们就可以在2410的配置的基础上进行更改,节省一些力气。

   执行:make menuconfig 打开内核配置界面,


然后配置如下:


平台配置

----------------------------------------------
人生重要的不是所站的位置,而是所朝的方向!

0
2010-1-26 14:11:02   评论 分享淘帖
高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖
快速回复 返回顶部 返回列表