共用方式為


需要 I2C WinRT IO 壓力測試 (EEPROM)

I2C 測試會透過 Windows.Devices.I2c WinRT API 對使用者模式公開的 I2C 控制器執行功能和壓力測試。 測試分成兩個部分:基本功能和壓力測試,以及進階功能測試。 基本功能測試的測試範圍包括:

  • 驗證具有指定易記名稱的 I2C 控制器可從 usermode 存取。
  • 驗證資料在頻率速度和緩衝區長度範圍內正確寫入,最多 8 個位元組 (EEPROM 頁面大小) 。
  • 驗證資料在時脈速度和緩衝區長度範圍內正確讀取。
  • 確認 write-restart-read 序列 (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 是熱門的微控制器原型平臺,可從各種線上零售商購買,包括 SparkfunDigikeyAdafruit。 更新 mbed 的韌體就像拖放檔案一樣簡單。 韌體原始程式碼可在 github上取得。 以下提供準備 mbed 和執行測試的指示。

測試詳細資料

   
規格
  • Device.BusController.I2C.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的下一個更新
    預期的執行時間 (以分鐘為單位) 240
    類別 部署
    以分鐘為單位的逾時 () 10000
    需要重新開機 false
    需要特殊設定 true
    類型 automatic

     

    其他檔

    此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難排解資訊,可在下列主題中找到 () :

    執行測試

    執行基本功能和壓力測試

    您需要下列硬體才能執行測試:

    連接 EEPROM,如下圖所示,並將 SDA 和 SCL 連接到受測裝置。

    i2c eeprom 圖解

    您現在可以從 HLK 管理員排程基本功能和壓力測試。

    執行進階功能測試

    進階功能測試會驗證 NACKing 行為、無回應匯流排狀況、時鐘延展和重複啟動。 測試需要執行自訂韌體的 mbed LPC1768,才能連線到受測裝置。 執行測試之前,您必須將 HLK 韌體載入 mbed LPC1768。 以下是更新韌體的方式:

    1. 將透過 USB 的 mbed LPC1768 插入您的電腦。 它會顯示為您電腦上的可移除磁片磁碟機。
    2. 在檔案總管中開啟磁片磁碟機
    3. 將 c:\Program Files (x86) \Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin 複製到 mbed
    4. 按下 mbed 上的按鈕以重設微控制器

    接下來,將 mbed 連線到受測裝置。 將 mbed over USB 插入到受測裝置。 然後,將 I2C 連線 (mbed 釘選) ,

    1. 將 mbed pin 9 (P0.0/SDA) 連線到受測裝置上的 SDA 針腳
    2. 將 mbed pin 10 (P0.1/SCL) 連線到受測裝置上的 SCL 針腳
    3. 將 mbed GND 連線到受測裝置上的 GND 針腳

    mbed 在 SDA 和 SCL 線路上啟用了內部提取閥,而且不需要外部提取閥。

    您現在可以從 HLK 管理員排程進階功能測試。

    疑難排解

    如需 HLK 測試失敗的一般疑難排解,請參閱 針對 Windows HLK 測試失敗進行疑難排解

    建議您在命令列上執行測試,以深入瞭解失敗,並快速逐一查看解決方案。 以下是如何在命令列上執行測試:

    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 Windows.Devices.LowLevel.UnitTests.dll。

    3. Telnet 或 ssh 連線到您的裝置

    4. 將目錄變更為 c:\data

    5. 執行測試:

      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*' and not (@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) 。
    有效期間 指定執行每個壓力測試的時間長度。 例如 30s、1m、1h、1d