打印

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

[复制链接]
4129|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
群龙舞十方|  楼主 | 2010-1-26 13:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
**来源:飞凌嵌入式 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 打开内核配置界面,

然后配置如下:

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

相关帖子

沙发
arm86| | 2010-1-26 21:44 | 只看该作者
支持原创

使用特权

评论回复
板凳
seasideboy6| | 2010-2-24 08:45 | 只看该作者
支持下

使用特权

评论回复
地板
群龙舞十方|  楼主 | 2010-2-25 07:57 | 只看该作者
多谢支持,希望对大家有帮助:)

使用特权

评论回复
5
guitarclassi| | 2010-3-14 11:21 | 只看该作者
我也是刚买了块飞凌OK2440III,我不想装linux。
现在装了cygwin(带GCC, G++),现在不知道怎么搭交叉编译环境。
请问大哥知道不?我想要的环境是arm+linux+gcc,不是arm-elf-gcc。

使用特权

评论回复
6
群龙舞十方|  楼主 | 2010-8-14 07:20 | 只看该作者
果断的问他们技术服务,解答的很详细:)

使用特权

评论回复
7
freewing| | 2010-9-20 10:48 | 只看该作者
顶贴, 天嵌科技的2.6.25.8 移植手册09年出版,目前最新移植手册2.6.30 ,在论坛可以下载,欢迎来访:http://bbs.embedsky.net/viewthread.php?tid=630&extra=page%3D1
非常不错。

使用特权

评论回复
8
haizhibian| | 2010-9-20 20:26 | 只看该作者
非常感谢  我是刚刚接触嵌入式的  希望自己能够学好

使用特权

评论回复
9
不相信眼泪| | 2010-9-27 15:25 | 只看该作者
怎么剩下的东西我没看到啊?

使用特权

评论回复
10
ngdxzjq| | 2010-10-8 22:41 | 只看该作者
ha0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

460

帖子

2

粉丝