调试环境搭建:UNICON工具安装与配置,逻辑分析仪连接与设置
1. UNICON 工具到底干吗用?
UNICON 是 UNISOC(紫光展锐)出的 UFS 调试工具,专门用来从 UTP 层往下抓东西。说白了,它就是帮你“监听”UFS 协议栈的中间件,把 Host 和 Device 之间的命令、响应、数据都截下来,然后翻译成人能看懂的格式。我一开始用的时候觉得它就是个黑盒,后来才发现,它能让我直接看到 UTP 层的超时细节,甚至能定位到是哪个 dword 填错了。
这章我们就把它装好、配好,再连上逻辑分析仪,凑齐一套能干活的环境。
2. UNICON 安装——踩过的坑我都给你踩好了
先说说硬件前提。你电脑上需要一根 USB 转 I3C/SPI 的调试线(推荐 FT4232H 方案的),然后目标板要有 UFS 调试接口。我个人习惯先让板子上电,再插 USB 线,顺序反了容易识别不到设备。
安装包我一般用 v2.3.0 或更高版本,太老的版本不支持 UFS 4.0 的 UTP 层抓包。下面是安装步骤:
- 解压安装包 – 路径不要带中文和空格,否则驱动签名验证会报错。我吃过这个亏,卡了两个小时。
- 安装驱动 – 双击
Driver/FTDI_CDM_WHQL_Setup.exe,按提示走。如果系统弹出“Windows 无法验证此驱动程序发布者”,选“仍然安装”。 - 安装 UNICON 主程序 – 运行
setup.exe,安装路径保持默认,语言选 English(中文界面翻译不完整,容易误导)。 - 重启电脑 – 这一步很多人跳过,结果设备管理器里总出现黄色感叹号。我建议老老实实重启。
- 验证驱动 – 打开设备管理器,找到“端口 (COM 和 LPT)”下的“FTDI FT4232H”,如果没有黄色标记,驱动就对了。
3. UNICON 基本配置——别让工具成了摆设
安装完还没完,得让它认识你的板子。启动 UNICON,我第一次打开时界面全灰,心里凉了半截。后来发现是配置文件不对。
配置文件 config.xml 放在安装目录的 conf/ 下。核心参数就这几个:
| 参数名 | 说明 | 我常用的值 |
|---|---|---|
InterfaceType | 调试总线类型 | I3C(新板子几乎都用 I3C) |
BaudRate | I3C 速率,单位 KHz | 12500(12.5MHz,兼顾速度和稳定性) |
VCID | 虚拟通道 ID,对应 UFS 设备逻辑单元 | 0(默认主通道) |
TraceLevel | 抓包层级,0=禁用,1=UTP,2=UPIU,3=全量 | 1(抓 UTP 层就够了,太多了刷屏) |
改完保存,重启 UNICON。正常情况下左下角状态栏会显示“I3C Connected”和“UFS Device Detected”。如果一直显示“Waiting for Device”,检查一下板子供电、调试线是否插紧、I3C 上拉电阻是否焊了。
4. 逻辑分析仪连接与设置——给信号做“体检”
UNICON 能抓 UTP 层报文,但物理层波形还得靠逻辑分析仪。我习惯用 Saleae Logic Pro 16,采样率 100MHz 以上,8 个通道就够用。连接方式其实很简单:
- 通道 0 – 接 I3C SCL(时钟)
- 通道 1 – 接 I3C SDA(数据)
- 通道 2 – 接 UFS REFCLK(参考时钟,可选,但强烈建议接上)
- 通道 3 – 接 UFS Reset(方便定位复位事件)
- GND – 和板子共地,必须接!
逻辑分析仪的软件设置我也总结了一下:
- 采样率 – 至少设到 50MHz,抓 I3C 的 12.5MHz 信号需要 4 倍过采样,否则边沿检测不准。
- 触发条件 – 设成“SCL 下降沿触发”,因为 I3C 的起始条件就是 SCL 高、SDA 下降沿。用这个触发能抓到完整的命令包。
- 解码器 – 添加 I3C 解码器,如果软件没有就手动安装。解码器参数选“I3C Basic v1.1.1”,地址长度设 7-bit。
- 存储深度 – 至少 100M samples,抓一次超时事件可能需要几十毫秒的数据。
连好之后点“Start”,然后让板子跑产生超时的测试用例。抓到的波形里,你可以直接看到 SCL 和 SDA 的时序,配合 UNICON 解析出来的 UPIU 头,就能判断是 Host 没发命令、还是 Device 没回响应。
5. 环境验证——花十分钟确认一切就绪
我不建议直接上复杂用例,先用一个简单 command 跑通流程:
// 用 UNICON 发一个 QUERY REQUEST(读取设备描述符)
01 00 00 00 // UTP 命令头:Transaction Type = Query
08 00 00 00 // Flags: Read, 0x08
00 00 00 01 // LUN = 0, Task Tag = 1
00 00 00 00 // CDB 前 4 字节为空
00 00 00 00 // CDB 后 4 字节为空
00 00 00 01 // Data Segment Length = 1
把这段 UPIU 通过 UNICON 的“Send UPIU”窗口发出去。如果收到 Device 的回包(UFU),说明 UNICON 和逻辑分析仪都正常工作。我一般验三次,确保数据一致性。
验证完建议把配置保存成模板,下次换板子直接改 VCID 就能用,不用重新一步步配。
环境搭建到这步就算完成了。你可能会问:“没有逻辑分析仪行不行?” 我的答案是:抓简单超时可以,但遇到时序问题基本两眼一抹黑。我建议这笔钱别省,买个入门级 8 通道的,能用很久。