1. Wprowadzenie
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
- Wprowadzenie do wątków. Musisz znać podstawowe zagadnienia związane z wątkami, aby lepiej zrozumieć, czego nauczasz w tym ćwiczeniu z programowania.
- Utwórz sieć wątków przy użyciu tablic nRF52840 i OpenThread. W tym ćwiczeniu założono, że udało Ci się utworzyć sieć w wątkach.
- Symuluj siecie wątków przy użyciu OTNS. W tym ćwiczeniu założono, że udało Ci się uruchomić narzędzie OTNS.
Sprawdzanie wymagań wstępnych
Upewnijmy się, że spełnione są wszystkie wymagania wstępne.
- Uruchom plik
which otns
, by sprawdzić, czy plik wykonywalnyotns
można wyszukać w$PATH
. - Uruchom plik
which wpantund
, aby upewnić się, żewpantund
jest dostępny. - 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.
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.
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.
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.