利用視覺化功能測試執行緒網路

一、簡介

5abd22afa2f2ee9a.png

什麼是 Thread、OpenThread、OTNS 和 Si 絲?

Thread 是一種以 IP 為基礎的低功率無線網狀網路通訊協定,可讓裝置和裝置和雲端之間的通訊安全無虞。執行緒網路可配合拓撲變更進行調整,避免單點故障。

Google 發布的 OpenThread 是由 Thread 的開放原始碼實作。儘管程式碼較小,但記憶體空間有限,OpenThread 仍支援 Thread 規格中定義的所有功能。

OpenThread Network 模擬工具 (OTNS) 可以在 posix 平台上執行模擬的 OpenThread 節點,用於模擬 Thread 網路。OTNS 提供簡單易用的網頁介面 (OTNS-Web),方便您視覺化及操作模擬 Thread 網路。

Silk 是全自動化的測試平台,可驗證真實裝置的 OpenThread 函式、功能和系統效能。

須知事項

  • OpenThread 的功能驗證架構:Slk
  • 為已啟用 OTNS 功能的真實裝置建構 OpenThread
  • 使用 OTNS-Web 介面監控執行絲絲測試案例時產生的執行緒網路狀態

這個程式碼研究室著重於將 Silk 與 OTNS 搭配使用。但不適用絲 lk 和 OTNS 的其他功能。

事前準備

硬體:

  • 6 個 Nordic Semiconductor nRF52840 開發板
  • 6 個 USB 轉 Micro-USB 傳輸線連接主機板
  • USB 集線器

軟體:

需求條件:

2. 需求條件

完成先前的基本程式碼研究室

檢查套件必備條件

我們要確保所有必備條件都符合。

  1. 執行 which otns 來檢查 $PATH 中的 otns 執行檔是否可供搜尋。
  2. 請執行 which wpantund,確保 wpantund 可供使用。
  3. 確認 ARM GNU 工具鍊、J-Link 和 nrfjprog 套件均已可用。
  4. 確認能夠建立 OpenThread 二進位檔,然後在 openthread 資料夾下執行 make -f examples/Makefile-nrf52840

注意:請參閱連結說明文件中的設定指南。需求條件 1 來自使用 OTNS 模擬執行緒網路,另一個則是由使用 nRF52840 主機和 OpenThread 建立執行緒網路

3. 絲 setup 設定

如要複製 Silk 並設定環境,請在來源目錄下執行下列指令:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

定義硬體設定檔

如要允許 Silk 收集已連結至電腦的測試硬體資源,請使用下列格式定義 hwconfig.ini 檔案:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

名為 usbinfo 的工具屬於 Silk 的一部分,可用於找出介面序號和 USB 介面號碼。DutSerial 是印在晶片上的 SN 號碼,或是由 usbinfo 展示的 J-Link 產品。

[DEFAULT]」部分中的 LayoutCenterLayoutRadius 欄位會定義裝置在網頁版 UI 中以視覺化方式呈現的版面配置。建議您從設定的值開始著手,

接著,為每部測試裝置定義一個專區,並提供相關的硬體資訊。

4. 編譯已啟用 OTNS 的 OpenThread

建立映像檔和閃爍

根據預設,OpenThread 裝置不會發出 OTNS 相關訊息。如要讓開發板發出狀態訊息以記錄 OTNS 視覺化所需的介面,請在 OpenThread 來源目錄下執行下列指令來建立 FTD 映像檔,並轉換為十六進位格式。

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

如要閃爍 Jamboard,請按照建立執行緒網路程式碼研究室中步驟 4 的說明,使用 nrfjprog。完成上述步驟後,透過 nRF USB 連接埠將所有主機板連接到主機電腦。同一組 USB 轉 Micro-USB 傳輸線可中斷 J-Link 連接埠的連接,並連接到 nRF52840 開發電路板的 nRF USB 連接埠。因此,只要在這 6 條傳輸線上進行測試即可。為方便起見,請使用 12 條傳輸線並連接兩個連接埠。

5. 使用實際模式執行 OTNS 伺服器

使用預設參數執行 OTNS,可讓使用者模擬會話串網路。如要將其當做實際實體網路的視覺化工具使用,請按照下列步驟操作:

otns -raw -real -ot-cli otns-silk-proxy

這些引數會指示 OTNS 使用 gRPC 和 UDP 訊息來說明 Thread 網路的視覺化呈現方式,而不是執行多個 ot-cli 程序來模擬網路。瀏覽器應該會以空白畫布自動開啟視覺化網頁。

4dd5b41bf7e71334.png

6. 執行支援 OTNS 的絲 lk 檢測案例

Silk 是完全自動化的測試平台,可驗證實際裝置的 OpenThread 函式、功能和系統效能。README 專案的操作說明適用於使用方法。

位於 silk/unit_testssilk_run_test.py 檔案可讓您立即開始使用。Silk 在執行測試案例時提供 OTNS 支援。由於 OTNS 實際模式服務目前已在本機執行,因此我們只需修改 silk_run_test.py 檔案 (包含您想使用輸出記錄檔、輸入測試指令碼和 hwconfig.ini 檔案的適當位置) 即可。-s localhost 引數會指示 Silk 傳送 OTNS 訊息至 localhost

舉例來說,您可以使用對 silk_run_test.py 檔案進行以下修改,來建立名為 ot_test_form_network.py 的測試。/opt/openthread_test/ 是 Silk 用於記錄檔輸出和設定檔的預設路徑,但您可以使用任何路徑。

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

表單網路的拓撲視覺化將顯示在 OTNS 網頁版 UI 上。

ee443b66e0a6620b.png

左上角會顯示視覺化統計資料、OT 版本和測試標題。視窗左下方會顯示記錄視窗的控制項。一開始,系統會新增節點,但不會建立網路。隨著測試的進行,每個節點的模式和角色都會改變,並且形成連結。

5c38e2c72519e620.png

7. 恭喜

恭喜!您已成功在實體執行緒裝置上執行 a 絲測試,並使用 OTNS 以視覺化方式呈現結果!

您執行開發板時使用了採用 OTNS 支援的韌體,使用開發板執行。主板回報使用者的狀態,藉此記錄並匯總所有裝置,然後傳送給 OTNS 服務 (內含其他測試資訊)。以即時模式執行 OTNS 會以視覺化方式呈現網頁介面中的執行緒網路。

後續步驟

嘗試執行 Silk 套件包含的其他 OpenThread 測試案例。

延伸閱讀

歡迎前往 openthread.ioSilk 探索各種 OpenThread 資源。

參考說明文件