Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тесты I2C выполняют функциональное и стресс-тестирование контроллеров I2C, доступных в пользовательском режиме через API Windows.Devices.I2c WinRT. Тесты разделены на две части : основные функциональные и стрессовые тесты, а также расширенные функциональные тесты. Область тестирования основных функциональных тестов включает:
- Проверка того, что контроллер I2C с указанным понятным именем доступен в пользовательском режиме.
- Проверка правильности записи данных в диапазоне скоростей часов и длины буфера до 8 байт (размер страницы EEPROM).
- Проверка правильности чтения данных по диапазону скоростей часов и длины буфера.
- Проверка правильности выполнения последовательностей запись-перезапуск-чтение (WriteRead) в диапазоне тактовых частот и длины буфера.
- Проверка того, что при попытке записи, чтения или WriteRead на адрес ведомого, который не подтвержден, драйвер возвращает STATUS_NO_SUCH_DEVICE. Это сообщается I2cDevice::Write/Read/WriteRead() как HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), а I2cDevice::WritePartial/ReadPartial/WriteReadPartial() как I2cTransferStatus::SlaveAddressNotAcknowledged.
- Убедитесь, что API и драйверы работают правильно в условиях стресса. Стресс-тесты в течение длительного времени одновременно записывают в две EEPROM и считывают из них, используя отдельные дескрипторы устройств.
Область тестирования расширенных функциональных тестов включает:
- Убедитесь, что данные записываются правильно для длины буфера до 16384 байтов.
- Проверка того, что условие перезапуска I2C создается в ответ на последовательность WriteRead.
- Убедитесь, что при записи байтов в подчиненном устройстве NAK драйвер завершает запрос с помощью STATUS_SUCCESS и сообщает фактическое количество байтов, записанных с помощью сведений о запросе. Это называется частичной передачей и сообщается функциями WritePartial() и WriteReadPartial() как I2cTransferStatus::PartialTransfer.
- Проверка, что растяжение сигнала до 500 мс допускается и не вызывает сбоя передачи.
- Убедитесь, что если ведомое устройство удерживает часовую линию в низком состоянии на продолжительное время (10+ секунд), драйвер завершает передачу не более чем через 10 секунд с ошибочным кодом. Код сбоя должен быть STATUS_IO_TIMEOUT, но это не проверяется по причинам совместимости.
Основные функциональные тесты и стресс-тесты выполняются с двумя внешними подключенными EEPROM. Расширенные функциональные тесты выполняются на mbed LPC1768, работающем с пользовательским встроенным ПО. Mbed LPC1768 является популярной платформой прототипа микроконтроллера, которая может быть приобретена у различных онлайн-магазинов, включая Farnell, Digikey и Adafruit. Обновление встроенного ПО mbed так же просто, как перетаскивание и удаление файла. Исходный код встроенного ПО доступен на сайте GitHub. Ниже приведены инструкции по подготовке mbed и выполнению тестов.
Сведения о тестировании
спецификации |
|
платформы | |
Поддерживаемые Выпуски |
|
ожидаемое время выполнения (в минутах) | 5 |
Категория | Развитие |
Тайм-аут (в минутах) | 10 |
Требуется перезагрузка | неправда |
Требуется специальная конфигурация | правда |
Тип | автоматический |
Дополнительная документация
Тесты в этой области функций могут содержать дополнительную документацию, включая предварительные требования, настройку и устранение неполадок, которые можно найти в следующих разделах:
выполнение теста
Выполнение основных функциональных и стрессовых тестов
Для выполнения тестов потребуется следующее оборудование:
- Atmel AT24HC serial EEPROMs qt. 2
- 10k резистор qt. 2
- Макет
- Провода
Подключите EEPROM, как показано на следующей схеме, и подключите SDA и SCL к тестируемому устройству.
Теперь вы можете запланировать базовые функциональные и стрессовые тесты от менеджера HLK.
Выполнение расширенных функциональных тестов
Расширенные функциональные тесты проверяют поведение NACKing, зависания условий шины, растяжения часов и повторяющихся запусков. Для тестов требуется, чтобы устройство mbed LPC1768 с пользовательским встроенным ПО было подключено к тестируемому устройству. Перед выполнением тестов необходимо загрузить встроенное ПО HLK на LPC1768 mbed. Вот как обновить встроенное ПО:
- Подключите mbed LPC1768 к вашему ПК через USB. Он будет отображаться как съемный диск на компьютере.
- Откройте диск в проводнике
- Скопируйте c:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin в mbed
- Нажмите кнопку на mbed, чтобы сбросить микроконтроллер
Затем подключите устройство к тестируемой сети mbed. Подключите mbed к тестируемому устройству через USB. Затем сделайте подключения I2C (закрепление mbed),
- Подключите пин-код mbed 9 (P0.0/SDA) к пин-коду SDA на устройстве под тестом
- Подключите вывод mbed 10 (P0.1/SCL) к выводу SCL на тестируемом устройстве.
- Подключите mbed GND к контакту GND на устройстве, которое тестируется.
В mbed включены внутренние резисторы подтяжки на линиях SDA и SCL, поэтому для них не требуются внешние резисторы подтяжки.
Теперь в менеджере HLK можно запланировать расширенные функциональные тесты.
устранение неполадок
Общие сведения об устранении неполадок тестов HLK см. в разделе Устранение неполадок тестов Windows HLK.
Мы рекомендуем выполнять тесты в командной строке, чтобы получить представление о сбоях и быстро выполнить итерацию решений. Вот как выполнить тесты в командной строке:
Копируйте %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF<\arch>\MinTe в c:\data\minte
Скопируйте Windows.Devices.LowLevel.UnitTests.dll из %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Тесты\<arch>\iot в c:\data на вашем устройстве.
Telnet или SSH на вашем устройстве
Изменение каталогов на c:\data
Выполните тесты:
minte\te windows.devices.lowlevel.unittests.dll /name:I2c*
Использование теста командной строки:
minte\te windows.devices.lowlevel.unittests.dll [/name:test_name] [/select:select_clause] [/p:I2cFriendlyName=friendly_name] [/p:Duration=duration]
- test_name — имя теста, который требуется запустить и который может включать символы-шаблоны. Примеры: /name:I2c*, /name:I2cEepromWriteTests#metadataSet0::VerifyWrite#metadataSet0
- select_clause — условие выборки TAEF. Пример: /select:"@name='I2c*' и not(@name='I2cTestsEx*')"
- friendly_name — удобное имя тестируемого контроллера I2C. Если опущено, используется первый перечисленный контроллер. Примеры: /p:I2cFriendlyName=I2C0
- длительность - как долго выполнять стресс-тесты. Примеры: /p:Duration=10s (10 секунд), /p:Duration=1m (1 минута), /p:Duration=2h (2 часа), /p:Duration=1d (1 день)
Примеры.
Чтобы выполнить основные функциональные тесты, выполните следующие действия.
minte\te windows.devices.lowlevel.unittests.dll /select:"@name='I2c*' and not(@name='I2cTestsEx*')"
Чтобы выполнить расширенные функциональные тесты, выполните следующие действия.
minte\te windows.devices.lowlevel.unittests.dll /name:I2cTestsEx::*
Чтобы выполнить тесты с определенным экземпляром контроллера I2C, передайте удобочитаемое имя в параметр теста I2cFriendlyName.
minte\te windows.devices.lowlevel.unittests.dll /name:I2c* /p:I2cFriendlyName=I2C0
Чтобы выполнить определенный тест, передайте полное имя теста параметру /name:
minte\te windows.devices.lowlevel.unittests.dll /name:I2cNonexistentSlaveAddressTests::TestWriteRead
Чтобы запустить стресс-тесты на рекомендуемую продолжительность 8 часов, выполните
minte\te windows.devices.lowlevel.unittests.dll /name:I2cStressTests::StressIoConcurrent /p:Duration=8h
Средство, которое может помочь в устранении неполадок вручную, — I2cTestTool. I2cTestTool — это простая программа для взаимодействия с I2C из командной строки.
Дополнительные сведения
Параметры
Имя параметра | Описание параметра |
---|---|
I2cFriendlyName | Имя дружелюбного контроллера I2C, который проходит тестирование (например, I2C0). |