Windows 内部集成电路 (I2C) 测试工具 (WITT) 控制器测试验证 Windows Hardware Lab Kit (Windows HLK) Windows 简单外设总线 (SPB) 合规性和 I2C 控制器及其关联驱动程序的可靠性。 WITT I2C 控制器测试包含硬件(WITT 适配器)和软件(测试可执行文件、测试驱动程序和实用工具)。 有关 WITT I2C 测试的列表,请参阅 Device.BusController 测试。
本文内容:
WITT I2C 控制器测试硬件设置
图 1. 典型的 WITT 测试设置 显示测试、测试驱动程序设置以及必须执行用于运行 WITT 测试的 I2C 连接。
图 2. WITT 板 I2C 标头在典型的 WITT 板上显示 LED、I2C 标头、USB 连接器、测试引脚、EEPROM 跳线和电压跳线。
必须将串行时钟 (SCL)、串行数据 (SDA) 和接地 (GND) 引脚连接到主机 I2C 控制器。 WITT I2C 控制器测试不需要常规用途输入/输出 (GPIO) 连接。 SCL、SDA 和 GND 引脚显示在图 3 中。 I2C 10 引脚标头:
USB
将 USB 电缆连接到 USB 连接器(类型 B)。 可以使用 USB 连接来更新 WITT 固件,这需要 Microsoft USB 测试工具 (MUTT) 驱动程序和 Muttutil.exe 实用工具,可从 MUTT 软件包获取该工具。 由于 WITT 已有 I2C 控制器测试固件,因此 USB 连接仅用于电源目的。 如果需要固件升级,请使用以下步骤:
设置 WITT I2C 目标,如 WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C 控制器测试软件设置中所述。
从具有管理权限的命令提示符窗口中运行以下命令:
WITTUpgrade.exe I2C9665.iic /f
其中,I2C9665.iic 是固件文件,/f 强制进行升级。 (固件 .iic 文件与其他测试二进制文件一起发布在 Windows HLK 中。)
测试引脚
测试引脚标头上的 SCL/SDA/GND 连接器可以焊接在一起并用于将 I2C 连接到主机控制器。 I2C 线路的电压必须与主机控制器的电压匹配;它们通常是 1.8v 或 3.3v,可以通过切换 WITT 板上的电压跳线来设置(请参见图 2. WITT 板)。
EEPROM 跳线
EEPROM 跳线控制是否从 EEPROM 启动。 应在图 2. WITT 板中所示的位置处设置跳线。 (只需切换到其他位置即可通过 USB 方法恢复 WITT 固件。)
LED
可以按如下方式解释 LED:
红色 LED:打开电源。
黄色 LED:如果没有 I2C 总线流量(SCL 和 SDA 较高),则持续亮起。
蓝色 LED:当 I2C 数据流量在主机和 WITT 板之间持续流动时闪烁。
I2C 电压跳线
此跳线可用于将 I2C 信号电平位移到 WITT。 设置跳线位置 1-2(针对 3.3v)或跳线位置 2-3(针对 1.8v)。 将电源连接到 pin2 以获取除 1.8v 和 3.3v 之外的其他电压等级。
WITT I2C 控制器测试软件设置
WITT 测试二进制文件随 Windows HLK 一起提供,位于 \\{$HCKServer}\Tests\{$PROCESSOR_ARCHITECTURE}\spb 文件夹中的 Windows HLK 控制器或服务器上,其中 HCKServer 是 Windows HLK 服务器的名称, $PROCESSOR_ARCHITECTURE 是 AMD64、x86 或 Arm) (设备平台。 WITT I2C 测试需要以下二进制文件:
测试外设驱动程序:WITTTest.inf、WITTTest.sys 和 WITTTest.cat。
WITTTest.exe
必须在测试过程中使用内核调试器。 可以从下载和安装 Windows 调试工具下载并安装内核调试器。
典型安装步骤(单个控制器实例)
若要设置使用单个控制器的典型测试配置,请执行以下步骤。
设置典型测试配置
打开具有管理权限的命令提示符。
运行以下命令以安装测试外设驱动程序:
pnputil -a witttest.inf
-a 标志将驱动程序包添加到 Windows 驱动程序存储区中。
更新高级配置和电源接口 (ACPI) 表以枚举测试设备节点。 这些节点通常在 SSDT(辅助系统描述符表)或 DSDT(差异化系统说明表)中定义。
在命令提示符窗口中,运行以下命令以生成 SSDT:
asl.exe /tab:ssdt
编辑生成的 SSDT.asl 表,如下所示:
Device(TP1) { Name(_ADR,0) Name (_HID, "STK0001") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x7F, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP2) { Name(_ADR,0) Name (_HID, "STK0002") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x11, ControllerInitiated, 100000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP3) { Name(_ADR,0) Name (_HID, "STK0003") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x12, ControllerInitiated, 400000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } } Device(TP4) { Name(_ADR,0) Name (_HID, "STK0004") Name (_CID, "WITTTest") Method(_CRS, 0x0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2CSerialBus ( 0x13, ControllerInitiated, 1000000,AddressingMode7Bit, "\\_SB_.I2C3",,, , ) }) Return(RBUF) } }
在此测试中,TP1 用作测试接口 (0x7F),TP2 (0x11) 配置为标准 I2C 目标,TP3 (0x12) 配置为 fast I2C 目标,TP4 (0x13) 配置为 fast plus I2C 目标。
注意
将表中列出的 I2C 控制器地址更改为实际 I2C 控制器的地址。
在命令提示符窗口中,运行以下命令以从修改后的 Ssdt.asl 文件生成 Ssdt.aml 文件:
asl.exe ssdt.asl
在命令提示符窗口中,运行以下命令以更新修改后的 ACPI 表:
asl.exe /loadtable ssdt.aml
使用默认设置在 I2C 控制器和 Spbcx.sys 中启用驱动程序验证程序。
重新启动系统:四个设备实例应显示在 Windows HLK 的设备管理器中的“WITT 测试类”节点下。
可以通过从命令行运行 Spbcmd.exe 来验证是否正确设置了 WITT 测试环境。 Spbcmd 工具的示例命令输出如下所示,其中 7F 是测试接口的签名,01、02 和 03 是三个测试目标的签名。
> list list Available connection ID: Target:53, Instance:0x0 Target:54, Instance:0x0 Target:55, Instance:0x0 Target:56, Instance:0x0 > i2c 0x0 0x21 //this step is not necessary if you are not testing multiple instances i2c 0x0 0x21 Instance requested:0x0 I2C address requested:0x21 Found WITT test interface at \\.\RESOURCE_HUB\0000000000000035 WITT Testing I2C address successfully changed to 0x21 for instance 0x0 > open 53 open 53 Address 53 opened > read 53 1 read 53 1 1 bytes read 7f > open 54 open 54 Address 54 opened > read 54 1 read 54 1 1 bytes read 01 > write 54 {01 02 03} write 54 {01 02 03} 3 bytes written > writeread 54 {01 02 03} 2 writeread 54 {01 02 03} 2 5 bytes transferred 01 01 52 00 c0
使用 Open 和 Close 命令打开和关闭目标。 Read、Write 和 WriteRead 是手动 I/O 命令。
还可以使用 List 命令列出所有可用的 I2C 测试目标 I2C: I2C 0x0 0x21。 切换 WITT 测试地址,使其以 0x21(0x21,0x22,0x23) 开头;例如,如果在 ASL 中配置了非默认 I2C 地址,则为 0。
I2C 控制器验证测试手册说明
除了在 Windows HLK Studio 中运行 I2C 控制器验证测试外,还可以手动运行它。 本部分介绍如何手动运行 WITT I2C 控制器测试。 有关每个测试的特定信息,请参阅各个测试主题。
必须从具有管理权限的命令提示符窗口运行每个测试。
将 wttlog.dll 从 \\${HCKServer}\TaefBinaries 复制到 Witttest.exe 所在的同一目录,其中 HCKServer 是 Windows HLK 服务器的名称。
若要列出所有可用的测试和命令行参数,请在命令提示符处键入 wittest.exe /?。 例如:
Witttest.exe /?
Supported command line arguments are:
/rs:<Seed>
/sm internal use of acpsim load
/fw:firmwareware iic
/i2c:address
/ins:witt instance number
/dip:device instance path
/duration:stress duration in minutes
/test:<test_id>
Example:
WITTTest.exe /test:BasicIORead
Currently the following test id's are supported:
/test:BasicIORead
/test:BasicIOWrite
/test:BasicIOSeq
/test:BasicIOKernel
/test:ClkStretch
/test:DeviceNack
/test:LockUnlock
/test:CancelRead
/test:CancelWrite
/test:CancelSeq
/test:PerfRead
/test:PerfWrite
/test:PerfSeq
/test:MultipleTargets
/test:BusRecovery
/test:Power
/test:Stress
/test:RunAll
若要使用默认值运行单个测试,请键入 Witttest.exe /test:<Testname>,其中 <Testname> 是测试的名称;例如, Witttest.exe /test:BasicIORead。 若要使用不同于默认实例 0 的实例运行此测试,请键入 Witttest.exe /test:BasicIORead /ins:0x1。 若要使用不同的测试 I2C 测试地址(而不是默认测试 I2C 地址 0x11,0x12,0x13)运行此测试,请键入 Witttest.exe /test:BasicIORead /i2c:0x21。
若要运行所有测试,请键入 Witttest.exe /test:RunAll。 此命令将遍历所有测试,并在测试序列结束时打印测试结果;例如:
*****Test run results*****
# Test cases passed:
BasicIORead
BasicIOWrite
BasicIOSeq
BasicIOKernel
ClkStretch
LockUnlock
PerfRead
PerfWrite
PerfSeq
MultipleTargets
Stress
# Test Cases passed with warning:
CancelRead
CancelWrite
CancelSeq
# Test Cases Failed:
DeviceNack
# Total:
Pass:11 Fail:1 Warn:3
相关主题
JJG Technologies 提供的 WITT(Windows I2C 测试工具)