目录

准备文件

重命名文件

替换firmware文件夹中的文件

替换files文件夹中的文件

修改cfg.ini配置文件

烧写系统

启动系统

设置网络相关环境变量

设置环境变量bootcmd 和 bootargs

配置网络参数

设置开机自动配置网络


上一节中已经用MfgTool工具成功的烧写了NXP官方的系统,下面就按照同样的方法将官方的系统替换为自己的系统。

如果要烧写我们的系统,就需要用我们编译出来的 zImage、u-boot.imx 和 imx6ull-alientek-emmc.dtb 这三个文件替换掉表中这三个文件。但是名字要和表中的一致。

下面就需要从自己的Ubuntu系统中去拷贝这几个文件。

准备文件

打开Ubuntu系统,打开FileZilla软件,连接到虚拟机上。同时在电脑上新建一个”烧写软件”的文件夹,用于存放需要用到的文件。

从虚拟机中 /home/hxydj/linux/IMX6ULL/uboot/my_uboot文件夹中 复制 u-boot.imx 文件到

Windows中烧写软件文件夹中。

从虚拟机中/home/hxydj/linux/IMX6ULL/linux/my_linux/arch/arm/boot文件夹中复制 zImage 文件

到Windows中烧写软件文件夹中。

从虚拟机/home/hxydj/linux/IMX6ULL/linux/my_linux/arch/arm/boot/dts文件夹中复制

imx6ull-mylinux-emmc.dtb文件到Windows中烧写软件文件夹中。

最后要使用的自己的根文件系统,将Ubuntu系统中/home/hxydj/linux/nfs/rootfs文件夹打包,

重点!重点!重点!

这里打包文件时,切记一定要在rootfs文件夹内打包。不能在文件夹外部打包,因为tar打包命令默认是不会打包隐藏文件的。直接在文件夹外面打包的根文件系统在后期烧写进单片机时会导致系统内核崩溃,不能正常进入。

系统内核奔溃错误如下图所示

首先进入到rootfs文件内部。

然后使用打包命令打包所有文件

cd rootfs

tar -vcjf rootfs.tar.bz2 *

打包完成后查看文件大小

打包完成后将压缩包移动到文件夹外面去

使用FileZilla软件将压缩包发送到烧写软件文件夹中

此时需要用到的4个文件就准备好了

重命名文件

接下里需要将自己的文件重命名为和系统默认名称一样,否则的话 ucl2.xml 是识别不出来。

将设备树文件重命名为zImage-imx6ull-14x14-evk-emmc.dtb

将uboot文件重命名为u-boot-imx6ull14x14evk_emmc.imx

系统镜像名字不用变。

将根文件系统重命名为rootfs_nogpu.tar.bz2

接下来开始替换NXP官方的文件。

替换firmware文件夹中的文件

将这zImage-imx6ull-14x14-evk-emmc.dtb、u-boot-imx6ull14x14evk_emmc.imx、zImage

这三个文件复制到mfgtools-wth-rootfs\mfgtools\Profiles\Linux\OS Firmware\firmware目录中

替换原来的文件。

替换files文件夹中的文件

接下来用重命名后的4个文件替换mfgtools-with-rootfs\mfgtools\Profiles\Linux\OS Firmware\files文件夹中的源文件。

替换完成后可以按照修改日期查看一下,就可以看到文件是否替换成功。

这时就可以开始烧写文件了,将拨码开关拨到USB模式。

修改cfg.ini配置文件

在烧写前需要修改一下cfg.ini 配置文件

ucl2.xml文件会调用因为配置文件中的变量,从而决定了烧写软件会加载哪个文件。

打开ucl2.xml文件可以看到 在142行和164行MX6ULL会调用file文件,而file文件路径是由变量决定的。

其中142行文件路径为:  file ="firmware/u-boot-imx6ul%lite%%6uluboot%_emmc.imx"

