Manufacturing Tool V2 (MFGTool2) 手册系列

概述

本文档是飞凌 i.MX6 平台 Manufacturing Tool V2(MFGTool2)的完整手册合集,包含4个核心文档:Work Flow、UCL User Guide、Factory Operation Manual、Firmware Development Guide。

一、MFGTool2 工作流程

核心概念

MFGTool2 的基本功能是在特定目标板(board)上,将镜像烧写到特定的存储介质(storage)上,针对特定的 SoC。

工作流程

  1. 指定 SoC 类型

    • 不同 SoC 有不同的 PID/VID,MFGTool2 通过设备树找到正确的设备进行烧录
    • 通过 ucl2.xml 中的 <CFG> 标签定义 SoC 和 PID/VID
  2. 指定 ucl2.xml 位置

    • 通过 cfg.ini 配置:
      [profiles]
      chip = MX6Q Linux Update
    • MFGTool2 会在 Profiles\${chip}\OS Firmware\ucl2.xml 查找配置文件
  3. 配置并发设备数量

    • 通过 UICfg.ini 中的 PortMgrDlg 配置
    • 用于创建线程和 UI 资源
  4. 指定目标存储和板卡

    • 不同板卡有不同的 uboot.bin 和 kernel image
    • 通过 cfg.ini 的 [LIST] 指定:
      [LIST]
      name = Sabre-SD
  5. 准备二进制文件

    • ram kernel 和对应的 U-Boot(用于烧录阶段)
    • 正常运行的 kernel 和 U-Boot(用于最终用户)
    • 文件路径相对于 ucl2.xml

执行流程

  1. 解析操作列表获取所有需要执行的命令
  2. 监控设备树找到正确的设备(PID/VID)
  3. 根据阶段(state)获取对应命令
  4. 执行命令

二、UCL(Update Command List)用户指南

全局配置(Global Configuration)

<CFG>
  <STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
  <STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
  • BootStrap 阶段支持多实例(不同 SoC 同时烧录)
  • Updater 阶段 dev 固定为 “MSC”

命令类型

Host Specific Commands

命令类型Body参数说明
loadfileaddress, loadSection, setSection, HasFlashHeader下载镜像到 RAM
jump--跳转到 RAM 镜像运行
bootRecoveryfile, if下载镜像到 RAM

Firmware Specific Commands(push 类型)

命令参数说明
?None请求设备身份信息
!integer重启(3=重启,其他值=关机)
$string执行 shell 命令
flushNone等待数据传输完成
ffsNone分区 SD 卡并烧录启动镜像
mknoddevice_class, device_item, node_to_create, type创建设备节点
readstring读取文件发送到主机
sendNone从主机接收文件
savestring保存 send 收到的文件
pipestring + file执行 shell 命令并读写 stdio
wrffileubiformat NAND
wrspartition_num + file写入 rootfs 到 SD 卡
frfNone等同于 flush
frsNone等同于 flush

条件执行

使用 ifdev 参数:

<CMD state="BootStrap" type="load" file="firmware/uImage" address="0x12000000" 
     ifdev="MX6Q MX6D">Loading Kernel.</CMD>

变量使用

XML 格式:%name%

  • 在 cfg.ini 中定义:
    [variable]
    board = sabresd
    mmc = 0
  • 命令行覆盖:
    mfgtool2.exe -s "board=sabresd" -s "mmc=0"

注意:所有声明的文件必须存在,即使被 ifdev 跳过。

三、工厂操作手册

PC 要求

  • CPU: Intel E3400 或更高,2GHz+
  • 内存: 4GB+
  • OS: Windows XP/Windows 7
  • USB2.0 root hub(必需),禁止 USB 1.1
  • 外部 USB hub 需独立供电,Belkin 推荐,最多连接 4 个设备

操作注意事项

  • mksdcard.sh:Linux 分区脚本,分区大小由 BOOT_ROM_SIZE 定义
  • mksdcard-android.sh:Android 分区脚本,创建8个分区
  • Android 镜像需放在 profiles/CHIP_PROFILE/OS Firmware/files/android

四、固件开发指南

U-Boot 配置

  1. 添加 MFG 配置文件:${u_boot_root}\include\configs\mx6q_sabresd_mfg.h
  2. 必须定义的宏:
    #define CONFIG_MFG
    #define CONFIG_CMDLINE_TAG
    #define CONFIG_REVISION_TAG
    #define CONFIG_SETUP_MEMORY_TAGS
    #define CONFIG_INITRD_TAG
    #define CONFIG_BOOTDELAY 0
    #define CONFIG_BOOTARGS "console=ttymxc0,115200 rdinit=/linuxrc"
    #define CONFIG_BOOTCOMMAND "bootm 0x10800000 0x10c00000"
    #define CONFIG_ENV_IS_NOWHERE 1
  3. 将 uboot bin 放到 Profiles\${TARGET_PROFILE_NAME}\OS Firmware

Kernel 配置

  1. 添加 imx6_updater_defconfig,必须:
    • 编译 USB 和存储相关驱动(SD Card)
    • 编译 mass storage gadget class driver
    • 定义 CONFIG_FSL_UTP=y
    • 启用 initramfs 支持
    • 启用 watchdog:CONFIG_WATCHDOG=y, CONFIG_SOFT_WATCHDOG=y

UUC(Updater Utility Client)

  • 位于 uuc-xxx-version/uu.c
  • 解码 UTP 消息并执行命令
  • 内核驱动:drivers/usb/gadget/fsl_updater.c
  • 与 file_storage.c 结合工作

配置文件路径

  • config/platform/imx/mx6q_arm2_mfg_config
  • config/platform/imx/imxXX_updater.cf
  • config/platform/imx/main.lkc

参考文件

  • Manufacturing Tool V2 Work Flow.docx
  • Manufacturing Tool V2 UCL User Guide.docx
  • Manufacturing Tool V2 Factory Operation manual.docx
  • Manufacturing Tool V2 Linux or Android Firmware Development Guide V2.docx