GPIO WinRT 기능 및 스트레스 테스트
GPIO 테스트는 WinRT API를 통해 GPIO 드라이버의 기능 및 스트레스 테스트를 수행합니다. 테스트 범위에는 다음이 포함됩니다.
- 루프백을 사용하여 모든 핀에서 읽기, 쓰기 및 중단이 작동하는지 확인합니다. 루프백 구성을 지정하려면 아래에서 Board.xml의 설명을 참조하세요.
- 핸들을 닫을 때 핀이 기본 상태로 되돌아가는지 확인합니다.
- 열거형 핀을 구성 파일과 비교하여 필요한 핀이 노출되는지 확인합니다(아래 Board.xml 설명 참조).
- 인터럽트 사용을 통해 핀 상태를 안정적으로 추적할 수 있는지 확인합니다.
- 드라이버가 스트레스 조건에서 올바르게 작동하는지 확인합니다. 스트레스 테스트는 두 루프백 핀 집합을 동시에 전환하고, Read()에서 반환한 핀 값이 올바르고 인터럽트 발생이 올바른 시간에 발생하는지 확인합니다.
테스트 세부 정보
사양 |
|
플랫폼 | |
지원되는 릴리스 |
|
예상 실행 시간(분) | 5 |
범주 | 개발 |
시간 제한(분) | 10000 |
다시 부팅 필요 | false |
특별한 구성 필요 | true |
형식 | automatic |
추가 설명서
이 기능 영역의 테스트에는 다음 항목에서 찾을 수 있는 필수 조건, 설정, 문제 해결 정보를 포함한 추가 설명서가 있을 수 있습니다.
테스트 실행
GPIO 기능 및 스트레스 테스트를 실행하려면 최소 4개의 핀이 필요합니다. 이러한 핀 번호를 A1, A2, B1 및 B2라고 합니다. 다음 계통도와 같이 A1은 1k 저항기를 통해 A2에 연결되어야 하며, B1은 1k 저항기를 통해 B2에 연결되어야 합니다.
저항기는 출력 경합 중에 하드웨어가 손상되지 않도록 보호하며 테스트에서 드라이브 모드의 유효성을 검사하는 데 필요합니다. 실행을 위해 테스트를 예약할 때 A1, A2, B1 및 B2의 핀 번호를 입력하라는 메시지가 표시됩니다. 명령줄에서 테스트를 실행하는 경우 문제 해결 섹션에 표시된 것처럼 ‘Pins’ 런타임 매개 변수를 사용하여 핀 번호를 지정해야 합니다.
테스트의 기본 구성에서는 위에 지정된 4개의 핀만 실행됩니다. 이 핀만으로도 컨트롤러 드라이버의 적용 범위를 충분히 처리할 수 있지만 노출된 모든 핀을 IO 및 인터럽트용으로 사용할 수 있는지도 확인해야 합니다. 모든 핀에서 루프백 테스트를 실행하려면 1k 저항기를 통해 두 핀을 모두 연결하고 다음과 같이 %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot\Board.xml을 수정합니다.
<Table Id="Pins"> 요소 아래에 노출된 각 핀의 <행>을 추가합니다. 여기서 DefaultDriveMode는 보드 전원이 켜질 때의 핀 구동 모드를 지정합니다. DefaultDriveMode는 Windows.Devices.Gpio.GpioPinDriveMode 열거형의 값 중 하나여야 합니다.
<Table Id="Pins"> <Row> <Parameter Name="PinNumber">0</Parameter> <Parameter Name="Enabled">True</Parameter> <Parameter Name="DefaultDriveMode">Input</Parameter> </Row> <Row> <Parameter Name="PinNumber">1</Parameter> <Parameter Name="Enabled">True</Parameter> <Parameter Name="DefaultDriveMode">InputPullUp</Parameter> </Row> <!-- By setting Enabled to False, you can also assert that a pin should NOT be accessible --> <Row> <Parameter Name="PinNumber">2</Parameter> <Parameter Name="Enabled">False</Parameter> </Row> </Table>
<Table Id="Loopbacks"> 요소 아래에서 루프백 구성에 연결된 각 핀 쌍에 대한 <행>을 추가합니다. 예를 들어 다음 데이터는 핀 0이 핀 2에 연결되고 핀 1이 핀 3에 연결되도록 지정합니다.
<Table Id="Loopbacks"> <Row> <Parameter Name="Pin1">0</Parameter> <Parameter Name="Pin2">2</Parameter> </Row> <Row> <Parameter Name="Pin1">1</Parameter> <Parameter Name="Pin2">3</Parameter> </Row> </Table>
Board-rpi.xml 및 Board-mbm.xml은 Raspberry Pi 및 MinnowBoardMax 플랫폼에 대한 예로 %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot에 제공됩니다.
Board.xml은 테스트를 실행할 때 Windows.Devices.LowLevel.UnitTests.dll과 동일한 디렉터리에 있어야 합니다. HLK 관리자를 통해 테스트를 실행하는 경우 HLK 디렉터리에서 디바이스의 올바른 위치로 Board.xml을 자동으로 복사합니다. 명령줄에서 테스트를 실행하는 경우 Board.xml을 직접 배포해야 합니다.
문제 해결
HLK 테스트 실패의 일반적인 문제 해결은 Windows HLK 테스트 실패 문제 해결을 참조하세요.
실패에 대한 인사이트를 얻고 솔루션을 빠르게 반복하려면 명령줄에서 테스트를 실행하는 것이 좋습니다. 명령줄에서 테스트를 실행하는 방법은 다음과 같습니다.
%programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe를 c:\data\minte에 복사합니다.
%programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot의 모든 파일을 디바이스의 c:\data에 복사합니다.
텔넷 또는 ssh를 디바이스에 연결합니다.
디렉터리를 c:\data로 변경합니다.
Run
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=A1,A2,B1,B2 /name:GpioTests::*
명령줄 테스트 사용법:
minte\te.exe windows.devices.lowlevel.unittests.dll [/p:Pins=pin_numbers] [/name:test_name] [/p:Duration=duration]
- pin_numbers - A1,A2,B1,B2 형식의 테스트에 사용할 핀 번호입니다. 여기서 A1은 1k 저항기를 통해 A2에 연결되고 B1은 1k 저항기를 통해 B2에 연결됩니다. 지정하지 않으면 A1은 기본적으로 사용 가능한 가장 낮은 핀 번호이고, A2는 사용 가능한 가장 높은 핀 번호이고, B1은 기본적으로 사용 가능한 두 번째로 낮은 핀 번호이고, B2는 기본적으로 사용 가능한 두 번째로 높은 핀 번호로 설정됩니다. 예: /p:Pins=4,27,5,26
- test_name - 와일드카드를 포함할 수 있는 실행할 테스트의 이름입니다. 예: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
- duration - 스트레스 테스트를 실행하는 기간입니다. 예: /p:Duration=10s(10초), /p:Duration=1m(1분), /p:Duration=2h(2시간), /p:Duration=1d(1일)
기본 구성에서 테스트를 실행하려면
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::*
특정 테스트를 실행하려면 전체 테스트 이름을 /name 매개 변수에 전달합니다.
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::VerifyInterruptStateTracking
권장되는 2시간 동안 스트레스 테스트를 실행하려면 다음을 실행합니다.
minte\te.exe windows.devices.lowlevel.unittests.dll /p:Pins=0,1,2,3 /name:GpioTests::* /p:Duration=2h
수동 문제 해결에 도움이 되는 도구는 명령줄에서 GPIO와 상호 작용하기 위한 간단한 유틸리티인 GpioTestTool입니다.
추가 정보
매개 변수
매개 변수 이름 | 매개 변수 설명 |
---|---|
핀 | <A1>,<A2>,<B1>,<B2> 형식의 루프백 핀입니다. 여기서 A1은 A2에 연결되고 B1은 B2에 연결됩니다. |
Duration | 각 스트레스 테스트를 실행할 기간을 지정합니다. 예: 30s, 1m, 1h, 1d |