查看: 1122|回复: 0

MYS-6ULX-IOT 开发板测评——使用MfgTool更新系统

[复制链接]

该用户从未签到

发表于 2018-5-11 08:46:05 | 显示全部楼层 |阅读模式
分享到:
* > _ < *MYS-6ULX 系列板卡提供两种系统更新的方法:

  • MfgTool 更新
  • SD 卡更新
  本文主要介绍使用 MfgTool 工具更新 MYS-6ULX-IOT 的方法。MfgTool 是 Freescale 官方推荐的一个使用 OTG 来烧录、升级系统镜像的软件工具。MfgTool 工具功能强大、可塑性高,简单来说,有如下特点:

  • 可以用来升级 Linux,也可以升级 Android;
  • 允许单独刷写某一系统分区,如 Android 的 boot.img;
  • 支持独立刷写 SPI NOR、Nand、eMMC 等;
  • 支持多通道刷写,可作为量产工具;
  MfgTool 工具的亮点是它的可拓展性和可塑性,下面我们来看一下这些特性是怎么体现的,以及该如何使用 MfgTools。
  先来看看 MfgTool 的目录结构,下载并解压 03-Tools/ManufactoryTool/MYS-6ULX-mfgtools-20170919.zip,进入 MfgTool 主目录,我们会看到很多文件和子目录,其中较为重要的一些文件结构如下图所示。


  其中,MfgTool2.exe 是可执行文件,双击它即可打开烧写工具,但我们这里并不直接运行它,而是通过运行 vbs 脚本文件来启动;cfg.ini、UICfg.ini、ucl2.xml 都是配置文件,后面会详细介绍;Profile里面定义了几层目录,分别存放镜像文件及配置文件。
  需要注意的是,Profile 里面的镜像文件分为两种:第一种是作为媒介用途的镜像,在 Yocto 下包括 “uboot”、“dtb”、“zImage”;第二种是真正烧录到 eMMC、Nand Flash 或者 sdCard 的镜像文件。对于我们这个项目,媒介镜像存放于 firmware 目录,实际烧写的镜像存放于 files 目录。之所以需要两种镜像,是因为 MfgTool 的烧写原理是先烧录媒介镜像到 DDR,然后启动该媒介系统,接着通过该系统把目标镜像固化到 eMMC、Nand Flash 或者 sdCard 里面。
  可以把烧录过程分为两部分:第一部分是烧录前的准备工作;第二部分是 MfgTool 开始烧录到结束烧录的过程。整个烧录过程如下图所示。值得一提的是,第二部分的烧录过程是严格根据 ucl2.xml 文件来进行的。

  接下来我们分析一下 MfgTool 的配置文件:
(1)UICfg.ini文件
[UICfg]PortMgrDlg=1                 // 表示同时支持升级的最大设备数,可按需调整
(2)cfg.ini文件
[profiles]chip = Linux                 // 目标平台,对应 Profile/Linux 目录,可根据自己的需求定义 profile[platform]board = SabreSD         // 预留,暂时没什么实际的作用[LIST]name = SDCard         // Profiles/Linux/OS Firmware/ucl2.xml 里面目标操作列表的名字[variable]                 // ucl2.xml 中对应 name 的 list 会引用到的环境变量board = sabresd         // 引用模式是 %board%,要和平台的名字一样,否则可能会出错mmc = 0                 // 引用模式是 %mmc%sxuboot=sabresdsxdtb=sdb7duboot=sabresd7ddtb=sdb6uluboot=14x14ddr3arm26uldtb=14x14-ddr3-arm26ulldtb=14x14-ddr3-arm2ldo=plus=lite=linitramfs=fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-bootseek = 1sxnor=qspi27dnor=qspi16ulnor=qspi1nor_part=0
(3)ucl2.xml文件
  ucl2.xml 是系统升级时的操作文件,MfgTool 会根据文件里面 list 的内容进行相应的升级。文件以如下一行为界线,可以分为上阶段和下阶段。
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>  上阶段是把“媒介镜像”烧录到DDR里面并启动,下阶段是烧录“file”目录里面的文件到emmc上。我们以 Nand Flash 为例,抽取以下第二阶段内容,需要注意其中的注释:
<!--burn the uboot to NAND: --><CMD state="Updater" type="push" body="send" file="files/u-boot-imx6ul%lite%%6uluboot%_%nand%.imx" ifdev="MX6ULL">Sending u-boot.bin</CMD><!--burn the kernel to NAND: --><CMD state="Updater" type="push" body="send" file="files/zImage-imx6ul%lite%" ifdev="MX6ULL">Sending kernel zImage</CMD><CMD state="Updater" type="push" body="send" file="files/zImage-imx6ul%lite%-%6uldtb%-%nanddtb%.dtb" ifdev="MX6ULL">Sending Device Tree file</CMD><!--burn the rootfs to NAND: --><CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mtd%part_rootfs%" file="files/core-image-base-mys6ull14x14.rootfs.tar.bz2" ifdev="MX6ULL">Sending and writting rootfs</CMD>  注释下的内容严格规定了MFG Tools的烧录过程,即:“分区 --> 烧写uboot --> 烧写zImage --> 烧写dtb --> 烧写rootfs”。
  顺便分析下 VB Script 脚本的内容吧,对应 Nand Flash 的是 mfgtool2-yocto-mx-evk-nand.vbs,内容如下:
