使用Aardvark监测I2C链路——项目调试实例
1、 Aardvark是Total phase公司推出的一款I2C、SPI总线的调试工具。其功能包括,作为主/从设备调试I2C或SPI的相关功能,监测I2C总线上的数据,调试GPIO端口等。
2、 在项目中报了一个问题:BMC web下面显示硬盘小概率的发生在位信息丢失,然后3秒后恢复,但是系统下并没有log显示硬盘有发生过丢失的过程。用示波器量测硬盘的present信号,触发模式抓取一晚上,没有捕捉到present信号的边沿变化(一直是低电平)。事实上,3s是BMC的一次轮询的周期,因此怀疑是BMC内部进程间的冲突导致present的某些值被修改,因此为论证这一问题,尝试接上total phase,监测链路上的i2c信号的波形,如果在硬盘present error发生的时刻,硬件链路上i2c信号是正确的,那么即可说明是BMC内部的问题。
3、 连接Total phase,将I2C的三个信号线(GND,CLK,DAT)焊到板子上的对应pin脚上。Total phase上的pin序如下图所示:
4、 将USB连接到PC上,安装相应的驱动文件(附件中的totalphaseusb-v2.15)。然后进入Aardvark的操作界面,这里的程序入口的版本很多,功能上有一些区别。目前本文运行的是aardvark-gui-windows-i686-v3.55中的Aardvark GUI.exe文件,进入程序之后的界面如下图所示,
在连接好设备,并且安装好驱动后,点击中间的Configure按钮,出现如下图所示的对话框,设备正确连接后应在红框位置处显示可以使用的Aardvark设备,选中设备,然后在右侧绿色对话框选择相应的模式,本文选择的是I2C Monitor的模式。该模式的功能是无差别的监测I2C上的信号,会将host和slave所发送的i2c数据全部解析出来并显示出来。进入到i2c monitor的界面后,点击右上角的enable即可开始监测i2c数据,除此之外还有clear和save两个button,分别是清屏和保存数据用的,不需要再过多解释。
保存出来的数据是txt格式的,打开的话会很慢,建议可以导成excel或者用notepad++来打开。以便后续的数据分析。
任何疑问或讨论,欢迎致函我个人邮箱zhengguanru@163.com