OpenThread wydany przez Google został przeniesiony na kilka urządzeń i platform przez zespół OpenThread, dostawców krzemu i społeczność. Przykłady kompilacji dla wszystkich portowanych platform znajdują się w repozytorium OpenThread .
Zobacz Wyszukiwanie dostawców, aby uzyskać listę wszystkich platform obsługiwanych przez dostawców i portów społeczności, z możliwością wyszukiwania.
Wsparcie
Wsparcie dla każdej platformy zmienia się w czasie. Niektóre platformy są oznaczone aktualnym poziomem wsparcia, zgodnie z ustaleniami zespołu OpenThread. Platformy nieoznakowane nie były ostatnio testowane i można je uznać za „ograniczone wsparcie”.
Poziom wsparcia | Opis |
---|---|
![]() | Pełne i podstawowe wsparcie, a także dowolny komponent z certyfikatem wątku, który korzysta z OpenThread. Wiele z tych platform zostało przetestowanych i używanych przez zespół OpenThread i są zalecane do użytku w naszych wersjach demonstracyjnych i Codelabs. |
![]() | Te platformy nie zostały w pełni przetestowane i mogą nie mieć niektórych kluczowych funkcji. |
![]() | Obecnie nie jest obsługiwane i mogą mieć problemy z uruchomieniem OpenThread. Używaj na własne ryzyko. |
Architektura systemu

OpenThread został zaprojektowany z myślą o przenośności i elastyczności. Kod jest przenośnym C / C ++ (C99 i C ++ 03), który jest niezależny od architektury systemu ze względu na wąską warstwę abstrakcji. Ta warstwa abstrakcji oznacza, że OpenThread może działać na bare-metal lub OS. Do tej pory wykazano, że OpenThread działa na FreeRTOS, RIOT-OS, Zephyr OS, Linux i macOS.
Przenośny charakter OpenThread nie zakłada żadnych założeń dotyczących funkcji platformy. OpenThread zapewnia możliwości wykorzystania ulepszonych funkcji radiowych i kryptograficznych, zmniejszając wymagania systemowe, takie jak pamięć, kod i cykle obliczeniowe. Można to zrobić dla każdej platformy, zachowując możliwość domyślnej konfiguracji standardowej.
OpenThread ma konfigurowalny system kompilacji, za pomocą którego programista może włączać lub wyłączać funkcje w razie potrzeby. Poza domyślnym łańcuchem narzędzi GNU, źródło zostało zaprojektowane do pracy z wieloma innymi popularnymi łańcuchami narzędzi, takimi jak IAR i Visual Studio.
Projekty platform
OpenThread obsługuje zarówno konstrukcje typu system-on-chip (SoC), jak i koprocesor sieciowy (NCP).
SoC to rozwiązanie jednoukładowe, które składa się z połączenia RFIC (802.15.4 w przypadku wątku) i procesora, w którym OpenThread i warstwa aplikacji działają na lokalnym procesorze.
Projekt NCP polega na tym, że warstwa aplikacji działa na procesorze hosta i komunikuje się z OpenThread za pośrednictwem połączenia szeregowego przy użyciu znormalizowanego protokołu kontrolera hosta, który nazywamy Spinel . W tym projekcie OpenThread może działać na radiu lub procesorze hosta.
Pojedynczy chip, tylko wątek (SoC)

W tym projekcie warstwa aplikacji i OpenThread działają na tym samym procesorze. Aplikacja bezpośrednio korzysta z interfejsów API OpenThread i stosu IPv6.
Jest to konstrukcja SoC najczęściej stosowana w urządzeniach końcowych. Ponieważ jest wysoce zintegrowany z pojedynczym krzemem, ma najniższy koszt i najniższe zużycie energii.
Pojedynczy układ, wiele interfejsów (SoC)

Gdy SoC ma wiele radiotelefonów, takich jak 802.15.4 i Wi-Fi lub 802.15.4 i Bluetooth Low Energy (BLE), warstwa aplikacji i OpenThread nadal działają na tym samym procesorze. W projekcie z wieloma interfejsami OpenThread wykorzystuje udostępniony stos IPv6 innej firmy za pośrednictwem surowego interfejsu datagramowego IPv6.
Współprocesor sieciowy (NCP)

Standardowy projekt NCP ma funkcje wątku w SoC i uruchamia warstwę aplikacji na procesorze hosta, który jest zwykle bardziej wydajny (ale ma większe zapotrzebowanie na energię) niż urządzenie OpenThread. Procesor hosta komunikuje się z urządzeniem OpenThread za pośrednictwem interfejsu szeregowego (zwykle SPI lub UART) za pośrednictwem protokołu Spinel.
Zaletą tego projektu jest to, że host o większej mocy może spać, podczas gdy urządzenie OpenThread o niższej mocy pozostaje aktywne, aby utrzymać swoje miejsce w sieci Thread. A ponieważ SoC nie jest powiązany z warstwą aplikacji, tworzenie i testowanie aplikacji jest niezależne od kompilacji OpenThread.
Ten projekt jest przydatny w przypadku urządzeń bramowych lub urządzeń, które mają inne wymagania dotyczące przetwarzania, takie jak kamery IP i głośniki.
Współprocesor radiowy (RCP)

Jest to wariant projektu NCP, w którym rdzeń OpenThread znajduje się na procesorze hosta z minimalnym „kontrolerem” warstwy MAC na urządzeniu z radiem Thread. Procesor hosta zwykle nie śpi w tym projekcie, po części w celu zapewnienia niezawodności sieci Thread.
Zaletą jest to, że OpenThread może wykorzystywać zasoby mocniejszego procesora.
Ten projekt jest przydatny w przypadku urządzeń, które są mniej wrażliwe na ograniczenia mocy. Na przykład procesor hosta w kamerze wideo jest zawsze włączony i przetwarza wideo.
Problemy z otwartą platformą
Następujące problemy są obecnie otwarte dla platform OpenThread: