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。
工作流程
-
指定 SoC 类型
- 不同 SoC 有不同的 PID/VID,MFGTool2 通过设备树找到正确的设备进行烧录
- 通过
ucl2.xml中的<CFG>标签定义 SoC 和 PID/VID
-
指定 ucl2.xml 位置
- 通过
cfg.ini配置:[profiles] chip = MX6Q Linux Update - MFGTool2 会在
Profiles\${chip}\OS Firmware\ucl2.xml查找配置文件
- 通过
-
配置并发设备数量
- 通过
UICfg.ini中的PortMgrDlg配置 - 用于创建线程和 UI 资源
- 通过
-
指定目标存储和板卡
- 不同板卡有不同的 uboot.bin 和 kernel image
- 通过
cfg.ini的[LIST]指定:[LIST] name = Sabre-SD
-
准备二进制文件
- ram kernel 和对应的 U-Boot(用于烧录阶段)
- 正常运行的 kernel 和 U-Boot(用于最终用户)
- 文件路径相对于 ucl2.xml
执行流程
- 解析操作列表获取所有需要执行的命令
- 监控设备树找到正确的设备(PID/VID)
- 根据阶段(state)获取对应命令
- 执行命令
二、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 | 参数 | 说明 |
|---|---|---|---|
| load | file | address, loadSection, setSection, HasFlashHeader | 下载镜像到 RAM |
| jump | - | - | 跳转到 RAM 镜像运行 |
| boot | Recovery | file, if | 下载镜像到 RAM |
Firmware Specific Commands(push 类型)
| 命令 | 参数 | 说明 |
|---|---|---|
| ? | None | 请求设备身份信息 |
| ! | integer | 重启(3=重启,其他值=关机) |
| $ | string | 执行 shell 命令 |
| flush | None | 等待数据传输完成 |
| ffs | None | 分区 SD 卡并烧录启动镜像 |
| mknod | device_class, device_item, node_to_create, type | 创建设备节点 |
| read | string | 读取文件发送到主机 |
| send | None | 从主机接收文件 |
| save | string | 保存 send 收到的文件 |
| pipe | string + file | 执行 shell 命令并读写 stdio |
| wrf | file | ubiformat NAND |
| wrs | partition_num + file | 写入 rootfs 到 SD 卡 |
| frf | None | 等同于 flush |
| frs | None | 等同于 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 配置
- 添加 MFG 配置文件:
${u_boot_root}\include\configs\mx6q_sabresd_mfg.h - 必须定义的宏:
#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 - 将 uboot bin 放到
Profiles\${TARGET_PROFILE_NAME}\OS Firmware
Kernel 配置
- 添加
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_configconfig/platform/imx/imxXX_updater.cfconfig/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