需要 I2C WinRT 進階功能測試 (mbed LPC1768)
I2C 測試會透過 Windows.Devices.I2c WinRT API 對使用者模式公開的 I2C 控制器執行功能和壓力測試。 測試分成兩個部分:基本功能和壓力測試,以及進階功能測試。 基本功能測試的測試範圍包括:
- 驗證具有指定易記名稱的 I2C 控制器可從 usermode 存取。
- 驗證資料在頻率速度和緩衝區長度範圍內正確寫入, (EEPROM 頁面大小) 最多 8 個位元組。
- 確認資料在時脈速度和緩衝區長度範圍內正確讀取。
- 確認寫入-重新開機-讀取序列 (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::P artialTransfer。
- 驗證允許最多 500 毫秒的時鐘延展,且不會造成傳輸失敗。
- 驗證當從屬裝置在延長期間 (10 秒) 的時鐘線偏低時,驅動程式最多會在 10 秒內完成傳輸,並出現失敗碼。 失敗碼應該STATUS_IO_TIMEOUT,但基於相容性原因未驗證。
基本功能測試和壓力測試會針對兩個外部連線的 EEPROM 執行。 進階功能測試會針對執行自訂韌 體的 mbed LPC1768 執行。 mbed LPC1768 是熱門的微控制器原型設計平臺,可從各種線上零售商購買,包括 Sparkfun、 Digikey和 Adafruit。 更新 mbed 的韌體就像拖放檔案一樣簡單。 韌體原始程式碼可在 github上取得。 以下提供準備 mbed 和執行測試的指示。
測試詳細資料
規格 |
|
平台 | |
支援的版本 |
|
預期執行時間 (分鐘) | 15 |
類別 | 部署 |
) 分鐘 (逾時 | 30 |
需要重新開機 | false |
需要特殊設定 | true |
類型 | automatic |
其他檔
此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難排解資訊,可在下列主題中找到 () :
執行測試
執行基本功能和壓力測試
您需要下列硬體才能執行測試:
- Atmel AT24HC 序列 EEPROM 第 2 季
- 10k 電壓第 2 季
- 試驗電路板
- 管線
連線 EEPROM,如下圖所示,並將 SDA 和 SCL 連線到受測裝置。
您現在可以排程 HLK 管理員的基本功能和壓力測試。
執行進階功能測試
進階功能測試會驗證 NACKing 行為、無回應匯流排條件、時鐘延展和重複啟動。 測試需要執行自訂韌體的 mbed LPC1768,才能連線到受測裝置。 執行測試之前,您必須將 HLK 韌體載入 mbed LPC1768。 以下是如何更新韌體:
- 透過 USB 插入 mbed LPC1768 到您的電腦。 它會顯示為電腦上的可移除磁片磁碟機。
- 在檔案總管中開啟磁片磁碟機
- 將 c:\Program Files (x86) \Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin 複製到 mbed
- 按下 mbed 上的按鈕以重設微控制器
接下來,將 mbed 連線到受測裝置。 將 MBed over USB 插入受測裝置。 然後,讓 I2C 連線 (mbed 針腳) ,
- 將 mbed pin 9 (P0.0/SDA) 連線到受測裝置上的 SDA 針腳
- 將 mbed pin 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\Tests\ < 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*',而不是 (@name='I2cTestsEx*') 」
- friendly_name - 受測之 I2C 控制器的易記名稱。 如果省略,則會使用第一個列舉控制器。 範例:/p:I2cFriendlyName=I2C0
- duration - 執行壓力測試的時間長度。 範例:/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) 。 |