Set wshShell = CreateObject("WScript.shell")wshShell.run "mfgtool2.exe -c ""linux"" -l ""NAND Flash""  -s ""board=sabreauto"" -s ""lite=l"" -s ""6uluboot=14x14evk"" -s ""nand=nand"" -s ""6uldtb=14x14-evk"" -s ""nanddtb=gpmi-weim"" -s ""part_uboot=0"" -s ""part_kernel=1"" -s ""part_dtb=2"" -s ""part_rootfs=3""   "Set wshShell = Nothing  显然,该脚本的作用就是启动 mfgtool2.exe,并且传入一些变量,这些变量会覆盖 cfg.ini 文件中的变量,从而达到执行不同脚本更新不同板卡的目的。  好啦,赶紧在 MYS-6ULX-IOT 上实际操作下吧~
  事先提醒一下:请勿将 DV 5V 电源适配器和 Micro USB 接口同时供电!
  使用 MfgTool 更新系统的流程如下:
  (1)设置拨码开关(SW1)的第3位为 ON,第4位为 OFF;
  (2)使用 USB 转接线(Type-A 转 Micro-B)连接 PC 机 USB 端口与开发板(J7);
  (3)进入 MfgTool 目录,双击执行 mfgtool2-yocto-mx-evk-nand.vbs 脚本(因为 MYS-6ULX-IOT 默认焊接的是 Nand Flash);
  (4)一切正常的话,在设备管理器或 MfgTool 界面可以看到已识别开发板;

  (5)点击 MfgTool 界面上的 Start 按钮,MfgTool 就开始自动更新系统至板载存储设备;


  (6)更新成功后底部的总进度条显示为绿色,若失败则为红色,MfgTool.log 文件会记录错误提示信息。

  更新完毕,断开 USB 电源,将拨码开关(SW1)的第3位拨回 OFF,第4位拨回 ON,重新上电即可进入新系统。
  再啰嗦几句~
  媒介镜像主要关注的是 zImage,因为“媒介uboot”在编译 yocto 的时候已经打包好了,具体是“build/tmp/deploy/images/$MACHINE/u-boot-$MACHINE.imx”文件,直接拿来使用就好。dtb 文件也使用编译好的就可以了,没什么特殊要求。zImage 有所要求,但 Freescale 也帮我们铺好路了。看到“arch/arm/configs/ imx_v7_mfg_defconfig”配置文件,使用此配置文件编译出来的 zImage 就是“媒介zImage”。然后把这些媒介的 image 放到 MfgTool 的目录下 Profiles/Linux/OS Firmware/firmware 目录里面即可,不同版本的 MfgTool 路径可能有区别。
  对于 imx_v7_mfg_defconfig 与其他 config 文件不一样的地方就是 CONFIG_FSL_UTP。对应的内核源码在“drivers/usb/gadget/f_mas_stotage.c”里面,具体的作用也就是接收并处理来自 OTG 的 image、script 和command。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

手机版|小黑屋|与非网

GMT+8, 2024-4-24 02:17 , Processed in 0.118482 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.