mini2440移植linux2.6.34.2

来源:互联网 发布:三唑仑淘宝交易 编辑:程序博客网 时间:2024/06/02 01:29

mini2440估计做嵌入式的朋友都知道,是友善之臂研发的一款开发板,使用的处理器是S3C2440,官方提供的内核是linux2.6.32.2,最近闲的无聊,研究研究linux内核驱动,于是在官方下载了一个别的版本,想把它移植到mini2440上边,我选择了官方提供的linux2.6.34.2这个版本作为移植对象,下面是我移植的步骤:

第一步:搭建linux开发环境。我的开发环境是ubuntu-10.04,安装的交叉编译器是arm-linux-gcc-4.3.2,打开终端,运行arm-linux-gcc–v命令,如果出现如下图1所示的界面,出现gcc version 4.3.2,说明开发环境已经搭建好了,第一步完成。

        

图1

第二步:下载linux内核,和yaffs2文件系统。linux-2.6.34.2的下载地址为:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.2.tar.gz(如下图2),这样便得到了最纯的linux内核;

图2

yaffs2文件系统的下载地址为: http://www.aleph1.co.uk/gitweb?p=yaffs2.git;a=summary(如图3),选择snapshot便可以下载yaffs2-52df965.tar.gz。

图3

将下载得到的linux-2.6.34.2.tar.gz和yaffs2-52df965.tar.gz放到同一个目录下,在这里我把这两个文件都放到了/opt/下,到此,第二步就完成了。

         第三步:移植内核。

#cd /opt/

         #tarxvzf linux-2.6.34.2.tar.gz //解压安装linux-2.6.34.2内核源代码,得到目录linux-2.6.34.2

         #tarxvzf yaffs2-52df965.tar.gz//解压安装yaffs2-52df965源代码,得到目录yaffs2-52df965

         #cdlinux-2.6.34.2//进入内核根目录

         #geditMakefile//修改顶层makefile,在189行,在这里只需修改两行,一个是目标平台改为arm,另一个是交叉编译器改为arm-linux-,如下图4改为图5

 

图4

图5

         #geditarch/arm/tools/mach-types//修改机器码,在379行,mini2440bootloader传入的机器码为782所以找到图6这一行


图6

改为图7所示的

图7

         #geditarch/arm/mach-s3c2440/mach-smdk2440.c//修改时钟频率,在163行,改为板子晶振频率12M,如下图8

图8

         #gedit arch/arm/plat-s3c24xx/common-smdk.c//修改Nand Flash分区,在110行,如图9

图9

         # cp arch/arm/configs/s3c2410_defconfig.config//配置内核

         #make menuconfig//进入内核配置图形界面如图10

图10

进入System Type--->S3C2410 Machines--->,设置如图11

图11

进入System Type--->S3C2440 and S3C2442 Machines--->,设置如图12


图12

进入Kernel Features--->,设置如图13

图13

设置对yaffs2文件系统的支持:

进入刚才安装的yaffs2源码包,

         #./patch-ker.shc m ../linux-2.6.34.2当出现

Updating ../linux-2.6.34.2/fs/Kconfig

Updating ../linux-2.6.34.2/fs/Makefile

表明给内核打补丁成功。

返回内核目录重新配置

         #makemenuconfig

设置File systems--->[*]Miscellaneousfilesystems---><*>YAFFS2 file system support

编译内核

         #makezImage

编译成功之后,将内核下载进去,启动之后进入控制台,运行命令uname –r,可以看到此时内核的版本已经变成了2.6.34.2,内核移植成功,此时大部分硬件的驱动还没有正常添加,有时间继续移植各个外设的驱动!