这里面有两个变量lite 和 6uluboot

默认配置文件中值为:

如果将默认配置文件中的值替换进去的话,那么这个uboot文件名就是

u-boot-imx6ull 14x14ddr3arm2 _emmc.imx

其中164行文件路径为:file="firmware/zImage-imx6ul%lite%-%6uldtb%-emmc.dtb"

将默认配置文件变量替换后,设备树文件名是

zImage-imx6ull- 14x14-ddr3-arm2 -emmc.dtb

在184、205、212行调用文件也使用到了变量lite 和 6uluboot

file="files/u-boot-imx6ul%lite%%6uluboot%_emmc.imx"

file="files/zImage-imx6ul%lite%-%6uldtb%-emmc.dtb"

$FILE /mnt/mmcblk%mmc%p1/imx6ul%lite%-%6uldtb%.dtb"

分别替换后为

u-boot-imx6ull 14x14ddr3arm2 _emmc.imx

zImage-imx6ull- 14x14-ddr3-arm2 -emmc.dtb

第三个路径为在EMMC中查找设备树,变量mmc用来确定EMMC的分区

EMMC 版本的核心板启动 linux 以后会存在/dev/mmcblk0、/dev/mmcblk1、/dev/mmcblk0p1、/dev/mmcblk0p2、/dev/mmcblk1p1 和/dev/mmcblk1p2 这样的文件,其中/dev/mmcblkx(x=0~n)表示 mmc 设备,而/dev/mmcblkxpy(x=0~n,y=1~n)表示 mmc 设备x 的分区 y。在 I.MX6U-ALPHA 开发板中/dev/mmcblk1 表示 EMMC,而/dev/mmcblk1p2 表示EMMC 的分区 2。

这里用到的是EMMC,所以mmc变量要设置为1。

可以看到根据默认配置文件解析出来的文件名和自己需要用到的文件名不一样。

需要用到的文件名为:

zImage-imx6ull-14x14-evk-emmc.dtb

u-boot-imx6ull14x14evk_emmc.imx

zImage

rootfs_nogpu.tar.bz2

在ucl2.xml文件中可以找到对这四个文件的依次调用

调用zImage文件,直接使用文件名没有用到变量。

调用rootfs_nogpu.tar.bz2文件也直接使用的是文件名,没有用到变量。

调用firmware文件夹中的设备树和uboot文件时使用了变量lite 和 6uluboot

调用files文件夹中的设备树和uboot文件时使用了变量lite 、6uluboot 和 mmc

所以就需要修改cfg.ini配置文件中的变量lite 、6uluboot 和 mmc

根据用到的这几个文件可以反推出来这几个变量的值为

mmc = 1    6uluboot=14x14evk       6uldtb=14x14-evk   lite=l

所以修改后的配置文件为:

其中lite值默认就是l,所以不用修改。其他三个变量值需要修改,修改完成后,保存配置文件。

那么如果要烧写不同的文件,每次都要修改配置文件名吗?这样岂不是很麻麻烦?有没有简单的方法?

当然是有方法的,配置文件中的变量值也可以通过*.vbs文件来修改。

不同的vbs文件中就对应了不同的变量值,用文本的形式打开vbs文件。

可以看到,在mfgtool2-yocto-mx-evk-emmc.vbs文件中重新设置了

"mmc=1"  "6uluboot=14x14evk"  "6uldtb=14x14-evk"

这样就不需要每次都修改配置文件了,只需要烧写脚本中重新设置这几个变量值就行了,这样的话,对于不同的文件,使用起来就更加方便了。

烧写系统

接下来就可以开始下载自己的系统了。

双击打开mfgtool2-yocto-mx-evk-emmc.vbs文件开始烧写。由于自己的文件系统比较小,所以这次烧写的就比较快,几分钟就烧写完成。

点击Stop按钮,在点击Exit按钮。

启动系统

