OpenThread erstellen

Quelle auf GitHub ansehen

OpenThread erstellen

Die Schritte zum Erstellen von OpenThread variieren je nach Toolchain, Nutzercomputer und Zielplattform.

Der häufigste Workflow ist:

  1. Richten Sie die Build-Umgebung ein und installieren Sie die gewünschte Toolchain:
    1. Eine detaillierte Anleitung zum Erstellen direkt auf einer Maschine finden Sie im Simulations-Codelab.
    2. Wenn Sie einen Docker-Container mit einer vorkonfigurierten Umgebung verwenden möchten, laden Sie das OpenThread-Image environment herunter und führen Sie es aus:
      docker pull openthread/environment:latest
      docker run -it --rm openthread/environment bash
      
  2. Klonen Sie in der ausgewählten Umgebung das plattformspezifische OpenThread-Git-Repository. Nehmen wir CC2538 als Beispiel:
    git clone https://github.com/openthread/ot-cc2538.git --recursive
    
  3. Über das Stammverzeichnis des geklonten Repositorys:
    1. Installieren Sie die Toolchain:
      ./script/bootstrap
      
    2. Erstellen Sie die Konfiguration:
      ./script/build platform-specific-args cmake-options
      
  4. Flashen Sie das gewünschte Binärprogramm in die Zielplattform. Alle generierten Binärprogramme befinden sich in ./build/bin.

Konfiguration

Sie können OpenThread während des Build-Prozesses für verschiedene Funktionen und Verhaltensweisen konfigurieren. Die verfügbaren Konfigurationsoptionen werden an den folgenden Stellen ausführlich beschrieben:

Typ Standort
Kompilierungszeitkonstanten Wird in allen Header-Dateien in /src/core/config aufgeführt
Cmake-Build-Optionen Aufgeführt in openthread/examples/README.md

Build-Beispiele

Mit cmake-Build-Optionen können Sie Funktionen für die Plattform aktivieren. So erstellen Sie beispielsweise das Binärprogramm für die CC2538-Plattform mit aktivierter Unterstützung von Kommissar und Joiner:

./script/build -DOT_COMMISSIONER=ON -DOT_JOINER=ON

So erstellen Sie die nRF52840-Plattform mit aktiviertem Jam Detection-Feature im Repository:

./script/build nrf52840 UART_trans -DOT_JAM_DETECTION=ON

Binärprogramme

Die folgenden Binärdateien werden in ./build/bin aus dem Build-Prozess generiert. Verwenden Sie Flags mit dem Befehl ./script/build, um zu ermitteln, welche Binärdateien generiert werden. So erstellen Sie beispielsweise OpenThread und generieren nur das FTD-CLI-Binärprogramm:

./script/build -DOT_APP_CLI=ON -DOT_FTD=ON -DOT_MTD=OFF -DOT_APP_NCP=OFF -DOT_APP_RCP=OFF -DOT_RCP=OFF
Binär Beschreibung Optionen
ot-cli-ftd Full-Thread-Gerät für SoC-Designs -DOT_APP_CLI=ON
-DOT_FTD=ON
ot-cli-mtd Minimaler Thread-Modus für SoC-Designs -DOT_APP_CLI=ON
-DOT_MTD=ON
ot-ncp-ftd Full-Thread-Gerät für Network Co-Processor-Designs (NCP-Designs) -DOT_APP_NCP=ON
-DOT_FTD=ON
ot-ncp-mtd Minimales Thread-Gerät für NCP-Designs -DOT_APP_NCP=ON
-DOT_MTD=ON
ot-rcp RCP-Design (Radio Co-Processor) -DOT_APP_RCP=ON
-DOT_RCP=ON

Standardmäßig sind alle oben genannten Flags aktiviert. Wenn Sie alle Flags explizit deaktivieren, werden keine Anwendungen erstellt, aber OpenThread-Bibliotheksdateien werden weiterhin in ./build/lib für die Verwendung in einem Projekt generiert.

Im Verzeichnis examples/platforms sehen Sie, welche Flags die einzelnen Plattformen unterstützen. Weitere Informationen zu FTDs und MTDs finden Sie unter Thread Primer. Weitere Informationen zu SoC- und NCP-Designs finden Sie unter Plattformen.

Das Verfahren zum Flashen dieser Binärdateien variiert je nach Beispielplattform. Eine ausführliche Anleitung finden Sie in den READMEs im Beispielordner der einzelnen Plattformen.

OpenThread-Daemon

OpenThread Daemon (OT Daemon) ist ein OpenThread POSIX-Build-Modus, der OpenThread als Dienst ausführt und mit dem RCP-Design verwendet wird. Weitere Informationen zur Erstellung und Verwendung finden Sie unter OpenThread-Daemon.

Supportpakete erstellen

Build-Supportpakete (BSPs) finden Sie unter /third_party. BSPs sind zusätzlicher Drittanbietercode, der von OpenThread auf den einzelnen Plattformen verwendet wird. Sie wird im Allgemeinen beim Portieren von OpenThread auf eine neue Hardwareplattform eingebunden.