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


Тесты по обнаружению разрывов передачи в SPI WinRT (требуется модуль LPC1768 mbed)

Тесты SPI выполняют функциональное и стресс-тестирование контроллеров SPI, доступных в пользовательском режиме через API Windows.Devices.Spi WinRT. Область тестирования включает в себя:

  • Проверка того, что контроллер SPI с указанным понятным именем доступен в пользовательском режиме.
  • Проверка правильности отправки и получения данных в различных режимах SPI, частотах часов, длине битов данных и длине передачи данных.
  • Проверка отсутствия промежутков между байтами в процессе передачи. Для некоторых устройств, таких как светодиодные полосы и аналоговые цифровые преобразователи, требуется непрерывный сигнал часов.
  • Проверка фактической скорости часов, используемой в пределах 15% запрошенного значения.
  • Проверка того, что при попытке передачи с длиной буфера, которая не является кратной шагу, передача прерывается с ошибкой STATUS_INVALID_PARAMETER, и на шине не происходит никакой активности. Шаг определяется следующим образом на основе DataBitLength:
   
ДлинаБитовДанных Шаг
4 - 8 1
9 - 16 2
17 - 32 4

Тесты проводятся для внешне подключенного mbed LPC1768. Mbed LPC1768 является популярной платформой прототипа микроконтроллера, которая может быть приобретена у различных онлайн-магазинов, включая Farnell, Digikey и Adafruit. Программирование mbed с использованием тестового образа встроенного ПО так просто, как перетаскивание и сброс образа встроенного ПО на устройство массового хранилища. Исходный код встроенного ПО доступен на сайте GitHub. Подробные инструкции по подготовке mbed и выполнению тестов приведены ниже.

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

   
спецификации
  • Device.BusController.SPI.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
    ожидаемое время выполнения (в минутах) 15
    Категория Развитие
    Тайм-аут (в минутах) 30
    Требуется перезагрузка неправда
    Требуется специальная конфигурация правда
    Тип автоматический

     

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

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

    выполнение теста

    Для выполнения тестов потребуется следующее оборудование:

    Сначала необходимо загрузить тестовое встроенное ПО на mbed:

    1. Подключите mbed LPC1768 к вашему ПК через USB. Он будет отображаться как съемный диск на компьютере.
    2. Откройте диск в проводнике
    3. Копирование c:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Test\x86\iot\busses-tester-mbed_LPC1768.bin на диск
    4. Нажмите кнопку на mbed, чтобы сбросить микроконтроллер

    Затем подключите плату mbed к контроллеру SPI, который вы тестируете. Чтобы включить mbed, вы можете подключить его через USB-порт к тестируемому устройству или подключить контакты VIN и GND непосредственно к контактам питания на тестируемом устройстве. Выполните следующие подключения между тестируемым устройством и mbed: (mbed pinout),

    1. Подключите контакт mbed 13 (P0.15/SCK0) к контакту SCK тестируемого устройства.
    2. Подключите пин-код mbed 30 (P0.4/CAP2.0) к пин-коду SCK на тестируемом устройстве (этот пин-код используется для точного измерения часов).
    3. Подключите вывод mbed 11 (P0.18/MOSI0) к выводу MOSI на проверяемом устройстве.
    4. Подключите пин-код mbed 12 (P0.17/MISO0) к пин-коду MISO на устройстве под тестом
    5. Подключите пин-код mbed 14 (P0.16/SSEL0) к пин-коду выбора микросхемы на устройстве в тестируемом режиме
    6. Подключите mbed GND к контакту GND на устройстве, которое тестируется.

    Теперь вы можете запланировать тесты в студии HLK.

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

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

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

    Вот как выполнить тесты в командной строке:

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

    2. Скопируйте Windows.Devices.LowLevel.UnitTests.dll из %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Тесты\<arch>\iot в c:\data на вашем устройстве.

    3. Telnet или SSH на вашем устройстве

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

    5. Выполните тесты:

      minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlk*
      

    Использование теста командной строки:

    minte\te windows.devices.lowlevel.unittests.dll [/name:test_name] [/p:SpiFriendlyName=friendly_name] [/p:ClockFrequency=clock_frequency] [/p:DataBitLength=data_bit_length] [/p:SpiMode=0|1|2|3] [/p:Length=length] [/p:WriteLength=write_length] [/p:ReadLength=read_length] [/p:ExtraClocks=extra_clocks] [/p:Verbose=true]
    
    • test_name — имя теста, который требуется запустить и который может включать символы-шаблоны. Примеры: /name:SpiHlk*, /name:SpiHlkTests::VerifyClockFrequency#metadataSet0
    • friendly_name — удобочитаемое имя контроллера SPI, который тестируется. Если опущено, используется первый перечисленный контроллер. Примеры: /p:SpiFriendlyName=SPI1
    • clock_frequency — принудительное использование тестом указанной частоты тактового генератора. По умолчанию частота часов поступает из тестовых данных, которые предназначены для предоставления покрытия по диапазону частот. Этот параметр должен быть опущен в обычных обстоятельствах. Пример: /p:ClockFrequency=15000000
    • data_bit_length — принудительно заставить тест использовать указанную длину бита данных. Пример: /p:DataBitLength=9
    • SpiMode — заставить тест использовать указанный режим SPI. Пример: /p:SpiMode=2
    • length — заставить тест использовать указанную длину буфера для передачи данных. Пример: /p:length=128
    • write_length — принудительно заставить тест TransferSequential использовать указанную длину буфера для части записи передачи. Пример: /p:WriteLength=8
    • read_length — принудительно заставить тест TransferSequential использовать указанную длину буфера для части чтения передачи. Пример: /p:ReadLength=16
    • extra_clocks — укажите корректировку количества часов в байтах, используемых тестами при вычислении ожидаемых часов активного времени для измерений производительности, обнаружения разрывов и проверки частоты часов. Например, контроллер SPI BCM2836 ждет лишний тактовый цикл после каждого байта, поэтому для компенсации этого поведения необходимо скорректировать измерения. Пример: /p:ExtraClocks=1.5
    • /p:Verbose=true — активировать подробный вывод. Это приведет к тому, что все буферы будут выгружаться в консоль в случае сбоя. По умолчанию отображается только первый байт несоответствия.

    Примеры:

    Список доступных тестов:

    minte\te windows.devices.lowlevel.unittests.dll /list
    

    Выполните тесты проверки ввода-вывода:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests*
    

    Выполните тесты обнаружения разрывов:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkGapTests*
    

    Запустите проверку тактовой частоты и тесты на шаг:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkTests*
    

    Выполните конкретный тест для конкретного экземпляра контроллера SPI:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests#2::VerifyTransferSequential#metadataSet9 /p:SpiFriendlyName=SPI1
    

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

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

    Параметры

    Имя параметра Описание параметра
    SpiFriendlyName Удобочитаемое имя контроллера SPI, который тестируется (например, SPI0).