将拨码开关重新拨回到EMMC模式,然后重启开发板,然后打开串口终端。

从系统打印的信息可以看出,系统的编译时间是刚才编译的。板子的名称也和设置的一样。说明系统下载成功了。但是有个提示是网络地址没有设置。这是因为重新烧写系统后,环境变量丢失了。

下面就重新设置网络,按下复位键重启开发板,然后在倒计时结束前按下键盘上的任意键。

这时候就可以看到系统提示没有设置网络地址。

设置网络相关环境变量

接下来设置网络相关的环境变量。

192.168.1.50是开发板的IP地址,192.168.1.66是Ubuntu的IP地址。

重启开发板

此时就不会报FEC1错误了。然后打印环境变量

可以看到IP地址也设置好了。

为了确认下烧写的文件是不是正确,可以查看下mmc中的内容。

使用 ls mmc 1:1 命令将mmc中的文件列表打印出来。

可以将这两个文件的大小和烧写文件的大小比较一样,看看是否一样。

可以看出mmc中的文件和烧写的文件大小一致,说明烧写是成功的。

设置环境变量bootcmd 和 bootargs

接下来还需要设置两个环境变量,bootcmd 和 bootargs。

可以看到bootcmd值恢复为默认值了,这里需要重新设置bootargs和bootcmd的值。需要从EMMC启动,使用命令将EMMC中的文件显示出来,一会设置的文件名要和EMMC中的文件名一致。

使用命令  ls mmc 1:1   打印EMMC中的文件列表。

接下来设置环境变量

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

setenv bootcmd 'mmc dev 1:fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 83000000 imx6ull-14x14-evk.dtb;bootz 80800000 - 83000000;'

saveenv

然后重启系统,在倒计时结束前 按下键盘上任意键。使用print命令打印环境变量。

可以看到bootcmd和bootargs这两个环境变量的值已经设置成功了。

接下来输入boot指令,启动系统。

可以看到系统开始加载内核了

系统启动成功后会提示按下键盘上的回车键。

使用ls命令打印文件列表,可以看到这个文件和Ubuntu系统下的一样。进入drivers目录下测试hello程序。

测试程序正常运行,可以使用ctrl+c 命令结束程序运行。

配置网络参数

接下来还需要设置一下系统的网络

由于默认情况下系统的网络是关闭的,可以输入ifconfig -a 命令查看当前网络。

使用命令打开网络

输入 ifconfig eth0 up

输入命令后等待网络设备的加载

加载完成后使用命令再次查看一下网络

开发板使用的是eth0口,现在需要设置一下这个网口的IP地址。

输入命令设置IP地址和子网掩码

ifconfig eth0 192.168.1.50 netmask 255.255.255.0

输入命令添加默认网关

route add default gw 192.168.1.1

使用ifconfig命令查看网络

使用ping命令测试开发板和电脑连接是否成功。

开发板和主机网络连接成功。

设置开机自动配置网络

但是这样设置的网络不会保存,重新开机后设置的网络就会丢失,需要重新设置一次。

为了方便操作,可以将网络设置的命令直接添加到系统中,每次开机后让系统自动配置网络。

只需要将设置命令添加到/etc/init.d/rcS 文件中就行了。

在串口终端中进入/etc/init.d文件夹

使用vi 命令打开 rcS文件

在文件中添加网络设置命令

Vi编辑器里面汉字显示不出来 那些小点就是汉字写的注释,这里看不到,不过没关系。不影响正常功能的使用。

打开eth0网卡

通过路由器自动获取IP地址

手动设置IP地址和子网掩码

手动添加网关

这里设置开发板的默认IP地址为192.168.1.50

设置完成后重启开发板

启动成功后输入ifconfig命令查看IP。

这时可以看到IP地址已经被系统自动设置好了。

到这里使用MfgTool工具烧写自己的系统就完成了。

