Linux系统烧写初探

描述

系统烧写初探

嵌入式 Linux开发中通常是用网络来进行测试,但最终的产品中可能不会通过网络来运行。 因此需要将 uboot、linux kernel、. dtb(设备树) 和 rootfs这四个文件烧写到开发板的 EMMC、NAND或 QSPI Flash等存储设备上,这样不管有没有网络都可以正常运行。 本文将介绍 NXP官方提供的 I.MX系列 CPU烧写软件MfgTool及其工作原理

1. MfgTool工具介绍

MfgTool工具是 NXP提供的专门用于给 I.MX系列 CPU烧写系统的软件,可以在 NXP官网下载,该软件在 Windows下使用,本文中使用的是 L4.1.15_2.0.0-ga_mfg-tools.tar.gz,解压后的文件夹内容如下图:

烧写

选择 with-rootfs的压缩包继续解压,解压完后,进入 mfgtools文件夹,其内容如下图示:

烧写

其中:

  • Profiles文件夹:存放要烧写的文件
  • MfgTool2.exe:烧写软件

mfg_tools可以烧写I.MX6U、I.MX7、I.MX6Q等芯片,所以烧写前必须要进行配置,指定烧写芯片,烧写到哪里去。 mfgtools文件夹中有很多.vbs文件就是配置脚本,烧写时通过双击这些脚本文件来打开烧写工具

烧写

2. MfgTool原理介绍

下面以 I.MX6U-ALPHA EMMC开发板为平台,介绍 MfgTool的工作原理,了解其工作流程

2.1 烧写方式

连接 USB线:通过 USB OTG接口将系统烧写进 EMMC中

烧写

拨码开关拨到 USB下载模式:拨码到如下图所示模式,注意要弹出TF卡

烧写

2.2 系统烧写原理

开发板连接电脑以后双击mfgtool2-yocto-mx-evk-emmc.vbs,若出现“符合HID标准的供应商定义设备”就说明连接正常,可以进行烧写,若出现其他字符就需要检查连接是否正确。 点击“Start”按钮即可开始烧写

烧写

那么 uboot、Linux kernel、. dtb和 rootfs这四个文件应该放到哪个文件夹里,才可以被 MfgTool访问到呢。 进入如下目录中:

mfgtools/Profiles/Linux/OS 固件

烧写

OS Firmware文件夹就是存放系统固件的,重点关注 files和 firmware文件夹,以及 ucl2.xml文件。 MfgTool 工作过程主要分两个阶段:

  • 将firmware目录中的uboot、kernel和.dtb三个文件,通过USB OTG下载到开发板的DDR中,并在DDR中启动系统,为后面的烧写做准备
  • 系统启动后,完成对EMMC的格式化、分区等操作,分区建好后就可以从files中读取要烧写的uboot、kernel、. dtb和 rootfs这四个文件,并将其烧写到EMMC中

下面介绍 files文件夹、firmware文件夹、ucl2.xml文件

firmware文件夹:存放第一阶段需要的三个文件,注意烧写自已的系统时,需要将自己的文件名字改为和下表中一致,否则 ucl2.xml识别不出来

烧写

files文件夹:存放第二阶段需要的四个文件,将其烧写到 EMMC 中,烧写自已的系统时,需将自己的文件名字改为和下表中一致,否则 ucl2.xml 无法识别

烧写

ucl2.xml文件:用来选择烧写文件,以UCL开始,/UCL结束,整体框架如下

CFG和/CFG之间是配置相关内容,判断给 I.MX系列的哪个芯片烧写系统。 通过读取芯片的VID和PID即可判断出当前要烧写什么处理器的系统




    name="BootStrap" dev="MX6SL" vid="15A2" pid="0063"/>
    name="BootStrap" dev="MX6D" vid="15A2" pid="0061"/>
    name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
    name="BootStrap" dev="MX6SX" vid="15A2" pid="0071"/>
    name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
    name="BootStrap" dev="MX7D" vid="15A2" pid="0076"/>
    name="BootStrap" dev="MX6ULL" vid="15A2" pid="0080"/>
    name="Updater" dev="MSC" vid="066F" pid="37FF"/>
  class="hljs-name"CFG>
	
  name="SDCard" desc="Choose SD Card as media">
  
class="hljs-name"LIST>
	
  name="eMMC" desc="Choose eMMC as media">

class="hljs-name"LIST>

name="Nor Flash" desc="Choose Nor flash as media">

class="hljs-name"LIST>

name="Quad Nor Flash" desc="Choose Quad Nor flash as media">

class="hljs-name"LIST>

name="NAND Flash" desc="Choose NAND as media">

class="hljs-name"LIST>

name="SDCard-Android" desc="Choose SD Card as media">

class="hljs-name"LIST>

name="eMMC-Android" desc="Choose eMMC as media">

class="hljs-name"LIST>

确定了处理器后,就要确定向什么存储设备烧写系统,这时需要再次用到 mfgtool2-yocto-mx-evk-emmc.vbs文件,此文件内容如下:

Set wshShell = CreateObject("WScript.shell")
#调用了mfgtool2.exe这个软件,并给出了相应的参数
wshShell.run "mfgtool2.exe -c ""linux"" -l ""eMMC"" -s
""board=sabresd"" -s ""mmc=1"" -s ""6uluboot=14x14evk"" -s
""6uldtb=14x14-evk"""
Set wshShell = Nothing

确定是向 EMMC中烧写系统后,返回到 ucl2.xml中找到相应的烧写命令。 以 uboot 烧写为例,通过 USB OTG向 DDR下载 uboot的命令如下:

# mfgtools文件夹下找到cfg.ini文件,该文件里包含了开发板的一些信息
# 可知 “%lite%”和“%6uluboot%”分别表示取lite和6uluboot的值
# 而lite=l,6uluboot=14x14evk,因此代入以后就是:
# u-boot-imx6ull14x14evk _emmc.imx

按上面的方法将.dtb 和 zImage都下载到 DDR中以后就会跳转去运行OS,这时在MfgTool工具中会有“Jumping to OS image”提示语句,ucl2.xml中的跳转命令如下:

type="jump" > Jumping to OS image. class="hljs-name"CMD>

启动 Linux 系统以后就可以在 EMMC 上创建分区,然后烧写 uboot、 zImage、 .dtb(设备树) 和根文件系统

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分