title: “MFGTool V2 UTP协议介绍” original_path: “/工作相关/飞凌嵌入式imx6全部资料/原始下载资料/OKMX6Q-C、OKMX6DL-C(Android)用户资料-2019.12.30/Android/工具/USB烧写工具/mfgtools/Document/V2/Manufacturing Tool V2 UTP Introduction.docx” size: “278 KB” processed_date: “2026-09-20” method: “DOCX XML提取” status: “done”

MFGTool V2 UTP协议介绍

概述

本文档介绍了Manufacturing Tool V2 (MFGTool2)的Update Transport Protocol (UTP)设计。

UTP协议目标

  1. 解耦主机软件与设备细节

    • 主机软件不需要了解设备的存储介质布局和设备命令细节
    • 设备命令对主机保持透明
  2. 避免硬编码安装逻辑

    • 固件编写者可以控制安装序列和安装命令设计
    • 系统提供商可以指定和控制安装,无需修改主机工具
  3. 可移植性

    • 新协议不仅限于USB传输

UTP架构

核心组件

  1. 设备命令引擎(DCE)固件(黄色)

    • 定义和解释设备命令
    • 系统特定实现,各系统可自由指定支持的命令格式
  2. 主机命令引擎(HCE)(蓝色)

    • 定义主机命令
    • 执行控制功能(如连接目标设备)和UI功能(如请求操作员输入)
  3. 更新命令列表(UCL)(灰色)

    • 由系统开发者提供的设备命令和主机命令列表
    • 可通过XML文档、分隔ASCII文件或脚本形式实现
  4. 包容器(虚线)

    • 可选,用于捆绑UCL和相关对象(固件镜像、文件系统镜像等)
  5. 传输协议(UTP)(绿色)

    • 基于Mass Storage Class - Bulk Only Transport (MSC-BOT)
    • 利用BOT带宽优势,无需自定义Windows驱动

UTP协议消息

消息类型

类型操作码描述
Poll0轮询异步命令完成状态,或查询UTP版本
Exec1发送设备命令和参数
Get2从设备读取payload数据
Put3向设备写入payload数据

响应代码

响应码说明
PASS消息成功完成
EXIT命令提前终止,返回结果
BUSY设备忙处理命令,主机应轮询
SIZE提供payload大小(Device Read命令后)

UTP与SCSI映射

CDB结构(16字节)

字节0: 操作码 = 0xF0
字节1: UTP消息类型 (0=Poll, 1=Exec, 2=Get, 3=Put)
字节2-5: UTP消息Tag (32位,用于分组事务)
字节6-13: UTP消息参数 (64位)
字节14-15: 保留

Sense Data结构

字节0: Response Code = 0x70
字节1: Per Spec
字节2: Sense Key = 0x9
字节3-6: UTP Reply Info [lower 32-bits]
字节7: Additional Sense Length
字节8-11: UTP Reply Info [upper 32-bits]
字节12: Additional Sense Code = 0x80
字节13: Additional Sense Code Qualifier = UTP Reply Code

典型事务流程

同步命令(无payload)

Exec() → cmd body → PASS 或 EXIT

异步命令(无payload)

Exec() → cmd body → BUSY
Poll() → BUSY
...
Poll() → PASS 或 EXIT

同步命令(Get payload)

Exec() → cmd body → SIZE
Get(seq=0), data0 → PASS
...
Get(seq=N), dataN → PASS 或 EXIT

同步命令(Put payload)

Exec(payload_size) → cmd body → PASS
Put(seq=0), data0 → PASS
...
Put(seq=N), dataN → PASS 或 EXIT