基于iTOP-4412开发板(精英版)的linux 4.14.2内核移植

Posted 气血龙渊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于iTOP-4412开发板(精英版)的linux 4.14.2内核移植相关的知识,希望对你有一定的参考价值。

准备工作

虚拟机:VM-Ware 15.0 pro
操作系统:Ubuntu Linux 16.04
交叉编译器:arm-linux-gcc 4.6.2
工作文件夹:/home/用户名/work

一、内核源码获取

1、从linux官网下载内核

从linux官网下载内核,linux 官方网站是https://www.kernel.org/ 如下图所示:
在这里插入图片描述

2、将内核拷贝到虚拟机中解压

下载完成后,在虚拟Ubuntu中的工作文件夹中建立kernel文件夹并将下载的压缩包拷贝进去:
在这里插入图片描述
解压缩xz压缩包:xz -d linux-4.14.232.tar.xz
打开tar包:tar -xvf linux-4.14.232.tar
在这里插入图片描述
解压完毕,生成linux-4.14.232文件夹。
在这里插入图片描述

二、修改源码编译架构及编译器

1、打开Makefile文件

进入源码文件夹,用gedit打开Makefile文件
在这里插入图片描述
修改313行和314行对应的架构(arch)和交叉编译器(CROSS_COMPILE)
在这里插入图片描述

三、内核裁剪

1、生成.config默认裁剪菜单文件

我们直接使用linux官方的默认配置即可,直接输入命令make exynos_defconfig,如下图所示:
在这里插入图片描述

2、进入裁剪界面

配置平台和调试串口。在内核源码下输入命令make menuconfig打开裁剪界面,如下图所示:
在这里插入图片描述
在这里插入图片描述

3、选择芯片类型

进入下面的路径:
在这里插入图片描述
把这个路径的选项配置成下图所示:
在这里插入图片描述

4、配置调试串口

返回到menuconfig第一级目录,从第一级目录进入到内核监视(Kernel hacking)路径,选中Kernel low-level debugging functions (read help!)和Early printk选项,如下图所示:
在这里插入图片描述
然后选择Kernel low-level debugging port (Use Samsung S3C UART 0 for low-level debug) 选项,把串口设置成串口2,如下图所示:
在这里插入图片描述
返回到menuconfig第一级目录,从第一级目录进入到以下路径:
在这里插入图片描述
再进入下图:
在这里插入图片描述
接着进入下图:
在这里插入图片描述
选中 Samsung SoC serial debug ,如下图所示:
在这里插入图片描述

5、配置文件系统启动方式

返回到menuconfig第一级目录,从第一级目录进入Boot options:
在这里插入图片描述
进入红框标记的中间一行,设置内核启动参数,设置如下:
在这里插入图片描述
将Kernel command type改为:kernel模式
在这里插入图片描述
修改后结果如下:
在这里插入图片描述

6、配置网络

itop4412开发板板载dm9621网卡芯片是usb类型,因此需要依赖于usb 网络框架,所以要通过裁剪菜单选中支持项:
在这里插入图片描述
主菜单进入设备驱动选项后,选择网络设备支持:
在这里插入图片描述
选择"USB网络适配":
在这里插入图片描述
在USB网络框架下选择对DM96XX的支持:
在这里插入图片描述

7、配置NFS服务

主菜单进入文件系统选项,如下图:
在这里插入图片描述
继续进入网络文件系统:
在这里插入图片描述
在 网络文件系统配置界面,选中和NFS相关的选项,如下图:
在这里插入图片描述
注意!linux4.14.152内核支持nfs客户端的最高版本为NFSv4.1,经测试发现,虽然内核保留早起nfsv2版本,但是不与该版本的服务器相匹配,服务器端即虚拟机端要下载nfsv3以上版本,(现在从apt上下载的都是nfsv3版本及以上了)
设置完成后,保存并退出。

四、编译内核

我们在内核源码下输入以下命令:
其中LOADADDR=0X40007000 表示指定内核的加载地址,如下图所示:
在这里插入图片描述
编译完成,系统提示如下:
在这里插入图片描述

五、修改设备树(dts)文件

进到内核arch/arm/boot/dts/下,里面默认有itop的设备树文件,如下图所示:
在这里插入图片描述
打开编辑修改exynos4412-itop-scp-core.dtsi文件:

1、注释掉firmware设备

firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。注释掉29到32行的代码,如下图所示:
在这里插入图片描述

2、修改event属性

因为没有events这个属性,所以我们要把72行的events修改成event,如下图所示:
在这里插入图片描述

3、配置核心板电源芯片

这部分大家可以对照下scp的核心板原理图,也可以参考下图,把下面的代码修改成如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存退出。
打开编辑修改exynos4.dtsi文件:

4、解决字符串溢出问题

文件中的串口2节点serial_2中的dmas属性如图注释掉:
在这里插入图片描述
保存退出。

5、编译设备树

输入下图所示命令:
在这里插入图片描述
等待编译输出结果:
在这里插入图片描述

六、烧写镜像

我们把编译生成的uimage和dtb以及系统文件根目录system.img,uboot使用我们移植好的uboot_2015.04即可,具体烧写方法大家可以看烧写章节。

以上是关于基于iTOP-4412开发板(精英版)的linux 4.14.2内核移植的主要内容,如果未能解决你的问题,请参考以下文章

基于iTOP-4412开发板(精英版)的linux 4.14.2内核移植

基于iTOP-4412开发板(精英版)的linux 4.14.2内核移植

基于iTOP-4412开发板(精英版)的linux 4.14.2系统LED字符驱动程序设计

基于iTOP-4412开发板(精英版)的linux 4.14.2根文件系统移植

基于iTOP-4412开发板(精英版)的linux 4.14.2根文件系统移植

基于iTOP-4412开发板(精英版)的linux 4.14.2根文件系统移植