다음을 통해 공유


WITT I2C 테스트 필수 조건

WITT(Windows I2C(Inter-Integrated Circuit) 테스트 도구) 컨트롤러 테스트는 Windows HLK(Windows Hardware Lab Kit) Windows SPB(Simple Peripheral Bus) 규정 준수 및 I2C 컨트롤러 및 관련 드라이버의 안정성을 확인합니다. WITT I2C 컨트롤러 테스트는 하드웨어(WITT 어댑터) 및 소프트웨어(테스트 실행 파일, 테스트 드라이버 및 유틸리티)로 구성됩니다. WITT I2C 테스트 목록은 Device.BusController 테스트를 참조하세요.

이 문서의 내용

WITT I2C 컨트롤러 테스트 하드웨어 설정

그림 1. 일반적인 WITT 테스트 설정 은 WITT 테스트를 실행하기 위해 수행해야 하는 테스트, 테스트 드라이버 설정 및 I2C 연결을 보여 줍니다.

witt 연결

그림 2. WITT 보드 (I2C 헤더 포함)는 일반적인 WITT 보드에 LED, I2C 헤더, USB 커넥터, 테스트 핀, EEPROM 점퍼 및 전압 점퍼를 보여 줍니다.

i2c 헤더가 있는 네트워크 인터페이스 카드

SCL(직렬 클록), SDA(직렬 데이터) 및 GND(접지) 핀을 호스트 I2C 컨트롤러에 연결해야 합니다. WITT I2C 컨트롤러 테스트에는 GPIO(범용 입출력) 연결이 필요하지 않습니다. SCL, SDA 및 GND 핀은 그림 3에 나와 있습니다. I2C 10 핀 헤더:

i2c 헤더

USB

USB 케이블을 USB 커넥터(B 유형)에 연결합니다. USB 연결을 사용하여 WITT 펌웨어를 업데이트할 수 있습니다. 이를 위해 MUTT(Microsoft USB 테스트 도구) 드라이버와 MUTT 소프트웨어 패키지에서 가져올 수 있는 Muttutil.exe 유틸리티가 필요합니다. WITT에는 이미 I2C 컨트롤러 테스트 펌웨어가 있으므로 USB 연결은 전원 공급 장치 용도로만 사용됩니다. 펌웨어 업그레이드가 필요한 경우 다음 단계를 사용합니다.

  1. WITT I<superscript xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">2</superscript>C 컨트롤러 테스트 소프트웨어 설정에 설명된 대로 WITT I2C 대상을 설정합니다.

  2. 관리자 권한이 있는 명령 프롬프트 창에서 다음 명령을 실행합니다.

    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: 호스트와 WITT 보드 간에 I2C 데이터 트래픽이 진행 중일 때는 깜박입니다.

I2C 전압 점퍼

이 점퍼는 I2C 신호 수준을 WITT로 이동하는 데 사용할 수 있습니다. 3.3v의 경우 점퍼 위치를 1-2로 설정하거나 1.8v의 경우 점퍼 위치를 2-3으로 설정합니다. 1.8v 및 3.3v 이외의 추가 전압 수준을 위해 전원을 pin2에 연결합니다.

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.sysWITTTest.cat

  • WITTTest.exe

테스트 중에 커널 디버거를 사용해야 합니다. Windows용 디버깅 도구 다운로드 및 설치에서 커널 디버거를 다운로드하고 설치할 수 있습니다.

일반적인 설정 단계(단일 컨트롤러 인스턴스)

단일 컨트롤러를 사용하는 일반적인 테스트 구성을 설정하려면 다음 단계를 수행합니다.

일반적인 테스트 구성을 설정하려면

  1. 관리자 권한이 있는 명령 프롬프트를 엽니다.

  2. 다음 명령을 실행하여 테스트 주변 장치 드라이버를 설치합니다.

    pnputil -a witttest.inf
    

    -a 플래그는 드라이버 패키지를 Windows 드라이버 저장소에 추가합니다.

  3. 테스트 디바이스 노드를 열거하도록 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)은 빠른 I2C 대상으로 구성되고, TP4(0x13)는 빠른 플러스 I2C 대상으로 구성됩니다.

      참고

      테이블에 나열된 I2C 컨트롤러 주소를 실제 I2C 컨트롤러의 주소로 변경합니다.

  4. 명령 프롬프트 창에서 다음 명령을 실행하여 수정된 Ssdt.asl 파일에서 Ssdt.aml 파일을 생성합니다.

    asl.exe ssdt.asl
    
  5. 명령 프롬프트 창에서 다음 명령을 실행하여 수정된 ACPI 테이블을 업데이트합니다.

    asl.exe /loadtable ssdt.aml
    
  6. 기본 설정을 사용하여 I2C 컨트롤러 및 Spbcx.sys에서 드라이버 검증 도구를 사용하도록 설정합니다.

  7. 시스템 다시 시작: Windows HLK의 디바이스 관리자에서 WITT 테스트 클래스 노드 아래에 4개의 디바이스 인스턴스가 표시되어야 합니다.

  8. 명령줄에서 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
    

    열기닫기 명령을 사용하여 대상을 열고 닫습니다. Read, WriteWriteRead는 수동 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 from \\${HCKServer}\TaefBinariesWitttest.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 주소 0x11,0x12,0x13 대신 다른 테스트 I2C 주소로 이 테스트를 실행하려면 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 테스트 도구)

버스 컨트롤러 테스트 문제 해결