4412上移植最新5.4内核的流程非常的简单,因为4412被Linux官方支持,那么我们来看一下怎么把官方5.4内核移植到我们的I.MX6ULL终结者开发板上。

平台:i.MX6ULL开发板

前言

本篇推文会加到后续的文档里面,另外等QT视频录制完成以后,就开始更新终结者驱动和系统移植的视频,后续的驱动移植教程和视频也全部会在本次移植的5.4内核上进行讲解和录制。大家也可以趁着端午节亲手移植感受下。

获取Linux内核源码

NXP官方提供了I.MX6ULL的Linux内核源码,我们可以使用git来获取Linux 5.4.3的内核源码(为了大家学习方便我们给大家提供了下载好的内核源码,后续会保存在光盘资料的“i.MX6UL终结者光盘资料\05_uboot linux源码”目录下“i.MX6ULL_Kernel_5.4.3.tar.bz2”)。

下面我们通过git下载5.4.3内核源码。输入以下命令获取源码:

下载完成会在当前目录下生成“linux-imx”文件,如下图所示:

然后我们使用“cd linux-imx”命令进入到下载的内核目录下,我们可以打开当前目录下的“Makefile“文件,查看下现在的内核版本,运行结果如下图所示:

从上图我们可以看到下载的内核版本并不是5.4.3,那么我们是不是下载错了呢?答案是:我们没有下载错的。因为我们下载的NXP提供的这套Linux源码,里面包含了所有版本的分支,我们需要使用命令检索出对应的版本。下面我们开始讲解如何检索出我们想要的版本。首先我们可以使用git命令查看都有哪些分支,我们可以输入“git branch -a”查看所有的分支。

我们需要检索出“5.4.3”版本的内核源码,我们可以输入命令“git checkout origin/imx_5.4.3_2.0.0”(其中的origin/imx_5.4.3_2.0.0是我们要检索出的分支,大家如果想要检索出其它分支,只需要把这个名字改成对应的分支名字就可以),运行结果如下图所示:

从上图我们可以看到已经检索出了“5.4.3”的分支,我们再次打开内核源码目录下的“Makefile”文件,如下图所示:

从上图我们可以看到当前的内核版本是“5.4.3”了。

搭建编译环境

Linux 5.4.3的编译环境和默认4.1.15用的交叉编译器一样,也是“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz”,关于交叉编译器的搭建,可以参考“i.mx6ull终结者开发板使用手册”的4.3章节“搭建交叉编译环境”和29.1章节 安装第三方库。

编译内核

为了编译方便,我们可以创建一个脚本,我们在命令行输入“vi create.sh”,并输入以下内容:

给脚本一个执行权限,然后我们运行“./create.sh”脚本,开始编译Linux内核,如下图所示:

编译完成,会在“arch/arm/boot”目录下生成“zImage”镜像文件,如下图所示:

编译生成了镜像文件以后,接下来我们需要编译设备树文件。首先我们进到“arch/arm/boot/dts”目录,这里面保存着imx6ull的默认设备树配置文件。然后我们输入“ls imx6ull*”命令,查看与i.MX6ULL处理器相关的设备树文件,运行结果如下图所示

在上图中列出的所有与i.MX6ULL处理器相关的设备树文件,我们只需要关注其中的四个,分别是:

“imx6ull.dtsi”,

“imx6ul-14x14-evk.dtsi”,

“imx6ull-14x14-evk.dts”,

“imx6ull-14x14-evk-emmc.dts”

“imx6ull-14x14-evk-gpmi-weim.dts”。

其中的“imx6ull.dtsi”文件是i.MX6ULL处理器的核心配置文件,里面定义了i.MX6ULL处理器所有的内部资源。

文件“imx6ul-14x14-evk.dtsi”里面定义了一些与外设相关的驱动。

文件“imx6ull-14x14-evk.dts”会包含“imx6ull.dtsi”和“imx6ul-14x14-evk.dtsi”这两个文件。

文件“imx6ull-14x14-evk-emmc.dts”会包含“imx6ull-14x14-evk.dts”,该文件是针对EMMC存储的。

文件“imx6ull-14x14-evk-gpmi-weim.dts”会包含“imx6ull-14x14-evk.dts”,该文件是针对NAND FLASH存储的。

通过上面的分析,实际我们最终需要编译的就两个文件“imx6ull-14x14-evk-emmc.dts”(EMMC存储)和“imx6ull-14x14-evk-gpmi-weim.dts”(NAND FLASH存储)。

使用过迅为电子提供的4.1.15内核的朋友可能会注意到我们的烧写工具在烧写镜象的时候设备树文件会有好几个(针对不同屏幕的)。如果这些文件缺少任意一个,烧写工具打开就会失败。同时这几个文件的名字在uboot里面也会用到(uboot里面这几个文件的名字也是固定的),所以为了能够继续使用4.1.15的烧写工具,我们需要在5.4.3内核里面创建对应的这几个设备树名字:

