SuperAPI AI 工具集

protocol-analysis

测试与质量

查看项目

更新于 10-16 01:18

技能介绍

用途:面向软件侧的串行总线分析,指导完成逻辑分析仪工作流、sigrok/PulseView 解码、抓包与固件驱动对照,以及基于 Python 的解析,衔接裸机 SPI/I2C 技能与硬件调试。

适用场景:传感器无响应时验证总线时钟与数据;对比内核驱动事务与数据手册;为 CI/回归记录预期事务格式;在无昂贵实验设备时通过仿真与解码讲解协议分层。

工作流:物理探针接逻辑分析仪硬件(或 GPIO 位操作),经 sigrok-cli 或 PulseView GUI 使用 i2c、spi、uart 协议解码器,导出 VCD/CSV 供脚本处理。开源方案为 sigrok 配合廉价 FX2LA 板。

PulseView 快速开始:运行 pulseview 列出设备;命令行抓取示例:sigrok-cli --driver fx2lafw --config samplerate=1MHz --channels 0=SDA,1=SCL --samples 1m --protocols i2c。

I2C 解码要点:START 为 SCL 高时 SDA 下降;地址加读写位共 7 位加 ACK;每字节一个 ACK;STOP 为 SCL 高时 SDA 上升。地址处 NACK 通常意味着地址错误或设备处于复位。

SPI 解码:检查模式(CPOL/CPHA)、位序(通常 MSB 优先)、CS 极性和字长,并与内核驱动中的 spi_setup() 对照。

UART 解码:设置波特率(9600/115200)、帧格式(8N1)和信号极性;异步传输要求逻辑分析仪采样率至少为波特率的 4 倍。

Python 后处理:读取 capture.csv,逐行获取时间戳与通道值,做边沿检测并重建比特。

与固件对照:用逻辑抓包时间戳匹配驱动寄存器写序列,比较字节间延迟与数据手册上限,标记多余时钟脉冲(模式故障)。

代理用法示例:/protocol-analysis Decode this I2C capture — device NACKs after register 0x0F write。

常见问题:解码乱码多为采样率错误,应不低于总线速度 4 倍;线路浮空为缺少上拉,启用内部或外部上拉;SPI 位错位为模式不匹配,按参考手册的 CPOL/CPHA 表设置;UART 帧错误为波特率漂移,测量实际位时间;无解码器为缺少 sigrok 构建,安装 sigrok-cli 与解码器。

相关技能:裸机 SPI/I2C、裸机 UART 串口、内核 I2C/SPI 总线驱动、strace/ltrace 性能分析、OpenOCD JTAG 调试。