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)、停靠/取消停靠(dock)和平板/笔记本模式(mode)线路从连接到 MITT 的 GPIO 适配器板连接到受测系统上的相应引脚。

    12 针座接线到每个 GPIO 线路,如下图所示。

    ja1 标头上的 gpio 线路示意图。

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

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

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

    • 音量

      HKEY_CURRENT_USER\Software\Microsoft\MITT\GPIO\RunVolumeTest

    • 指示器

      HKEY_CURRENT_USER\Software\Microsoft\MITT\GPIO\RunIndicatorsTest

运行 GPIO 自动化测试

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

  1. 将 MITT 软件包中的 mittsimpleioaction.dll 复制到 %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 的 WriteData 写入控制通道以激活 GPIO 序列器。 GPIO 模块将开始排序。

生成输入序列

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

  • 间隔值

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

    16 位值中的位索引 正在测试的系统上的使用情况
    0 电源按钮启用(“1”表示启用输出)
    1 扩展坞指示器启用(“1”启用输出)
    2 音量增大启用(“1”启用输出)
    3 旋转锁启用(“1”启用输出)
    4 音量减小功能启用 (“1” 启用输出)
    5 “平板/笔记本电脑”切换开关启用(“1”启用输出)
    6-7 未使用
    8 电源按钮值(“1”按开关)
    9 停靠指示值(“1”表示按下开关)
    10 音量增加值(“1”按开关)
    11 旋转锁值(“1”表示按下开关)
    12 调低音量值(“1”按开关)
    13 平板/笔记本电脑切换值(“1”触发开关)
    14-15 未使用
  • 时钟乘数

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

    使用小倍频器与大倍频器存在权衡。 乘数的较小值允许更精确,这要求在数据模式中创建更多行来覆盖时间跨度。 创建数据模式文件时,需要确定所需的数据包与时钟乘数值之间的适当平衡。

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

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

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

GPIO 适配器示意图

GPIO 适配器示意图。