现在的位置: 首页 > 综合 > 正文

0K6410学习之初步移植linux内核

2014年08月29日 ⁄ 综合 ⁄ 共 1571字 ⁄ 字号 评论关闭

环境:

 

PC机系统:Redhat6.1

目标板:    OK6410

目标板系统:linux3.0.101

编译器:       arm-linux-gcc4.3.2

 uboot文件已经上传到这里:http://download.csdn.net/detail/king_bingge/6820791


移植步骤:

1. tar -xf linux-3.***

2. make distclean  清楚所有中间文件和配置文件

3.    进入linux-3.***/arch/arm/mach-s3c64xx目录,我们能看到如下文件

可以看到,对于我们的时s3c6410这个芯片来说,linux3.0.1的内核已经支持了这几款开发板,那么我们可以选择一个功能相近的来进行移植,mini6410是个不错的选择。

4.    执行cp mach-mini6410.c mach-ok6410.c

5.    打开mach-ok6410.c文件,将里面的mini6410全部替换为ok6410,总共有64处,暂时修改完毕。

6.    在同一目录下,gedit Kconfig 打开这个文件,找到MINI6410的配置,为了不破坏源码,我们复制一份ok6410的出来,如下图示

要注意此处的OK6410都是大写的,这会在后边用到。

7.    下面就说一下刚刚提到大写的原因,继续打开我们的gedit  mach-ok6410.c这个文件,找到下面的东西,改为大写OK,这两个就是匹配我们之前提到的那个字符串

8.    自然,因为我们加入了mach-ok6410.c这个文件,所以在对应的目录下面的makefile中需要添加该文件进去,如下图示

还是一样没找到mini6410的地方。

注意红色箭头部分一定要正确,否则会出现如下错误

9.    到这里为止,该目录的一些需要注意的地方就修改完毕了。但是有一点非常重要的就是,我们此时的机器码变成了ok6410,所以,为了我们的uboot能够引导kernel,所以这里的机器码必须要匹配,进入linux-3.***/arch/arm/tools,打开mach-types文件,修改机器码,如下图示

Smdk6410的修改为ok6410,当然这个需要和你的uboot对应起来,否则将无法引导内核。

10.   当然了,为了使得我们编译出来的内核能够在开发板上运行,在顶层目录下的makefile也需要做相应的修改,这个和uboot移植是一样的道理


修改为


到这里,我们kernel的移植已经完成了百分之八十了。继续完成最后的战役!

 

11. cd   linux-***/arch/arm/configs 找到配置文件 s3c6400_defconfig

12. cp s3c6400_defconfig  ../../../.config

其中,.config文件在我们使用make menuconfig的时候会用到

13. cd ../../../进入顶层目录,执行make menuconfig

14.  在 -->General setup-->Cross-compiler tool prefix中输入arm-linux-  如下图示

 

16.  KernelFeatures  --->选上Use the ARM EABI to compile thekernel,因为我是用的arm-linux-gcc-4.3.2.tgz编译器使用了EABI方式,所以这就需要内核同样配置EABI编译属性才能支持EABI编译出来的应用程序如下

16.        System Type  --->进入勾选上自己的OK6410,如下图示,其他复选框去掉


17.        保存配置,然后执行make zImage 编译内核。

18.        做完这些工作,我们就可以把生成的zImage文件烧写到开发板,如下可以看到,内核已经正常启动了。

 

抱歉!评论已关闭.