系统烧写初探
嵌入式 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文件夹,其内容如下图示:
其中:
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 工作过程主要分两个阶段:
下面介绍 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(设备树) 和根文件系统
全部0条评论
快来发表一下你的评论吧 !