1、立项背景和目标
面向手机维修门店/产线场景,需统一连接维修盒、串口设备与 iPhone,完成芯片读写、数据解析与设备识别。目标是提供稳定的 Windows 上位机,降低对多套散装工具的依赖,把串口通信、HID 协议、苹果设备 ECID 识别集中到同一套 AY 助手中。
2、软件功能、核心功能模块
串口通信:端口配置、收发与会话管理
HID/USB 设备管理:枚举维修盒、下发指令、读写片相关流程
芯片数据库与 chip 资源:按型号加载固件/数据,支撑写片业务
苹果设备:动态加载 iTunesMobileDevice 栈,监听插拔并获取 ECID
数据解析:ParseUbindData 等对出厂/解绑类 BIN 数据解析
辅助:文件传输、下载管理等配套能力
3、业务流程、功能路径
启动程序 → 选择串口或连接 HID 盒 → 识别设备/芯片型号 → 加载 chip 资源或下发协议命令 →(可选)接入 iPhone 读取 ECID → 解析/展示结果 → 完成写片或维修相关操作。
1、整体架构和设计思路
采用 Qt Widgets 单机应用架构:UI(widget/对话框)与业务模块解耦。串口模块负责通信;HidManager 封装 libusb/HID 协议与写片路径;NandChipDatabase + chip 目录提供型号数据;ITunesEcidHelper 运行时加载 iDeviceDll,不静态链接苹果库,降低部署耦合。编译产物输出到 build,运行依赖 libusb DLL、chip 数据,苹果功能另需 iDeviceDll。
2、我负责的模块和结果
负责上位机核心业务与工程整理:串口/HID/苹果 ECID 相关联调与模块边界梳理;整理可独立编译的源码交付包(含 chip 运行时数据);明确 iDeviceDll 为可选运行依赖(不影响主程序启动,仅影响苹果识别)。工程可按 .pro 直接用 Qt Creator 打开编译。
3、遇到的难点、坑和解决方案
难点:苹果能力依赖私有 DLL 栈,静态链接不可行。解决:与 YiXin 同源,exe 旁 iDeviceDll 动态 LoadLibrary + GetProcAddress。
难点:工程目录混有板端 LVGL、参考工程等,体积大且干扰交付。解决:按 .pro 依赖拆出精简源码包,chip 作为程序相关运行时一并交付,板端/参考库不纳入。
难点:写片数据路径依赖 chip 目录相对位置。解决:代码支持 exe 同级与上一级 chip/<型号>/ 查找,交付时保持目录结构一致。