MITT 中的 GPIO 测试

MITT 软件包中包含的 GPIO 测试模块可用于测试以下按钮音量调高、调低音量、电源和旋转锁。 可以使用这些测试来检测 GPIO 驱动程序和微控制器的问题,并确定系统对短推还是长推的响应是所需的响应。 连接到按钮的线条由 MITT 板实际拉低。

准备阶段

硬件设置

MITT GPIO 硬件设置的图片。

总线接口 引脚输出 ACPI 和示意图 连接解决方案
GPIO 按钮 按钮和指示灯线:音量上升/下降、电源、旋转锁、笔记本电脑/板指示器、扩展坞指示器 图表 调试板上的简单公块 ()
GPIO 控制器 使用的 GPIO 控制器引脚和索引
  • 用于引脚的 GPIO 控制器的 ACPI 名称。
  • 控制器 (级别或基于边缘的) 中的中断触发类型
  • 说明 (包括设备的 PNP ID) ((如果有任何) 使用 GPIO 引脚在测试通过期间禁用它)
调试板上的简单公块 ()
  1. 在 MITT 板上,标识 GPIO 连接器。 它使用最左侧的 12 针标头,标记为 JA1,如下图所示。

    MITT 板上标头的 gpio 图片。

  2. 将 GPIO 适配器板连接到 JA1 标头。

  3. 将 MITT 板上的电源跳线连接到 3V3。

  4. 向上推 GPIO 接头旁边的开关上的滑块,为开发板供电。

    GPIO 电源连接的图片。

  5. 将卷调高 (volu) 、调低音量 (vold) 、停靠/取消停靠 (扩展坞) ,以及从连接到 MITT) 的 GPIO 适配器板 (板/笔记本电脑 (模式) 行连接到受测系统上的相应引脚。

    12 引脚标头连接到各个 GPIO 线路,如下图所示。

    ja1 标头上的 gpio 接线图。

    GPIO 板上输出引脚的示意图。 引脚必须与开关并行放置,以便 FET 可以将线路拉低,就像按下开关一样。

    MITT 上的 GPIO 输出引脚示意图。

  6. 可选。 如果想要在卷或指示器上运行 MITT GPIO 测试,则可以通过设置这些注册表项跳过 GPIO 自动化中的相关测试。 每个条目都是一个 DWORD,值为 1 启用测试;0 禁用它。

    • 数据量(Volume)

      HKEY_CURRENT_USER\Software\Microsoft\MITT\GPIO\RunVolumeTest

    • 指示灯

      HKEY_CURRENT_USER\Software\Microsoft\MITT\GPIO\RunIndicatorsTest

运行 GPIO 自动化测试

若要使用 WDTF 手动运行 GPIO 测试,请执行以下任务:

  1. 将 mittsimpleioaction.dll 从 MITT 软件包复制到 %ProgramFiles (x86) %\Windows Kits\8.1\Testing\Runtimes\WDTF\RunTime\Actions\SimpleIO
  2. 运行 %ProgramFiles (x86) %\Windows Kits\8.1\Testing\Runtimes\WDTF\RunTime\UnRegisterWDTF.exe
  3. 运行 %ProgramFiles (x86) %\Windows Kits\8.1\Testing\Runtimes\WDTF\RunTime\Actions .\RegisterWDTF.exe /nogacinstall
  4. 通过运行 MITT 软件包中包含的SIMPLEIO_MITT_ GPIO _Sample.vbs 启动 GPIO 自动化测试。

示例:自定义 GPIO 输入注入

此示例使用一个文件 ,Example.txt,其中包含按电源按钮两秒钟,然后松开按钮的序列。 下面是该文件的内容:

'h001E8480
'b0000000000011111
'b0000000100011111
'b0000000000011111

运行以下命令:

Muttutil.exe -SetChannel 00

Muttutil.exe -WriteData 0000

Muttutill.exe –SetChannel 01

Muttutil.exe –WriteDataFromFile Example.txt

Muttutil.exe –SetChannel 00

Muttutil.exe –Writedata 0001
  • 具有 00 的 SetChannel 指示控制通道将接收数据。
  • 包含 0000 的 WriteData 暂停所有测试模块。
  • SetChannel 选项,方法是指定 01 以指示 GPIO 通道将接收数据。
  • 具有文件名的 WriteDataFromFile,用于将示例输入文件的内容发送到 GPIO 模块。
  • 00 切换回控制通道的 SetChannel 将接收数据。
  • 0001 写入到控制通道以激活 GPIO 排序程序。 GPIO 模块将开始排序。

生成输入序列

若要生成序列,需要以下值:

  • 间隔值

    间隔值是一个位掩码,指示在间隔期间按下哪个按钮。 位掩码中的零值表示该按钮在时间间隔内未按下。 下面是可能的位索引值:

    16 位值的位索引 受测系统上的使用情况
    0 电源按钮启用 (“1”启用输出)
    1 停靠指示器启用 (“1” 启用输出)
    2 卷增大启用 (“1” 启用输出)
    3 旋转锁启用 (“1” 启用输出)
    4 调低音量启用 (“1”启用输出)
    5 Slate/Laptop 切换启用 (“1”启用输出)
    6-7 未使用
    8 电源按钮值 (“1”按下开关)
    9 停靠指示器值 (“1”按下开关)
    10 音量增大值 (“1”按下开关)
    11 旋转锁值 (“1”按下开关)
    12 音量调低值 (“1”按下开关)
    13 平板/笔记本电脑切换值 (“1”按下开关)
    14-15 未使用
  • 时钟乘数

    时钟乘数是移动到下一个数据模式之前,按钮 (以 1 微秒为增量) 的保持时间。 GPIO 测试模块保留最后一个数据模式,直到重置线路。

    使用小时钟乘数与大时钟乘数有一个权衡。 乘数值越小,精度就越高,这要求在数据模式中创建更多行以覆盖时间跨度。 创建数据模式文件时,需要确定所需的数据包与时钟乘数值之间的适当平衡。

    通过使用前面的示例,可以创建输入注入文件。 若要生成输入序列,需要通信协议。 从 MITT 板发送到受测系统的数据按以下模式排列:

    GPIO 模块的通信协议示意图。

    GPIO 测试线路中没有协议级错误检查。 如果存在协议错误,则 MITT 将显示未知错误。

GPIO 适配器示意图

GPIO 适配器示意图。