【正点原子I.MX6U-MINI】系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs)

本文主要是介绍【正点原子I.MX6U-MINI】系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:任何一个linux开发板都需要将uboot、linux kernel、.dtb(设备树)和 rootfs 这四个文件烧写到板子上的 EMMC、NAND 或 QSPI Flash 等其他存储设备上。也就是系统烧写之后才能进行后学的编程操作。

注:其实完全可以不用编译uboot,直接烧录正点原子的uboot源码,这里编译了一下uboot学习,所以只是编译了uboot,其他的linux kernel、.dtb(设备树)和rootfs暂时就不编译了。

一、编译uboot

首先将uboot源码上传到ubuntu中进行编译。

1、上传源码到ubuntu

使用mobaterm的FTP登录ubuntu系统,将正点原子的uboot源码上传到ubuntu。

源码路径为:开发板光盘->1、程序源码->3、正点原子 Uboot 和 Linux 出厂源码->uboot-imx-2016.03-2.1.0-gee88051-v1.6.tar.bz2

将源码上传至ubuntu的/home/zhiguoxin/linux/IMX6ULL/uboot/目录下。/linux/IMX6ULL/uboot/是自己新建的文件夹。

使用如下命令对其进行解压缩:

tar -vxjf uboot-imx-2016.03-2.1.0-gee88051-v1.6.tar.bz2

解压完成以后文件夹内容如图 所示:

2、编译uboot

使用如下命令来编译对应的uboot:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

说明:

这三条命令中ARCH=arm设置目标为 arm 架构,CROSS_COMPILE指定所使用的交叉编译器。第一条命令相当于make distclean,目的是清除工程,一般在第一次编译的时候最好清理一下工程。第二条指令相当于make mx6ull_14x14_ddr512_emmc_defconfig,用于配置 uboot,配置文件为mx6ull_14x14_ddr512_emmc_defconfig。最后一条指令相当于make -j12也就是使用12核来编译 uboot。

当这三条命令执行完以后 uboot 也就编译成功了,会生成一个u-boot.imx的文件。

可以看出,编译完成以后uboot源码多了一些文件,其中u-boot.bin就是编译出来的uboot二进制文件。uboot是个裸机程序,因此需要在其前面加上头部(IVT、DCD等数据)才能在I.MX6U上执行,图中的u-boot.imx文件就是添加头部以后的u-boot.binu-boot.imx就是我们最终要烧写到开发板中的uboot 镜像文件

3、将源码下载到windows

我们在ubuntu中生成的u-boot.imx文件需要复制到windows中,使用OTG固化系统。首先打开Mobatrem软件,将u-boot.imx文件下载到windows桌面上。

4、使用mfgtool工具OTG方式固化系统

正点原子提供两种固化系统方式,

  • 第一种方式是使用正点原子修改过的 NXP 官方的上位机工具mfgtool。这种固化系统方式可以使用 PC机在线直接固化系统。

  • 第二种方法需要制作 TF 卡系统卡,插卡的方式固化系统。这两种方法都有各自的好处。我现在使用的是第一种方式使用正点原子修改过的 NXP 官方的上位机工具mfgtool

mfgtool\Profiles\Linux\OS Firmware\files\boot文件夹中的
u-boot-imx6ull-14x14-emmc.imx文件替换成我们刚刚生成下载到windows的u-boot.imx文件,但是文件名需要重命名一下,必须是u-boot-imx6ull-14x14-emmc否则软件识别的不了。

之后双击打开mfgtool文件夹下的Mfgtool2-eMMC-ddr512-eMMC.vbs文件(其他不需要的.vbs文件可以删除)。此时开发板必须接好电源线、USB-OTG线CH340串口线。并且要将拨码开关拨到USB位置。

这时mfgtool工具会出现符合HD标准的供应商定义设备这几个字,如果没有请检查接线是否正确以及拨码开关是否拨码至USB档位。同时打开一个串口调试终端软件,可以观察在烧写系过程中的打印信息。

