Arndale Octa Board Exynos5420开发板之系统(Linaro Ubuntu)内核移植
来源:互联网 发布:网络运维与管理 邮发 编辑:程序博客网 时间:2024/06/05 07:28
必须仔细看,请注意看::::这边文章讲述的内核移植是针对Arndale Octa Board Exynos5420开发板的可用系统之一(Linaro Ubuntu)而言的,请注意并不是针对Arndale Octa Board Exynos5420开发板原本就稍写在eMMC上的android 4.2.2系统的内核移植。如果做原android系统的内核移植的,请移步。
还有,关于系统的内核移植可以在开发板上进行,也可以在PC机上进行。这博文的内核编译是在PC机上,板上进行的编译移植稍微有些差别。
OK,开始我们的主题:在PC机上编译内核,并将内核移植到Arndale Octa Board Exynos5420开发板上。
Step1:材料及环境准备。
材料:
1.
一张已经制作好的Linaro Ubuntu系统并且能够正常的在Arndale Octa Board Exynos5420开发板上启动的SD卡。Linaro Ubunt系统SD卡的制作,请移步我的另一篇博文http://blog.csdn.net/jevons_zzf/article/details/41786173
2.
不同版本的内核文件。下载地址http://releases.linaro.org/14.09/components/kernel/linux-linaro-stable-lsk/,文件格式类似于linux-linaro-stable-3.14.19-2014.09.tar.bz2,其中3.14.19为内核版本号,2014.09为发行时间。
页面如下:
环境:(主要就是安装针对arm的gcc交叉编译工具)
1.
PC机上安装交叉编译工具gcc。这里有一点需要说明一下,正常来说PC机上的Ubuntu系统自带有gcc编译工具,然而此自带gcc是 针对PC机的,简单说来就是使用自带gcc编译出来的东西只能应用在PC机上,而我们所针对的目标是Arndale Octa Board Exynos5420开发板,也即arm,所以我们需要在安装针对arm的交叉编译工具gcc,使其编译出来的东西能够应用在arm目标机上。 具体安装如下:终端输入命令sudo apt-get install gcc-arm-linux-gnueabif来安装,从命令我们就能看出,这是针对arm的gcc编译工具。
安装成功之后终端输入命令whereis arm-linux-gnueabihf-gcc来查看你的arm gcc编译工具的位置,如下图:这里请一定记住你arm gcc编译工具的路径,因为接下来都要用到。比如我安装好之后的arm gcc编译工具的路径为/usr/bin/arm-linux-gnueabihf-gcc。
当能够正常显示你的arm gcc编译工具的路径时,就表示安装已经成功了,接下来就是可以使用它来编译我们想要的东西了。
Step2:解压内核源码
将下载下来的内核压缩文件进行解压,获取内核的源码树。终端进入内核压缩文件所在目录,并执行命令sudo tar -xvf linux-linaro-stable-3.14.19-2014.09.tar.bz2 (我下载的内核为linux-linaro-stable-3.14.19-2014.09.tar.bz2),这一步稍微会花点时间,解压完成之后在相同目录下就会出现内核的源码文件目录linux-linaro-stable-3.14.19-2014.09,如下:
至此,我们的准备工作基本完成,总结一下就是:一张Linaro Ubuntu系统的SD卡,安装了ARM gcc交叉编译工具的Ubuntu系统PC机,不同于SD卡内核版本的内核源码。
Step3:查看SD卡Linaro Ubuntu系统的内核版本和以及其对应的加载地址入口地址等。
开发本选用SD卡启动,然后通过minicom进入到串口调试模式(如果不懂如何使用minicom进入调试模式的话,请自行百度搜狗)
1.
查看内核加载地址和入口地址,启动板子,进入minicom之后重新启动板子,你会看到如下界面:
命令行输入boot后回车启动系统:
在罗列出来的一系列启动信息中,在靠近一开始的位置查找内核的加载地址和入口地址(这一点也很重要),如下图:
加载地址Load Address: 20008000
入口地址Entry Point: 20008000
2.
查看内核版本号,当系统启动完毕之后命令输入uname -r,回车后,系统将输出对应的版本号,如图为3.14.7
接下来就是关于内核的编译和移植了 。
首先是内核编译:
Step4:(PC机上编译内核需要注意的一点是编译目标机和编译工具的选择)
这里也先介绍一下编译内核常用的几条命令,给刚接触内核编译的伙伴带来点方便:
make mrproper:这个操作会将以前进行国的内核功能选择文件都删除掉,使内核源码回归为最初始的状态。一般在第一次编译内核时使用。
make clean:这个操作只是删除类似文件之类的编译过程生成的中间文件,不会删除设置文件。一般会在第二次或者往后的重新编译过程中使用。
make defconfig/make menuconfig/make xconfig/make gconfig:通过hua 图形化界面的形式供我们配置内核的功能,最后在根目录下生成.config文件,这份文件才是编译内核真正所需要的文件。
make oldconfig:通过使用已存在的.config文件,使用该文件内的设置值为默认值,只将新版本内核内的功能选项列出让用户选择,可以简化内核的挑选过程。
make/make uImage/bzImage:根据需要编译内核镜像文件
make modules:编译模块
make modules_install:安装模块,这个模块安装的默认路径是./lib/modules/x.x.x下,所以一般情况下,我们在安装的时候会另外用INSTALL_MOD_PATH来赋予其他的安装路径,防止默认路径下的安装最终会影响我们PC机的工作。
make install:将我们编译好的所有东西都提取出来并放在指定路径下。
在下面的编译过程中,我们用到的命令形式均是sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- XXXXX
解释一下这条命令格式。“ARCH=arm”是选择我们的目标机,为arm linux内核,符合我们的开发板,“CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-”是选择我们的编译工具,这里的路径就是Step1中我们提到的安装好arm gcc编译工具之后必须记下来的gcc路径。如果不进行这两者的选择,你编译出来的内核镜像文件将无法应用在我们的开发板上。
开始编译:
1.
由于是第一次编译,我们进入内核根目录下执行sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- mrproper命令(清除掉内核源码中的残留文件),类似的如果是第二次编译,则执行如sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- clean下图:
2.
同样根目录下,执行sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- exynos_defconfig(这里的配置文件选择exynos_defconfig也是为生成.config文件,我们现在暂时不用menuconfig等来配置自己的内核功能,而是选用源码中本来就代用的针对exynos5420的最基础的默认配置,这份文件放在源码的./arch/arm/configs目录下,里面还有其他很多针对不同板子的默认配置,比如mini2440_defconfig等等)
最后一句话指明,配置已经写到.config文件中了。
3.
根目录下,终端执行命令sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- LOADADDR=0x20008000 uImage。(这里需要注意两点,一是LOADADDR=0x20008000表示编译生成的镜像文件的加载地址,这个地址要和在Step3中查看的原来的加载地址保持一致,二是生成uImage镜像文件,因为Linaro Ubuntu系统里的镜像文件是uImage格式的),然后就是漫长的等待了。
编译成功之后,你会看到如下信息:(显示arch/arm/boot/uImage镜像已经生成,同时它的加载地址和入口地址均是20008000),这个uImage镜像就是我们接下来要移植的文件。
4.移植内核文件uImage.
将系统SD卡带读卡器插入到电脑中,在弹出的boot界面中将uImage用我们在上面编译生成的uImage镜像文件取代(建议将弹出的boot界面中的uImage做好备份,然后再将我们生成的uImage镜像文件拷贝进去),如下图:
完成之后重新用SD卡启动开发板,查看现在的系统内核版本,如下图:(现在的内核版本已经成功变成3.14.19了)
5.编译模块并安装模块
这一步与内核的移植没有特别大的关系,但是新系统的使用却一定需要编译模块和安装模块,废话不多说。回到PC上,终端分别输入命令sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- modules和sudo make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/home/zefeng/kernel/modulesDIR(这是我的模块安装路径),见图
谢谢!!!希望能对你有所帮助。
内核的配置和编译移植等是很繁琐的,问题也总是会有的,不过遇到问题的时候仔细看看终端上出现错误的提示,然后再慢慢解决。总会搞定的。
- Arndale Octa Board Exynos5420开发板之系统(Linaro Ubuntu)内核移植
- Linaro Ubuntu for Arndale Octa Broad Exynos 5420开发板,启动系统sd卡的制作。
- Linaro Android 4.4.2系统下载和使用(arndale octa board)
- Linaro Android 4.4.2系统下载和使用(arndale octa board)
- Linaro ubuntu for arndale octa烧写步骤
- Arndale Octa开发板下载android源码
- 购买Arndale Octa 5420开发板
- arndale linaro ubuntu 系统初始化设置
- Fedora 22 for arndale octa board
- Fedora22 for arndale octa board(升级内核到4.1.0-rc8)
- arndale octa开发板编译u-boot和kernel
- 关于Samsung Exynos 5420 Arndale octa board的HDMI外接显示屏问题。
- 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统
- Arndale Octa 5420网络设置
- 5. linaro ubuntu移植
- 制作ZedBoard-linaro-desktop-ubuntu全过程之编译Linux内核
- 【开发手记二】:各有千秋:搭建Linaro Ubuntu与搭建嵌入式Linux系统
- Ubuntu Linaro
- WEB架构师之葵花宝典
- 共同的中国梦,共同的润中梦
- 第16周项目3 用函数指针调用函数
- Android学习笔记(一)——简单的控件和基本响应:鼠标事件的响应
- 全面接触SQL语法
- Arndale Octa Board Exynos5420开发板之系统(Linaro Ubuntu)内核移植
- C语言(七)
- hibernate 注解使用异常解决方法
- 如何通过Zabbix获取监控数据?
- 翻转吧!字符串
- PHP学习笔记
- linux常用命令
- 经典topK问题
- cocos2d-x3.2中fatal error: cocostudio/CocoStudio.h: No such file or directory