如要自動執行認證測試,必須進行額外設定。
以下所有安裝和設定步驟都會在執行 GRL Test Harness 軟體的 Windows 電腦上進行。請先下載並安裝最新版 GRL Thread Test Harness,再繼續操作。
安裝完成後,有兩種自動化方法可供測試裝置 (DUT) 使用:
OpenThread Harness 自動化工具
安裝
- 請安裝下列軟體:
- Python 2.7
- Git for Windows (強烈建議支援 Bash)
- 複製 OpenThread 存放區,取得自動化指令碼:
git clone https://github.com/openthread/openthread - 安裝 Python 需求條件:
cd tools/harness-automationpip install -r requirements.txt - 安裝 Google Chrome 和 ChromeDriver。
設定
- 為自動化工具建立設定檔:
cp autothreadharness/settings_sample.py autothreadharness/settings.py - 按照檔案中的操作說明,更新該新設定檔。
- 在 Test Harness 設定檔中新增下列參數,該檔案位於
C:\GRL\Thread1.1\Config\Configuration.ini:BrowserAutoNavigate = False
支援混合測試平台
Harness 自動化工具也支援混合測試平台,也就是每個測試案例中使用的參考裝置是混合裝置,而非全部都是相同裝置。舉例來說,您不必為所有測試案例使用 32 個執行 OpenThread 的 TI CC2538 板,而是可視需要為每個測試案例混用所有四個 Thread 參考裝置。
如要使用混合式測試平台,必須進行額外設定:
- 在 Test Harness 設定檔 (位於
C:\GRL\Thread1.1\Config\Configuration.ini) 中新增下列額外參數:EnableDeviceSelection = True
- 從 Thread Group 下載拓撲設定檔。
將這個檔案新增為
TopologyConfig.txt至C:\GRL\Thread1.1\Thread_Harness\TestScripts。這個檔案會詳細說明每個測試案例中,各個角色應使用的參考裝置。
您可以修改 Thread Group 提供的拓撲設定檔,用於其他混合床配置,但如要取得正式認證,必須使用原始設定。
拓撲設定檔中參考裝置可用的有效值如下:
| 拓撲設定檔中的值 | 測試控管工具參考裝置 |
|---|---|
ARM |
ARM:搭載 Firefly 6LoWPAN Shield 的 NXP FRDM-K64F |
NXP |
NXP(Freescale):USB-KW24D512 轉接器 |
OpenThread |
OpenThread:TI CC2538DK |
SiLabs |
Silabs:EM358x USB 隨身碟 |
拓撲設定檔中的每個測試案例項目都必須獨立為一行,並採用 role:device 組合格式,如下所示:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
測試控管工具自動 DUT 模式
GRL Test Harness 軟體提供進階自動探索功能 (Auto DUT),可加快 Thread 參考堆疊供應商的驗證程序。
OpenThread 提供 Thread 主機控制器介面 (THCI) 範例,可讓測試機架控制元件或產品,就像控制其中一個參考平台一樣。根據特定平台的序列埠特性,DUT 可能會:
做為現有的 OpenThread 參考平台
如果 DUT 的序列埠在 115200 8-N-1 設定下運作,且裝置在每次重設實體裝置後都能正確回應 (例如確認裝置與 Windows 電腦的連線有效),則平台可以使用 OpenThread THCI 工具。這項工具可讓裝置在測試期間做為 OpenThread 參考平台。
- 如果 GRL Test Harness 已開啟,請將其關閉。
- 將裝置連接至 Windows 電腦。
- 使用 Python pySerial 模組尋找裝置序列埠硬體 ID:
- 在 Windows 電腦上安裝 pySerial。
- 在 Windows 指令列上使用 Python,列舉連線至機器的所有硬體 ID (VID 和 PID)。在這個輸出內容中,有一部裝置已連線,且 ID 為 VID=1366 和 PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - 如果您已知道 COM 連接埠,可以使用其他指令。舉例來說,如果 COM 埠為
COM10:python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"['USB\VID_1366+PID_1015+MI_00']
- 更新黃金裝置清單:
- 開啟
C:\GRL\Thread1.1\Config\Configuration.ini。 - 在
GoldenDeviceHardwareIds陣列中更新 OpenThread 群組,並加入裝置的 VID 和 PID:GoldenDeviceHardwareIds = {
'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
'SiLabs': 'VID:PID=10C4:8A5E',
'ARM': 'VID:PID=0D28:0204',
'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
- 開啟
- 啟用自動 DUT 模式。
做為新的參考平台
如果 DUT 的序列埠無法在正確的序列埠設定下運作,或裝置在重設實體裝置後無法正確回應 (在重設後 3 到 6 秒內輸出無法解讀的程式碼),則可以自訂 OpenThread THCI,將裝置視為 Test Harness 中的新平台。
舉例來說,如要使用 Nordic Semiconductor nRF52840 平台自訂 THCI:
- 如果 GRL Test Harness 已開啟,請將其關閉。
根據目標裝置的 UART 特性修改
/tools/harness-thci/OpenThread.py。修改項目可能因目標裝置而異。以 Nordic nRF52840 平台為例:- 將
OpenThread.py檔案重新命名為nRF52840.py。 將前三個「OpenThread」改為「nRF52840」:
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):變更序列埠參數:
def _connect(self): print 'My port is %s' % self.port if self.port.startswith('COM'): self.handle = serial.Serial(self.port, 115200, timeout=0) time.sleep(1) self.handle.write('\r\n') time.sleep(0.1) self._is_net = False elif ':' in self.port: host, port = self.port.split(':') self.handle = socket.create_connection((host, port)) self.handle.setblocking(0) self._is_net = True else: raise Exception('Unknown port schema') self.UIStatusMsg = self.getVersionNumber()變更睡眠時間,消除裝置重設後無法讀取程式碼輸出內容的影響:
def powerDown(self): """power down the Thread device""" print '%s call powerDown' % self.port self._sendline('reset') self.isPowerDown = True time.sleep(8) # New addition def reboot(self): """reset and rejoin to Thread Network without any timeout Returns: True: successful to reset and rejoin the Thread Network False: fail to reset and rejoin the Thread Network """ print '%s call reboot' % self.port try: self._sendline('reset') self.isPowerDown = True time.sleep(8) # Updated from 3 to 8 def reset(self): """factory reset""" print '%s call reset' % self.port try: self._sendline('factoryreset') time.sleep(8) # Updated from 3 to 8 self._read() def resetAndRejoin(self, timeout): """reset and join back Thread Network with a given timeout delay Args: timeout: a timeout interval before rejoin Thread Network Returns: True: successful to reset and rejoin Thread Network False: fail to reset and rejoin the Thread Network """ print '%s call resetAndRejoin' % self.port print timeout try: self._sendline('reset') self.isPowerDown = True time.sleep(timeout) if timeout < 8: # Sleep a bit longer if the timeout is short time.sleep(8 - timeout)
- 將
將修改後的
nRF52840.py檔案複製到C:\GRL\Thread1.1\Thread_Harness\THCI將新平台資訊新增至測試架構:
- 建立圖示 (PNG 或 JPG 格式),方便區分平台,然後複製到
C:\GRL\Thread1.1\Web\images。 使用新的
DEVICE區段更新C:\GRL\Thread1.1\Web\data\deviceInputFields.xml,其中thumbnail參數是圖示檔案:<DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840"> <ITEM label="Serial Line" type="text" forParam="SerialPort" validation="COM" hint="eg: COM1">COM </ITEM> <ITEM label="Speed" type="text" forParam="SerialBaudRate" validation="baud-rate" hint="eg: 115200">115200 </ITEM> </DEVICE>
- 建立圖示 (PNG 或 JPG 格式),方便區分平台,然後複製到
將裝置連接至 Windows 電腦。
使用 Python pySerial 模組尋找裝置序列埠硬體 ID:
- 在 Windows 電腦上安裝 pySerial。
- 在 Windows 指令列上使用 Python,列舉連線至機器的所有硬體 ID (VID 和 PID)。在這個輸出內容中,有一部裝置已連線,且 ID 為 VID=1366 和 PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - 如果您已知道 COM 連接埠,可以使用其他指令。舉例來說,如果 COM 埠為
COM10:python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"['USB\VID_1366+PID_1015+MI_00']
更新黃金裝置清單:
- 開啟
C:\GRL\Thread1.1\Config\Configuration.ini。 - 在
GoldenDeviceHardwareIds陣列中新增平台群組,並提供裝置的 VID 和 PID:GoldenDeviceHardwareIds = {
'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
'SiLabs': 'VID:PID=10C4:8A5E',
'ARM': 'VID:PID=0D28:0204',
'OpenThread':'VID:PID=10C4:EA60',
'nRF52840': 'VID:PID=1366:1015'}
- 開啟
啟用 Auto DUT 模式
完成上述任一設定選項後:
- 開啟 GRL 測試線束,裝置/連接埠現在會顯示為新的參考裝置。
- 在「支援的硬體」清單下方,選取「啟用自動 DUT 裝置選取」核取方塊。
- 選取目標裝置/連接埠下方的「設為 DUT」單選按鈕,將裝置設為 DUT。