1. Wstęp
Czym są Thread, OpenThread, OTNS i Jedwabne?
Thread to bezprzewodowy protokół sieci typu mesh oparty na adresach IP, który umożliwia bezpieczną komunikację między urządzeniami i chmurą. Sieci wątków mogą dostosowywać się do zmian topologii, aby uniknąć jednego punktu awarii.
OpenThread to nowe rozwiązanie wprowadzone przez Google jako open source. Mimo małego rozmiaru kodu i pamięci operacyjnej OpenOpen obsługuje wszystkie funkcje zdefiniowane w specyfikacji wątku.
Symulator sieci OpenThread (OTNS) może służyć do symulowania sieci wątkowych przez uruchamianie symulowanych węzłów OpenThread na platformach posix. OTNS zapewnia łatwy w użyciu interfejs internetowy (OTNS-Web), który umożliwia wizualizację i obsługowanie symulowanych sieci sieciowych.
Silk to w pełni zautomatyzowana platforma testowa do weryfikowania funkcji, funkcji i wydajności systemu na rzeczywistych urządzeniach.
Czego się dowiesz
- Platforma weryfikacji funkcji OpenThread: jedwab
- Tworzenie OpenOpen dla prawdziwych urządzeń z włączoną funkcją OTNS
- Interfejs OTNS-Web służy do monitorowania stanu sieci wątków tworzonej przez uruchamianie jedwabnych testów.
labwiczenia te skupiają się na użyciu jedwabiu z OTNS. Nie omawiamy innych funkcji jedwabiu ani OTNS.
Niezbędne elementy
Sprzęt:
- 6 nordic Semiconductor nRF52840 deweloprów
- 6 kabli USB do micro USB, aby połączyć płytki
- hub USB
Oprogramowanie:
- Linux x86_64.
- Git.
- Przejdź na wersję 1.11 lub nowszą.
- Przeglądarka. OTNS-Web używa przeglądarki do symulacji.
Wymagania wstępne:
2. Wymagania wstępne
Wykonaj podstawowe ćwiczenia z programowania
- Grunt nici. Naucz się podstawowych zagadnień związanych z wątkiem, by zrozumieć, co znajduje się w tym module.
- Utwórz sieć wątków z płytami nRF52840 i OpenThread. Zakładamy, że udało Ci się utworzyć sieć wątków.
- Symulacja sieci wątków przy użyciu OTNS Zakładamy, że udało Ci się uruchomić narzędzie OTNS.
Sprawdzam wymagania wstępne pakietu
Sprawdźmy, czy spełnione są wszystkie wymagania wstępne.
- Uruchom
which otns
, aby sprawdzić, czy plik wykonywalnyotns
może być przeszukiwany w$PATH
. - Uruchom program
which wpantund
, aby sprawdzić, czy programwpantund
jest dostępny. - Sprawdź, czy są dostępne pakiety narzędzi ARM GNU, J-Link i
nrfjprog
. - Sprawdź, czy można utworzyć plik binarny OpenThread, uruchamiając polecenie
make -f examples/Makefile-nrf52840
w folderzeopenthread
.
Uwaga: w dokumentacji w linku znajdziesz wskazówki konfiguracji. Warunek wstępny nr 1 toSymulacja sieci wątków za pomocą OTNS oraz inne osobyUtwórz sieć wątków z płytami nRF52840 i OpenThread danych
3. Konfiguracja jedwabiu
Aby skopiować Jedwab i skonfigurować środowisko, uruchom następujące 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ętowej
Aby umożliwić aplikacji Silk zbieranie dostępnych zasobów sprzętowych do testowania połączonych z maszyną, zdefiniuj plik hwconfig.ini
w takim formacie:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Narzędzie o nazwie usbinfo
jest zainstalowane jako część Jedwabiu, dzięki czemu można znaleźć numer seryjny i numer interfejsu USB. DutSerial to numer SN wydrukowany na elemencie lub wyświetlany przez usbinfo
dla produktów J-Link.
Pola LayoutCenter
i LayoutRadius
w sekcji [DEFAULT]
określają kształt układu podczas wyświetlania urządzeń w interfejsie internetowym. Na początek ustaw wartości opisane tutaj.
Następnie określa sekcję dla każdego urządzenia testowego i dostarcza odpowiednie informacje sprzętowe.
4. Kompilowanie OpenOpen z włączonym OTNS
Obraz budynku i miganie
Domyślnie urządzenia OpenThread nie emitują komunikatów OTNS. Aby umożliwić deweloperom emitowanie komunikatów o stanie do interfejsów logów niezbędnych do wizualizacji OTNS, uruchom następujące polecenie w katalogu źródłowym OpenThread, by utworzyć obraz FTD i przekonwertować go na 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 migać na płytkach, postępuj zgodnie z instrukcjami w kroku 4labwiczenia z programowania w sieci wątków do użycianrfjprog
danych Następnie podłącz wszystkie płytki przez port USB nRF do hosta. Ten sam zestaw kabli USB do micro USB może być odłączony od portów J-Link i portów USB nRF na płytach deweloperskich nRF52840. W przypadku tych zaledwie 6 kabli można przeprowadzić test. Aby uniknąć problemów, użyj 12 kabli i podłącz do obu portów.
5. Działanie serwera OTNS w trybie rzeczywistym
Uruchamianie OTNS z parametrami domyślnymi pozwala użytkownikowi symulować sieć wątków. Aby użyć go jako narzędzia do wizualizacji w rzeczywistych sieciach fizycznych, uruchom go za pomocą:
otns -raw -real -ot-cli otns-silk-proxy
Te argumenty informują OTNS, że spodziewane są komunikaty gRPC i UDP, które opisują, jak powinna być wizualizowana sieć wątków, zamiast uruchamiać wiele procesów ot-cli
w celu symulowania sieci. Przeglądarka powinna automatycznie otworzyć stronę wizualizacji z pustym miejscem roboczym.
6. Uruchamianie spraw testowych jedwabiu z obsługą OTNS
Silk to w pełni zautomatyzowana platforma testowa służąca do weryfikowania funkcji, funkcji i wydajności systemu na rzeczywistych urządzeniach. Instrukcje w projekcie README wyjaśniają, jak z niego korzystać.
Plik silk_run_test.py
w lokalizacji silk/unit_tests
zawiera przewagę. Silk zapewnia obsługę OTNS podczas uruchamiania przypadku testowego. Usługa trybu OTNS działa już lokalnie, więc wystarczy, że zmodyfikujesz plik silk_run_test.py
przy użyciu odpowiednich lokalizacji dla wyjściowego pliku dziennika, wpisanych skryptów testowych i pliku hwconfig.ini
. Argument -s localhost
informuje Silk o wysyłaniu wiadomości OTNS do localhost
.
Można na przykład przeprowadzić test o nazwie ot_test_form_network.py
, stosując następujące modyfikacje pliku silk_run_test.py
. /opt/openthread_test/
to domyślna ścieżka pliku wyjściowego logu i pliku konfiguracyjnego używana przez Silk, 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)
Wizualizacja topologii utworzonej sieci pojawi się w interfejsie internetowym OTNS.
W lewym górnym rogu widoczne są statystyki wizualizacji, wersja OT i tytuł testu. W lewym dolnym rogu znajdują się elementy sterujące okna dziennika pokazanego po prawej stronie. Początkowo węzły są dodawane, ale nie jest tworzona żadna sieć. W trakcie testu zmieniają się tryby i role każdego węzła. Powstają też linki.
7. Gratulacje
Gratulacje! Udało Ci się przeprowadzić test jedwabiu na fizycznych urządzeniach nici i zwizualizować go za pomocą OTNS.
Test jedwabiu został wykonany przy użyciu płytek deweloperskich z oprogramowaniem układowym obsługującym OTNS. Zarząd zgłasza swój stan serwerowi Jedwab, który monitoruje i zbiera je wszystkie oraz wysyła do usługi OTNS wraz z innymi informacjami testowymi. OTNS działające w trybie rzeczywistym wizualizują sieć Thread w interfejsie internetowym.
Co dalej?
Spróbuj uruchomić inne przypadki testowe OpenThread zawarte w pakiecie Jedwabiu.
Więcej informacji
Różne zasoby OpenThread znajdziesz w openthread.io i Silk.