Поделиться через


Функциональные и нагрузочные тесты GPIO WinRT

Тесты GPIO выполняют функциональное и нагрузочное тестирование драйверов GPIO с помощью API WinRT. К область тестирования относятся:

  • Убедитесь, что чтение, запись и прерывание работают на всех контактах с помощью замыкания на себя. Чтобы указать конфигурацию замыкания на себя, см. описание Board.xml ниже.
  • Проверка того, что контакт возвращается в состояние по умолчанию при закрытии дескриптора.
  • Убедитесь, что ожидаемые контакты доступны, сравнив перечисленные контакты с файлом конфигурации (см. описание Board.xml ниже).
  • Проверка надежности отслеживания состояния пин-кода с помощью прерываний.
  • Проверка правильности поведения водителей в условиях стресса. Нагрузочные тесты параллельно переключают два набора замыкания на себя и проверяют правильность значения контакта, возвращаемого методом Read(), и что прерывания запускаются в правильное время.

Сведения о тесте

   
Характеристики
  • Device.BusController.Gpio.WinRT.Discretional
Платформы
    Поддерживаемые выпуски
    • Windows 10
    • Windows 10 версии 1511
    • Windows 10, версия 1607
    • Windows 10 версии 1703
    • Windows 10 версии 1709
    • Windows 10 версии 1803
    • Windows 10, версия 1809
    • Windows 10 версии 1903
    • Следующее обновление до Windows 10
    Ожидаемое время выполнения (в минутах) 5
    Категория Разработка
    Время ожидания (в минутах) 10000
    Требуется перезагрузка false
    Требуется специальная конфигурация Да
    Тип automatic

     

    Дополнительная документация

    Тесты в этой области функций могут содержать дополнительную документацию, включая предварительные требования, сведения о настройке и устранении неполадок, которые можно найти в следующих разделах:

    Запуск теста

    Для выполнения функциональных и нагрузочных тестов GPIO требуется не менее 4 контактов. Эти номера контактов называются A1, A2, B1 и B2. A1 должен быть подключен к A2 через резистор 1k, а B1 должен быть подключен к B2 через резистор 1k, как показано в следующей схеме:

    Схема замыкания на себя gpio

    Резисторы защищают оборудование от повреждения во время состязания на выходе и необходимы для тестирования для проверки режимов диска. Вам будет предложено указать номера контактов A1, A2, B1 и B2 при планировании тестов для выполнения. Если тесты выполняются из командной строки, необходимо указать номера закрепления с помощью параметра среды выполнения Pins, как показано в разделе Устранение неполадок.

    В конфигурации тестов по умолчанию будут выполняться только 4 контакта, указанные выше. Хотя этого достаточно для охвата драйвера контроллера, необходимо также проверить, можно ли использовать каждый предоставленный контакт для операций ввода-вывода и прерываний. Чтобы выполнить тесты замыкания на себя на всех контактах, подключите каждые два контакта с помощью резистора 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 предоставляются в %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot в качестве примеров для платформ Raspberry Pi и MinnowBoardMax.

    Board.xml должны находиться в том же каталоге, что и Windows.Devices.LowLevel.UnitTests.dll при выполнении тестов. Если вы запускаете тесты с помощью диспетчера HLK, он автоматически скопирует Board.xml из каталога HLK в нужное расположение на устройстве. При выполнении тестов в командной строке необходимо развернуть Board.xml самостоятельно.

    Устранение неполадок

    Общие сведения об устранении неполадок при тестировании HLK см. в статье Устранение неполадок тестов HLK в Windows.

    Мы рекомендуем запускать тесты в командной строке, чтобы получить представление о сбоях и быстро выполнить итерацию по решениям. Ниже описано, как выполнить тесты в командной строке.

    1. Скопируйте %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe в c:\data\minte

    2. Скопируйте все файлы из %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot в c:\data на устройстве.

    3. Подключение telnet или ssh к устройству

    4. Измените каталоги на c:\data

    5. Выполнить

      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 подключается к A2 через резистор 1k, а B1 подключается к B2 через резистор 1k. Если этот номер не указан, по умолчанию A1 — наименьший доступный номер пин-кода, A2 — самый высокий доступный номер пин-кода, B1 — второй самый низкий доступный номер пин-кода, а B2 — второй по величине доступный номер пин-кода. Пример: /p:Pins=4,27,5,26
    • test_name — имя запускаемого теста, которое может содержать подстановочные знаки. Примеры: /name:GpioTests::*, /name:GpioTests::VerifySetDriveMode#metadataSet0
    • длительность — как долго следует выполнять стресс-тесты. Примеры: /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
    

    Средство, которое может помочь в устранении неполадок вручную, — это GpioTestTool, простая служебная программа для взаимодействия с GPIO из командной строки.

    Дополнительные сведения

    Параметры

    Имя параметра Описание параметра
    Маркеры Замыкания на себя в форме <A1>,< A2>,< B1>,< B2> , где A1 подключен к A2, а B1 подключен к B2
    Длительность Указывает продолжительность выполнения каждого из нагрузочных тестов. Например, 30s, 1m, 1h, 1d