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协议目标
-
解耦主机软件与设备细节
- 主机软件不需要了解设备的存储介质布局和设备命令细节
- 设备命令对主机保持透明
-
避免硬编码安装逻辑
- 固件编写者可以控制安装序列和安装命令设计
- 系统提供商可以指定和控制安装,无需修改主机工具
-
可移植性
- 新协议不仅限于USB传输
UTP架构
核心组件
-
设备命令引擎(DCE)固件(黄色)
- 定义和解释设备命令
- 系统特定实现,各系统可自由指定支持的命令格式
-
主机命令引擎(HCE)(蓝色)
- 定义主机命令
- 执行控制功能(如连接目标设备)和UI功能(如请求操作员输入)
-
更新命令列表(UCL)(灰色)
- 由系统开发者提供的设备命令和主机命令列表
- 可通过XML文档、分隔ASCII文件或脚本形式实现
-
包容器(虚线)
- 可选,用于捆绑UCL和相关对象(固件镜像、文件系统镜像等)
-
传输协议(UTP)(绿色)
- 基于Mass Storage Class - Bulk Only Transport (MSC-BOT)
- 利用BOT带宽优势,无需自定义Windows驱动
UTP协议消息
消息类型
| 类型 | 操作码 | 描述 |
|---|---|---|
| Poll | 0 | 轮询异步命令完成状态,或查询UTP版本 |
| Exec | 1 | 发送设备命令和参数 |
| Get | 2 | 从设备读取payload数据 |
| Put | 3 | 向设备写入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