|
Toolchain
La principale toolchain supportata per la creazione di OpenThread è GNU Autotools.
GNU Autotools
Le istruzioni sulla creazione di esempi con GNU Autotools possono essere trovate nella cartella della piattaforma di ogni esempio. Si noti che lo scopo di questi esempi è mostrare il codice minimo necessario per eseguire OpenThread su ciascuna rispettiva piattaforma. In quanto tali, non evidenziano tutte le funzionalità della piattaforma.
Potrebbe essere necessaria un'ulteriore configurazione durante le build, a seconda del caso d'uso.
GNU Autotools - build di Nest Labs
Nest Labs ha creato un framework di sistema personalizzato e chiavi in mano, basato su GNU Autotools. Viene utilizzato per i pacchetti software autonomi che devono supportare:
- costruire su e mirare contro sistemi host di compilazione standalone
- sistemi di destinazione incorporati che utilizzano toolchain basati su GCC o compatibili
Si consiglia di utilizzare la build Nest Labs di GNU Autotools con OpenThread perché alcuni sistemi host di build potrebbero non avere GNU Autotools o potrebbero avere versioni e distribuzioni diverse. Ciò porta all'output di Autotools primario e secondario incoerente, che si traduce in un'esperienza utente e di supporto divergente. La build di Nest Labs evita ciò fornendo un set predefinito e qualificato di GNU Autotools con script associati che non si basano sulle versioni di Autotools sul sistema host di build.
Questo progetto è tipicamente sottoalbero (o sottomodulato git) in un repository del progetto di destinazione e funge da seme per il sistema di compilazione di quel progetto.
Per saperne di più o per utilizzare questo strumento per le tue build OpenThread, consulta il README
.
Come costruire OpenThread
I passaggi per creare OpenThread variano a seconda della toolchain, della macchina utente e della piattaforma di destinazione.
Il flusso di lavoro più comune è:
- Configura l'ambiente di compilazione e installa la toolchain desiderata:
- Per costruire direttamente su una macchina, vedere il Simulation Codelab per istruzioni dettagliate
- Per utilizzare un contenitore Docker con un ambiente preconfigurato, scarica ed esegui l'immagine
environment
OpenThread:docker pull openthread/environment:latest
docker run -it --rm openthread/environment bash
- All'interno dell'ambiente scelto, clona il repository OpenThread Git:
git clone https://github.com/openthread/openthread
- Dalla directory principale del repository clonato:
- Installa la toolchain GNU e altre dipendenze (opzionale):
./script/bootstrap
- Configura l'ambiente:
./bootstrap
- Configura e crea, utilizzando esempi di piattaforma predefiniti con personalizzazione opzionale tramite switch comuni:
- Modifica le costanti del tempo di compilazione di
/examples/platforms/ platform /openthread-core- platform -config.h
file/examples/platforms/ platform /openthread-core- platform -config.h
- Compila la configurazione:
make -f examples/Makefile-platform
- Modifica le costanti del tempo di compilazione di
- Installa la toolchain GNU e altre dipendenze (opzionale):
- Esegui il flash del file binario desiderato sulla piattaforma di destinazione. Tutti i file binari generati si trovano in
/output/ platform /bin
.
Istruzioni specifiche sulla creazione di piattaforme supportate con GNU Autotools possono essere trovate nella cartella della piattaforma di ogni esempio.
Configurazione
È possibile configurare OpenThread per diverse funzionalità e comportamenti durante il processo di creazione. Le opzioni di configurazione disponibili sono descritte in dettaglio nelle seguenti posizioni:
genere | Posizione |
---|---|
Costanti in fase di compilazione | Elencato in tutti i file di intestazione in /src/core/config |
Opzioni di compilazione del makefile | Elencato in /examples/common-switches.mk |
Costruisci esempi
Utilizza un interruttore per abilitare la funzionalità per una piattaforma di esempio. Ad esempio, per creare l'esempio CC2538 con il supporto di Commissioner e Joiner abilitato:
make -f examples/Makefile-cc2538 COMMISSIONER=1 JOINER=1
Oppure, per creare l'esempio nRF52840 con la funzione Rilevamento inceppamento abilitata:
make -f examples/Makefile-nrf52840 JAM_DETECTION=1
Binari
I seguenti file binari vengono generati in /output/ platform /bin
dal processo di compilazione. Per determinare quali binari vengono generati, utilizzare i flag delle opzioni di configurazione con il comando ./configure
per generare un Makefile
aggiornato per la Makefile
. Ad esempio, per creare OpenThread e generare solo i binari della CLI:
./configure --enable-cli
make
Binario | Descrizione | Configura flag di opzione |
---|---|---|
ot-cli-ftd | Dispositivo Full Thread per progetti SoC | --enable-cli --enable-ftd |
ot-cli-mtd | Dispositivo con thread minimo per progetti SoC | --enable-cli --enable-mtd |
ot-ncp-ftd | Dispositivo Full Thread per progetti di co-processore di rete (NCP) | --enable-ncp --enable-ftd |
ot-ncp-mtd | Dispositivo con filettatura minima per progetti NCP | --enable-ncp --enable-mtd |
ot-rcp | Progettazione di un coprocessore radio (RCP) | --enable-ncp --enable-radio-only |
Se non vengono utilizzati né questi flag né un esempio di piattaforma, le applicazioni non vengono create ma i file della libreria OpenThread vengono comunque generati in /output/ platform /lib
per l'uso in un progetto.
Controlla i Makefile di esempio per ciascuna piattaforma per vedere quali flag supporta ciascuna piattaforma. Per ulteriori informazioni su FTD e MTD, vedere Thread Primer . Per ulteriori informazioni sui progetti SoC e NCP, vedere Piattaforme .
Il processo per eseguire il flashing di questi file binari varia a seconda delle piattaforme di esempio. Vedere i README nella cartella di esempio di ciascuna piattaforma per istruzioni dettagliate.
OpenThread Daemon
OpenThread Daemon (OT Daemon) è una modalità di compilazione POSIX OpenThread che esegue OpenThread come servizio e viene utilizzata con il progetto RCP. Per ulteriori informazioni su come crearlo e utilizzarlo, vedere OpenThread Daemon .
Crea pacchetti di supporto
I Build Support Package (BSP) si trovano in /third_party
. I BSP sono codice aggiuntivo di terze parti utilizzato da OpenThread su ciascuna rispettiva piattaforma, generalmente incluso quando si esegue il porting di OpenThread su una nuova piattaforma hardware.