点击“Start”按钮即可开始烧写,烧写什么东西呢?肯定是烧写 uboot、Linux kernel、.dtb 和 rootfs

二、MfgTool 烧写的原理

MfgTool 其实是先通过USB OTG先将uboot、kernel 和.dtb(设备树)这是三个文件下载到开发板的DDR中,注意不需要下载rootfs。就相当于直接在开发板的DDR上启动Linux 系统,等Linux 系统启动以后再向EMMC中烧写完整的系统,包括uboot、linuxkernel、.dtb(设备树)和 rootfs,因此MfgTool工作过程主要分两个阶段:

  • ①、将 firmware 目录中的uboot、linux kernel和.dtb(设备树),然后通过USB OTG将这个文件下载到开发板的DDR中,目的就是在DDR中启动Linux系统,为后面的烧写做准备。
  • ②、经过第①步的操作,此时Linux系统已经运行起来了,系统运行起来以后就可以很方便的完成对 EMMC的格式化、分区等操作。EMMC分区建立好以后就可以从files中读取要烧写的uboot、linux kernel、.dtb(设备树)和rootfs 这4个文件,然后将其烧写到EMMC中,这就是 MfgTool的大概工作流程。

1、开始烧写

这个时候可以在Mobaterm上看到具体的烧写过程:

等待烧写完成,因为正点原子的根文件系统比较大,因此烧写的时候耗时会久一点。烧写完成以后 MfgTool 软件如图所示:

烧写完成以后点击Stop按钮停止烧写,然后点击Exit键退出。拔出USB线,将开发板上的拨码开关拨到EMMC启动模式,然后重启开发板,此时就会从EMMC启动。只是启动以后的系统是正点院原子官方给I.MX6ULL ALPHA|MINI开发板制作的。(这个系统需要输入用户名,用户名为root,没有密码),如图所示:

2、设置网络

如上图所示新烧写的系统不支持网络,uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linuxkernel的时候需要使用到 uboot的网络功能做调试。这时候给uboot添加网络相关的环境变量。

setenv ipaddr 192.168.10.50 
setenv ethaddr 00:04:9f:04:d2:35 
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
setenv serverip 192.168.10.100 
saveenv

网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.10.0 这个网段内,所以设置开发板的 IP 地址为 192.168.10.50,我的 Ubuntu 主机的地址为 192.168.10.100,因此 serverip 就是192.168.10.100。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关的环境变量以后就可以使用网络相关命令了。

开发板的网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可以验证,直接ping服务器的 IP 地址即可,比如我的服务器 IP 地址为 192.168.10.100,命令如下:

ping 192.168.1.250

将环境变量 bootdelay 改为 5,就是在启动内核之前倒计时时间为5s,进入uboot。

setenv bootdelay 5
saveenv

3、设置静态 ip

由于LAN8720 PHY网络芯片没有MAC地址,系统启动时会生成随机MAC地址给网络使用。每次都生成一个MAC地址,导致每次开机网络获取的ip不是固定的。所以我们要设置给它一个静态的ip,不因MAC地址的改变而改变,设置固定ip方法调试。开发板启动时会自动获取ip,最简单的方法是直接设置一个ip 给它。这样我们就可以直接使用这个ip 了。

在出厂文件系统里/etc/rc.local 文件里如图位置添加以下文件。

vi /etc/rc.local

添加以下内容,请根据个人使用的路由器,设置相应网段的ip地址。下图为设置eth0的静态ip 地址。

PATH=/sbin:/bin:/usr/sbin:/usr/bin
ifconfig eth0 192.168.10.50 netmask 255.255.255.0
route add default gw 192.168.10.1
echo "nameserver 114.114.114.114" > /etc/resolv.conf

这篇关于【正点原子I.MX6U-MINI】系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/669035

相关文章

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-