基于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根文件系统移植