在上面的这些设备树文件中,以“topeet_emmc”开头的是支持商业级核心板 (EMMC存储)的,以“topeet_nand”开头的是支持工业级核心板(NAND FLASH存储)的。

我先们创建商业级核心板(EMMC存储)的这几个设备述文件,上面我们讲到了默认设备树文件里面的“imx6ull-14x14-evk-emmc.dts”是针对EMMC存储的配置文件,我们以该文件为模板,创建商业级核心板(EMMC存储)对应的几个设备树文件,使用下面的命令:

然后我们继续创建工业级核心板(NAND FLASH存储)相关的几个设备树文件,上面我们讲到了默认设备树文件里面的“imx6ull-14x14-evk-gpmi-weim.dts”是针对NAND FLASH存储的配置文件,我们以该文件为模板,创建工业级核心板(NAND FLASH存储)对应的几个设备树文件,使用下面的命令:

至此,关于设备树的文件我们都创建完成了,由于NAND FLASH和EMMC的 核心板,Uboot在获取设备数文件的时候不一样(EMMC是按照分区的方式访问,NAND FLASH是按照偏移地址读取数据),所以在NAND FLASH的核心板,我们需要把对应的几个设备树文件拼接成一个文件(按照固定的偏移大小拼接),我们在4.1.15的内核里面提供了这个拼接程序,卫浴内核源码的“arch/arm/boot/dts”目录下,文件名字是“create_dtb”,如下图所示:

我们拷贝该文件到5.4.3内核的“arch/arm/boot/dts”目录下面,如下图所示:

然后我们使用“chmod 777 create_dtb”命令,给文件“create_dtb”可执行权限,运行结果如下图所示:

然后我们回到5.4.3内核源码的根目录下,如下图所示:

然后我们修改内核编译脚本(在里面添加设备树文件的编译),我们添加下面的脚本到“create.sh”脚本里面:

上面的脚本主要是使用make命令编译出对应的设备树文件(比如我们要编译“topeet_emmc_4_3.dts”这个设备树文件,那我们直接输入“make topeet_emmc_4_3.dtb”命令即可,其它设备树文件的编译与此类似,这里不再一一描述)。编译出所有的设备树文件(EMMC存储和NAND FLASH存储)以后,我们使用“./create_dtb imx6ul_topeet_nand.dtb topeet_nand_4_3.dtb topeet_nand_7_0.dtb topeet_nand_10_1.dtb topeet_nand_1024x600.dtb topeet_nand_5_0.dtb topeet_nand_9_7.dtb topeet_nand_hdmi.dtb”命令把NAND FLASH的设备树文件拼接成一个文件,即“topeet_nand_hdmi.dtb”文件(也就是上面添加的脚本的最后一条)。添加完以后的脚本如下图所示:

添加完成设备树的编译脚本以后,我们直接运行内核编译脚本“./create.sh”开始编译内核和设备树,如下图所示:

编译过程如下图所示:

我们可以看到在“arch/arm/boot”目录下生成了“zImage”内核镜像,在“arch/arm/boot/dts”目录下生成了设备树文件:如下图所示:

接下来我们开始烧写编译生成的镜像到i.MX6ULL终结者开发板。Uboot我们依然使用开发板光盘资料里面的“i.MX6UL终结者光盘资料\08_开发板系统镜像\01_Uboot”目录下的对应镜像,文件系统我们使用“i.MX6UL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto文件系统”目录下的对应文件系统镜像。内核和设备树我们根据自己使用的核心板类型(工业级或商业级),选择5.4.3内核编译生成的对应镜像和设备树文件(关于i.MX6ULL终结者开发板镜像的烧写,大家可以参考开发板使用手册的:第六章 I.MX6ULL镜像烧写)。这里我们不在详细介绍。

使用MFG烧写完成以后,如果我们有4.3寸屏,可以连接好4.3寸屏幕(内核默认的设备树配置支持4.3寸屏显示),然后开发板正常启动,我们可以看到串口的打印的内核启动信息,如下图所示:

从上图我们可以看到内核的版本是5.4.3。文件系统起来以后,我们也可以在调试串口输入“uname -a”命令,查看系统版本的信息,运行结果如下图所示:

从上图我们同样也可以看到内核的版本是5.4.3。同时我们可以看到4.3寸屏幕也会有QT综合例程在运行,由于默认的内核没有配置触摸驱动,我们可以使用鼠标来操作。在后续的章节我们将会逐步完善开发板上的外设驱动。

至此基于官方5.4.3的内核经过我们的修改,编译,已经可以在迅为电子的iMX6ULL终结者开发板上运行起来了。

i.MX6ULL终结者开发板视频在线观看链接:

