Testowanie wątku z użyciem wizualizacji

1. Wprowadzenie

5abd22afa2f2ee9a.png

Co to są Thread, OpenThread, OTNS i Jedwab?

Thread to oparty na adresie IP protokół sieci bezprzewodowej sieci o niskiej mocy, który umożliwia bezpieczną komunikację między urządzeniami i między urządzeniami. Sieci wątków mogą dostosowywać się do zmian w topologii, aby uniknąć pojedynczego punktu awarii.

OpenThread to opracowany przez Google projekt open source oprogramowania Thread. Mimo małego rozmiaru kodu i zasięgu pamięci OpenThread obsługuje wszystkie funkcje określone w specyfikacji Thread.

Za pomocą symulatora sieci OpenThread (OTNS) można symulować sieci typu Thread, przeprowadzając symulowane węzły OpenThread na platformach POSIX. OTNS oferuje łatwy w użyciu interfejs internetowy (OTNS-Web), który umożliwia wizualizację i obsługę symulowanych sieci Thread.

Silk to w pełni zautomatyzowana platforma testowa do weryfikowania wydajności funkcji, funkcji i systemu OpenThread na prawdziwych urządzeniach.

Czego się nauczysz

  • Platforma weryfikacji funkcji OpenThread: jedwab
  • Tworzenie pakietu OpenThread dla prawdziwych urządzeń z włączoną funkcją OTNS
  • Używaj interfejsu OTNS-Web do monitorowania stanu sieci typu Thread utworzonych przez uruchomienie przypadków testowych jedwabiu

Ćwiczenia z programowania koncentrują się na korzystaniu z jedwabiu z OTNS. Inne funkcje Silk i OTNS nie są brane pod uwagę.

Czego potrzebujesz

Sprzęt:

  • 6 nord północnych
  • 6 kabli USB do micro-USB do podłączenia płyt
  • hub USB

Oprogramowanie:

  • Linux x86_64.
  • Git (Git).
  • Wersja 1.11+.
  • Przeglądarka. OTNS-Web wyświetla symulacje w przeglądarce.

Wymagania wstępne:

2. Wymagania wstępne

Ukończ wcześniejsze podstawowe ćwiczenia z programowania

Sprawdzanie wymagań wstępnych

Upewnijmy się, że spełnione są wszystkie wymagania wstępne.

  1. Uruchom plik which otns, by sprawdzić, czy plik wykonywalny otns można wyszukać w $PATH.
  2. Uruchom plik which wpantund, aby upewnić się, że wpantund jest dostępny.
  3. Upewnij się, że dostępne są łańcuch narzędzi ARM GNU, pakiety J-Link i nrfjprog.

Uwaga: aby uzyskać wskazówki dotyczące konfiguracji, zapoznaj się z dokumentacją. Warunek wstępny 1 pochodzi od symulowania sieci wątków przy użyciu OTNS, a inne z Build a Thread network with nRF52840 boards and OpenThread.

3. Konfiguracja jedwabiu

Aby sklonować Silk i skonfigurować środowisko, uruchom te polecenia w katalogu źródłowym:

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

Zdefiniuj plik konfiguracji sprzętu

Aby umożliwić narzędziu Silk zbieranie dostępnych zasobów sprzętowych połączonych z Twoim komputerem, zdefiniuj plik hwconfig.ini w tym formacie:

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

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

W jednym z Jedwab jest zainstalowane narzędzie o nazwie usbinfo, które pozwala sprawdzić numer seryjny interfejsu i numer interfejsu USB. DutSerial jest numerem SN wydrukowanym na elemencie lub wyświetlanym przez usbinfo w przypadku produktów J-Link.

Pola LayoutCenter i LayoutRadius w sekcji [DEFAULT] określają kształt układu podczas wizualizacji urządzeń w interfejsie internetowym. Warto zacząć od tych wartości.

Następnie definiuje sekcję dla każdego urządzenia testowego i podaje odpowiednie informacje o sprzęcie.

4. Kompilowanie OpenThread z włączoną usługą OTNS

Obraz budynku i migotanie

