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


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

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

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

Тесты выполняются для подключенного извне mbed LPC1768. Mbed LPC1768 — это популярная платформа создания прототипов микроконтроллеров, которую можно приобрести у различных интернет-магазинов, включая Sparkfun, 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
    Требуется перезагрузка false
    Требуется специальная конфигурация Да
    Тип automatic

     

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

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

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

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

    • mbed LPC1768
    • монтажная плата;
    • Провода перемычки

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

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

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

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

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

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

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

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

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

    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\Tests\<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=1500000
    • 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).