共用方式為


需要 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 是熱門的微控制器原型設計平臺,可從各種線上零售商購買,包括 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的下一個更新
    預期執行時間 (分鐘) 15
    類別 部署
    ) 分鐘 (逾時 30
    需要重新開機 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. 將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: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) 。