Domyślnie urządzenia OpenThread nie emitują wiadomości związanych z OTNS. Aby umożliwić płytom deweloperskim wysyłanie komunikatów o stanie do interfejsów logu niezbędnych do wizualizacji OTNS, uruchom poniższe polecenie w katalogu źródłowym OpenThread w celu utworzenia obrazu FTD i przekształcenia go w format szesnastkowy.

$ 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

Aby dodać tablice, wykonaj instrukcje z kroku 4 ćwiczenia z programowania dotyczące sieci wątków i wykorzystaj nrfjprog. Następnie podłącz wszystkie tablice przez port USB nRF do hosta. Ten sam zestaw kabli USB do micro-USB można odłączyć od portów J-Link i podłączyć do portów USB nRF nRF52840. Dzięki temu wystarczy wykonać 6 testowych kabla. Aby uniknąć problemów, użyj 12 kabli i podłącz je do obu portów.

5. Uruchamianie serwera OTNS w trybie prawdziwym

Uruchomienie OTNS z parametrami domyślnymi pozwala symulować sieć typu Thread. Aby użyć jej jako narzędzia do wizualizacji w rzeczywistej sieci fizycznej, uruchom ją za pomocą:

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

Te argumenty informują OTNS, że powinny zostać wyświetlone wiadomości gRPC i UDP, które opisują, jak powinna być wizualna sieć Thread, zamiast przeprowadzać symulację wielu procesów ot-cli. Przeglądarka powinna automatycznie otworzyć stronę wizualizacji z pustym obszarem roboczym.

4dd5b41bf7e71334.png

6. Uruchamianie Jedwabnych przypadków testowych z obsługą OTNS

Silk to w pełni zautomatyzowana platforma testowa do weryfikowania wydajności, funkcji i wydajności systemu OpenThread na rzeczywistych urządzeniach. Instrukcje korzystania z README znajdziesz w jego projekcie.

Plik silk_run_test.py dostępny pod adresem silk/unit_tests ułatwi Ci zadanie. Silk zapewnia obsługę OTNS podczas uruchamiania zgłoszenia testowego. Usługa OTNS w trybie rzeczywistym działa już lokalnie, więc musimy tylko zmodyfikować plik silk_run_test.py, podając odpowiednie lokalizacje dla pliku dziennika wyjściowego, wejściowych testów testowych i pliku hwconfig.ini. Argument -s localhost informuje Silk, że ma wysyłać wiadomości OTNS na adres localhost.

Możesz na przykład przeprowadzić test o nazwie ot_test_form_network.py, korzystając z tych modyfikacji pliku silk_run_test.py. /opt/openthread_test/ to domyślna ścieżka, której używa Silk na potrzeby danych wyjściowych i pliku konfiguracji, ale możesz użyć dowolnej ścieżki.

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)

Topologia wizualizacji sformatowanej sieci pojawi się w interfejsie internetowym OTNS.

ee443b66e0a6620b.png

W lewym górnym rogu znajdziesz statystyki wizualizacji, wersję OT i tytuł testu. W lewym dolnym rogu znajdują się elementy sterujące oknem dziennika wyświetlane po prawej stronie. Początkowo węzły są dodawane, ale nie jest tworzona sieć. Wraz z testem zmienia się tryb i rola każdego węzła, a także tworzone są połączenia.

5c38e2c72519e620.png

7. Gratulacje

Gratulacje, udało Ci się przeprowadzić test jedwabiu na fizycznych urządzeniach z wątkami i wizualizować go za pomocą OTNS.

Przeprowadzono test jedwabiu przy użyciu płytek programistycznych, które zawierają oprogramowanie układowe z obsługą OTNS. Zarządy raportują stan do serwera Silk, który monitoruje i agreguje je wszystkie i wysyła do usługi OTNS wraz z innymi informacjami testowymi. Działające w trybie rzeczywistym OTNS wizualizuje sieć dotyczącą wątków.

Co dalej?

Spróbuj uruchomić inne przypadki testowe OpenThread zawarte w pakiecie jedwabiu.

Więcej informacji

W openthread.io i Silk znajdziesz różne zasoby OpenThread.

Dokumentacja