以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理

简介

MFGToolsfreescale官方推荐的一个使用OTG来升级镜像的软件。此软件功能很轻大,而且可塑性非常高:可以用来升级linux,升级android;单独刷写某一系统分区,如androidboot.img分区等;独立地刷写spi noremmc等等;而且作为一个可量产性的工具,MFGTools可以同时支持多通道的刷写。相对于市面上一些平板厂家的刷机软件,MFGTools的一大亮点就是其可拓展新跟可塑性。究竟这亮点是怎样体现的,下面详细介绍。主要分为四部分:

1、MFGTools的目录结构

2、MFGTools的烧录过程

3、MFGTools配置文件介绍

4、媒介镜像的制作

MFGTools的目录结构

以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理_第1张图片

如上图,MFGTools目录的主要关键点在几个地方

1、MfgTool2.exe为可执行程序,打开程序的画面如下

以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理_第2张图片

2、ucl2.xmlcfg.ini是配置文件,下面会详细介绍

profile里面存放着的是镜像文件,这里面镜像文件分为两种:第一种是作为媒介用途的镜像,在yocto下包括“uboot”,“dtb”跟“uImage”;第二种是真正烧录到emmc或者sdcard的镜像文件。之所以存着这两种镜像,是因为MFGTools的烧写原理是先烧录媒介镜像到ddr里面,然后启动,再通过这个启动了的媒介镜像,最后把目标镜像固化到emmc或者sdcard里面。这方面,下文内容还会补充到。

MFGTools的烧录过程


以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理_第3张图片

如上图显示,这里把烧录过程分为两部分:第一部分是烧录前的准备工作;第二部分是MFGTools开始烧录到结束烧录的过程。在这里,需要提示的是,第二阶段的烧录过程是严格根据ucl2.xml文件来进行的,下面来介绍MFGTools的配置文件。

MFGTools配置文件介绍

1、UICfg.ini

内容为:

[UICfg]

PortMgrDlg=1     //表示同时支持升级的最大设备数,按需求调整

 

2、cfg.ini

内容为:

[profiles]      

chip = Linux    //目标平台,对应 Profiles/Linux 目录 ,可根据自己需求定义profile

 

[platform]

board = SabreSD   //预留,暂时没什么实际作用

 

[LIST]

name = SDCard   // Profiles\Linux\OS Firmware\ucl2.xml  里面目标操作列表的名字,可按照自己的需求创建不同列表, <LISTname="SDCard" desc="Choose SD Card as media">    

 

[variable]   // Profiles\Linux\OS Firmware\ucl2.xmlname里面的list会引用到的环境变量

board = sabresd   //引用模式是  %board%。要跟平台的名字一样,不然会导致load dtb的时候出错。

mmc = 0         //引用模式是  %mmc%

 

3、ucl2.xml

升级时候的操作文件,MFGtools会根据文件里面 list的内容进行相应的升级。文件以

<CMD state="BootStrap"type="jump" > Jumping to OS image. </CMD>

为界限,可以分为上阶段跟下阶段,上阶段是把“媒介镜像”烧录到ddr里面并跑起来,下阶段是烧录“file”文件夹里面的文件到emmc里面。对于第二阶段,关注以下注释:

<!-- create partition -->

<!-- burn uboot -->

<!-- burn uImage -->

<!-- burn dtb -->

<!-- burn rootfs -->

注释下的内容严格规定了MFGTools的烧录过程,分区-->烧写uboot-->烧写uImage-->烧写dtb-->烧写rootfs

认真看就很容易看懂。

媒介镜像的制作

媒介镜像注意关注在uImage,因为“媒介uboot”在编译yocto的时候已经打包好了,具体是“build/tmp/deploy/images/$MACHINE/u-boot-$MACHINE.imx”文件,直接拿来使用就好。“dtb”文件也使用编译好的就可以了,没什么特殊要求。uImage有所要求,但freescale也帮我们铺好路了,看到“arch/arm/configs/imx_v7_mfg_defconfig”配置文件,使用此配置文件编译出来的uImage就是“媒介uImage”。然后把这些媒介的image放到MFGTools的目录下“Profiles\Linux\OSFirmware\firmware”里面即可,可能不同版本的MFGTools路径有所区别。

对比imx_v7_mfg_defconfig与其他config文件不一样的地方就是:CONFIG_FSL_UTP。对于的内核代码在“drivers/usb/gadget/f_mas_stotage.c”里面,具体的作用也就是接收并处理来自OTGimagescriptcommand


你可能感兴趣的:(以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理)