MFGTool V2 烧录工作流说明
概述
本文档描述了 MFGTool2.exe、cfg.ini、UICfg.ini、ucl2.xml、操作列表及烧录用二进制文件之间的关系。MFGTool2 的基本功能是在特定目标板(board)上使用特定 SoC,将镜像烧写到指定的存储介质中。
工作流程
1. 指定 SoC 类型
MFGTool2 需要通过 ucl2.xml 了解工作于哪种 SoC。原因:不同 SoC 有不同的 USB PID/VID,MFGTool2 依赖此信息监控设备树以精确定位目标设备。
ucl2.xml 开头通过 <CFG> 参数定义 SoC 名称和 PID/VID。
2. 指定 ucl2.xml 路径
通过 cfg.ini 配置:
[profiles]
chip = MX6Q Linux UpdateMFGTool2 会在 Profiles\${chip}\OS Firmware 路径下查找 ucl2.xml。
3. 定义最大并发设备数
通过 UICfg.ini 的 PortMgrDlg 配置,用于创建相关的结构、线程和 UI 资源。
4. 指定目标存储和板卡
通过 ucl2.xml 中的操作列表(operation list)区分。cfg.ini 中配置:
[LIST]
name = Sabre-SDMFGTool2 在 ucl2.xml 中查找名为 “Sabre-SD” 的操作列表。
5. 准备二进制文件
需要两类二进制文件:
- ram 内核:运行在目标板上的 U-Boot 和对应内核(用于首次烧录)
- normal 内核:最终用户使用的内核和 U-Boot
二进制文件位置由操作列表决定,例如:
<CMD state="BootStrap" type="boot" body="BootStrap" file="u-boot-mx6q-sabresd.bin">Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="uImage" address="0x10800000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Kernel.</CMD>
<CMD state="Updater" type="push" body="send" file="files/u-boot-mx6q-sabresd.bin">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push" body="send" file="files/uImage">Sending kernel uImage</CMD>BootStrap阶段的文件是 ram 内核Updater阶段的文件是 normal 内核
6. 执行流程
- 解析操作列表获取所有需要执行的命令
- 监控设备树,根据 ucl2.xml 中
<CFG>定义的 PID/VID 找到正确设备 - 使用 PID/VID 获取当前烧录阶段(state)
- 根据阶段获取对应命令并执行