https://www.bilibili.com/video/BV1M7411m7wT

IMX6ULL开发板:

http://topeetboard.com/Product/iMX6ULL.html

原文:https://www.cnblogs.com/topeet/p/13201977.html

讯为开发板移植linux,迅为I.MX6ULL开发板移植Linux5.4内核教程相关推荐

  1. 迅为iTOP-i.MX6ULL 开发板-Mqtt 移植教程

    本文转自迅为IMX6ULL开发板教程第第八十八章,关注公众号:迅为电子,回复 :终结者,免费获取产品资料   移植环境 Ubuntu:迅为提供的 ubuntu16.04 编译器:gcc-linaro- ...

  2. 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)

    迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49    发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...

  3. 迅为i.MX6ULL 开发板开机进度条修改文档

    转自:迅为IMX6ULL开发板使用手册第七十一章 硬件平台:迅为i.MX6ULL 开发板 本章节介绍的是iTOP-iMX6ULL-修改开机进度条的显示和修改步骤,使用的资料已经放到了开发板网盘资料中路 ...

  4. 迅为i.MX6ULL开发板资料下载,让Linux学习更轻松

    迅为电子的 i.MX6ULL 核心板分为工业级和商业级两种.提供的接口是邮票孔方式. 开发板资料下载链接: 链接:https://pan.baidu.com/s/174ob7bzIaf_ls8_O4Q ...

  5. 迅为I.MX6ULL开发板镜像烧写

    .1 l mfgtool 烧写镜像 烧写镜像 开发板出厂前默认已经烧写了镜像,如果用户需要重新烧写镜像,可以参考本章. NXP 官方提供了 Windows 的上位机烧写工具 mfgtool,迅为电子在 ...

  6. wince开发板装linux,米尔i.MX28开发板上市 携Linux和WinCE系统

    近日,ARM工业控制企业米尔科技推出基于飞思卡尔芯片开发板:MYD-IMX28X开发板.该款开发板含MYD-IMX283和MYD-IMX287两个型号,分别基于飞思卡尔i.MX283和i.MX287芯 ...

  7. linux开发 stc_在Linux上快速搭建8051开发环境

    在Linux上快速搭建8051开发环境(2018-7-2) 0. 写在开始之前 实验操作系统环境: Ubuntu 16.04 编译器: sdcc SDCC - Small Device C Compi ...

  8. 迅为i.MX6ULL开发板-Qt5.7Mplayer 移植文档

    硬件平台:迅为iMX6ULL开发板 84.1 交叉编译 Libmad-0.15.1b 本章节使用的资料已经放到了开发板网盘资料中,路径为:"11_Linux 系统开发进阶\84_章节使用资 ...

  9. 【技术分享】迅为i.MX6ULL开发板-Uboot-Logo修改方法

    硬件平台:iMX6ULL开发板 本文介绍的在 uboot 下 logo 显示和修改步骤. 使用的资料已经放到了开发板网盘资料中,路径为"11_Linux 系统开发进阶\72_章节使用资料&q ...

最新文章

  1. 强化学习到底是什么,它如何运作?
  2. 内核数据结构之红黑树
  3. hdu4740 不错的简单搜索
  4. “放到桌面”的Servlet实现
  5. DevOps团队结构类型汇总:总有一款适合你
  6. Delphi的单元文件详解
  7. 软考系统架构师笔记-最后知识点总结(一)
  8. Tomcat 8.5 配置 SSL 证书
  9. java 展现层框架_spring快速入门例子教程:06展现层
  10. SQL Server警报解决性能问题:如何创建和使用SQL Server警报
  11. 论坛头条内容链接地址有误
  12. 简述什么是 Cloud Native
  13. python工资一般多少西安-西安Python和人工智能的薪资前景到底怎么样?
  14. POJ1088(记忆搜索加dp)
  15. 统计学系方法4.1补充理解
  16. jumserver 官方文档和
  17. 【转】C语言编程中static变量详解
  18. 深大uooc大学生心理健康章节答案第二章
  19. 两大主流存储架构介绍:软件定义存储与超融合
  20. 通过计算机组成原理你能得到什么?

热门文章

  1. Linux中的虚拟设备/dev/null、/dev/zero、/dev/random和/dev/urandom
  2. 新冠感染后,我的痊愈过程
  3. 执行powershell脚本出错:未对文件进行数字签名
  4. 飞行模式下面,如何隐藏IDLE界面状态栏上面未读邮件图标
  5. Makefile之patsubst
  6. 【Node.js】中req.params,req.query,req.body
  7. 一些非常好看的背景颜色渐变
  8. 百度搜索上线【问题疫苗查询工具】
  9. php 输出内容到表格,phpexcel 输出表格到页面(在线预览表格),导出excel
  10. Jmeter监控服务器CPU、内存使用情况