Linux学习笔记---使用MfgTool工具烧写自己的系统(二)相关推荐

  1. Linux学习笔记---使用MfgTool工具烧写官方系统(一)

    目录 MfgTool工具简单介绍 软件烧写原理分析 1 .firmeare 文件夹 2 .files 文件夹 3 .ucl2.xml 文件 烧写步骤 1.连接USB线 2.开发板设置为USB模式 3. ...

  2. itop-4412学习笔记:TF卡烧写

    1. 制作可以烧写的TF卡(TF卡内存至少2G) 给TF卡分区.需要将TF卡先插入开发板,然后再启动开发板并进入Uboot模式,然后在超级终端中,依次输入下列烧写命令: fdisk -c 1 fatf ...

  3. Linux学习笔记---记一次rootfs根文件系统下载时掉进的大坑

    俗话说要想技术好,踩坑少不了.技术的好坏和踩坑的多少基本是成正比的.这次就大大的提升了一次技术(大大的踩了一次坑).废话少说,直奔主题. 最近入手了一块正点原子的IMX6ULL开发板,跟着视频教程和开 ...

  4. linux给数据库重命名,Linux学习笔记:mv移动或文件重命名

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 语法:mv 源文件 目标文件 视mv命令中 ...

  5. (零)我为什么要写Linux学习笔记?

    我对Linux有强烈的好奇心,兴趣:写学习笔记会让我有成就感:我记忆力实在不好.好吧,其实真正原因是:如果我能把自己学到的知识简明扼要的讲出来,写出来,那便证明我真的学懂了我想学的知识.没时间怎么办? ...

  6. 最热网友收藏:写得蛮好的linux学习笔记(2007年第10周)

    2007年第10周最热网友收藏 上班人员必读:"五险一金"详解!(130),共376人收藏,liukang520236首先收藏 写得蛮好的linux学习笔记-(96),共159人收 ...

  7. Linux学习笔记---移植官方uboot步骤(一)

    目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...

  8. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  9. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

最新文章

  1. Unity3D中暂停时的动画及粒子效果实现
  2. Intellij关闭自动更新
  3. layoutSubviews什么时候触发调用
  4. 【图像超分辨率】基于ResNet或GAN的遥感图像超分辨率论文
  5. System.Drawing.Common workaround in .NET6
  6. java反射技术_java反射技术,逆向开发必备技能
  7. 【完结】深度学习CV算法工程师从入门到初级面试有多远,大概是25篇文章的距离...
  8. 数据结构 实践项目——数据结构、算法、程序设计
  9. 不想用宝塔面板建站,如何手动搭建LAMP环境安装wordpress
  10. FPGA UART简单的串口接收模块
  11. 《修炼之道:.NET开发要点精讲》读书笔记(三)
  12. arcsinx用计算机怎么按,数学arcsinx和arccosx怎么用公 – 手机爱问
  13. jenkins集成自动化配置(二) 创建项目和项目配置
  14. MATLAB滑动T检验
  15. 操作系统实验 生产者/消费者模型
  16. 【vijos】1770 大内密探(树形dp+计数)
  17. NodeVue安装记录启动项目(2020)
  18. java会导致电脑黑屏吗,电脑开机黑屏只显示鼠标怎么办
  19. java数据类型最大值_Java 基本数据类型最大值极限和最小值极限
  20. 【uniapp】微信小程序国际化详细版

热门文章

  1. iPad Air PSD设计模板
  2. ffmpeg.c(ffmpeg.exe)调试笔记一
  3. Linux-dmidecode 下面查看主机BIOS信息命令
  4. 批量创建Linux用户账号
  5. Log4net之开始使用
  6. UNIX不带缓存的IO函数
  7. Elasticsearch aggregations API
  8. 【Hadoop】java.io.IOException: Failed on local exception: java.nio.channels.ClosedByInterruptException
  9. 从Postman到ApiPost——码农闰土
  10. 接口测试如何在post请求中传递文件