Implementa le API Layer Astrazione Layer

Visualizza sorgente su GitHub

OpenThread è indipendente dal sistema operativo e dalla piattaforma, con un livello ristretto di PAL (Platform Abstraction Layer). Questo PAL definisce:

Architettura di portabilità
  • Interfaccia sveglia per timer in esecuzione con sveglia
  • Interfacce bus (UART, SPI) per la comunicazione di messaggi CLI e Spinel
  • Interfaccia radio per la comunicazione IEEE 802.15.4-2006
  • Routine di inizializzazione specifiche di GCC
  • Entropia per la generazione di numeri casuali reali
  • Servizio di impostazioni per l'archiviazione delle configurazioni non volatili
  • Interfaccia di logging per il recapito dei messaggi di log di OpenThread
  • Routine di inizializzazione specifiche del sistema

Tutte le API devono essere implementate in base al pacchetto di assistenza per la build (HAL) dell'hardware che si basa su hardware.

I file API devono essere inseriti nelle seguenti directory:

Tipo Directory
Implementazione PAL specifica della piattaforma /openthread/examples/platforms/platform-name
File di intestazione: API di archiviazione non volatile /openthread/examples/platforms/utils
Tutti gli altri file di intestazione /openthread/include/openthread/platform
HAL BSP /openthread/third_party/platform-name

Sveglia

Dichiarazione API:

/openthread/include/openthread/platform/alarm-milli.h

L'API Alarm fornisce servizi fondamentali di sincronizzazione e allarme per l'implementazione di un timer di livello superiore.

Esistono due tipi di servizi di allarme: millisecondi e microsecondo. Il millisecondo è obbligatorio per una nuova piattaforma hardware. Il microsecondo è facoltativo.

UART

Dichiarazione API:

/openthread/examples/platforms/utils/uart.h

L'API UART implementa una comunicazione di porta seriale fondamentale tramite l'interfaccia UART.

Mentre i componenti aggiuntivi di OpenThread CLI e NCP dipendono dall'interfaccia UART per interagire con il lato host, il supporto dell'API UART è facoltativo. Tuttavia, anche se non prevedi di utilizzare questi componenti aggiuntivi nell'esempio della nuova piattaforma hardware, ti consigliamo vivamente di aggiungere il supporto per alcuni motivi:

  • L'interfaccia a riga di comando è utile per verificare il corretto funzionamento della porta
  • Lo strumento Harm Automation utilizza l'interfaccia UART per controllare OpenThread a fini di test e certificazione

Se la piattaforma hardware di destinazione supporta un modulo CDC USB anziché UART, assicurati di:

  • Installa il driver CDC USB corretto sul lato host
  • Sostituisci l'implementazione dell'API UART con il driver CDC USB (insieme a BSP) sul lato OpenThread, con gli stessi prototipi di funzione.

Radio

Dichiarazione API:

/openthread/include/openthread/platform/radio.h

L'API Radio definisce tutte le funzioni necessarie chiamate dal livello MAC IEEE 802.15.4 superiore. Il chip radio deve essere completamente conforme alle specifiche IEEE 802.15.4-2006 a 2,4 GHz.

Grazie alla sua funzionalità avanzata a basso consumo, OpenThread richiede che tutte le piattaforme implementino automaticamente il frame automatico in attesa (trasmissione indiretta) e la tabella delle corrispondenze dell'indirizzo di origine deve essere implementata anche nel file di origine radio.h.

Tuttavia, se l'esempio della nuova piattaforma hardware è limitato alle risorse, la tabella degli indirizzi di origine può essere definita su una lunghezza pari a zero. Per ulteriori informazioni, consulta la sezione Frame automatico in attesa.

Varie/Reimposta

Dichiarazione API:

/openthread/include/openthread/platform/misc.h

L'API Misc/Reset fornisce un metodo per reimpostare il software sul chip ed eseguire query sul motivo dell'ultimo ripristino.

Entropia

Dichiarazione API:

/openthread/include/openthread/platform/entropy.h

L'API Entropy fornisce un generatore di numeri casuali (TRNG) per il livello superiore, che viene utilizzato per mantenere gli asset di sicurezza per l'intera rete OpenThread. L'API dovrebbe garantire che venga generato un nuovo numero casuale per ogni chiamata funzione. Gli asset di sicurezza interessati dal codice TRNG includono:

  • Nonce AES CCM
  • Tremolio casuale ritardato
  • Indirizzo esteso dei dispositivi
  • Il periodo casuale iniziale del timer di scorrimento
  • ID messaggio/token CoAP

Tieni presente che molte piattaforme hanno già integrato un generatore di numeri casuali, mostrando l'API nel suo pacchetto BSP. Nel caso in cui la piattaforma hardware di destinazione non supporti il monitoraggio TRNG, potresti utilizzare il campionamento del modulo ADC per generare un numero casuale a lunghezza fissa. Campiona più iterazioni se necessario per soddisfare i requisiti TRNG (uint32_t).

Quando la macro MBEDTLS_ENTROPY_HARDWARE_ALT è impostata su 1, questa API deve fornire anche un metodo per generare l'entropia hardware utilizzata nella libreria mbedTLS.

Archiviazione non volatile

Dichiarazioni delle API:

/openthread/include/openthread/platform/flash.h

o

/openthread/include/openthread/platform/settings.h

Per soddisfare il requisito di archiviazione non volatile, implementa una delle due API elencate sopra. L'API Flash implementa un driver di archiviazione Flash, mentre l'API Settings fornisce funzioni per l'implementazione di un'operazione flash sottostante al livello superiore.

Queste API espongono al livello superiore:

  • Le dimensioni di archiviazione non volatili disponibili per archiviare i dati delle applicazioni (ad esempio, set di dati operativo attivo/in attesa, parametri di rete attuali e credenziali dei dispositivi thread per il nuovo collegamento dopo la reimpostazione).
  • Operazioni di lettura, scrittura, cancellazione ed esecuzione di query in stato di Flash

Utilizza OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE nel file di configurazione principale dell'esempio della piattaforma per indicare quale API utilizzare. Se impostato su 1, è necessario implementare l'API Flash. In caso contrario, l'API Settings deve essere implementata.

Questo flag deve essere impostato nel file /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h.

Logging

Dichiarazione API:

/openthread/include/openthread/platform/logging.h

L'API Logging implementa la funzionalità di logging e debug di OpenThread, con più livelli di output di debug disponibili. Questa API è facoltativa se non prevedi di utilizzare il logging di OpenThread nell'esempio della nuova piattaforma hardware.

Il livello più alto e più dettagliato è OPENTHREAD_LOG_LEVEL_DEBG, che stampa tutte le informazioni non elaborate dei pacchetti e registra le righe tramite la porta seriale o sul terminale. Scegli il livello di debug più adatto alle tue esigenze.

Specifico del sistema

Dichiarazione API:

/openthread/examples/platforms/openthread-system.h

L'API specifica del sistema fornisce principalmente operazioni di inizializzazione e deinizializzazione per la piattaforma hardware selezionata. Questa API non viene richiamata dalla libreria OpenThread stessa, ma può essere utile per il tuo sistema/RTOS. Puoi anche implementare l'inizializzazione di altri moduli (ad esempio, UART, Radio, Casuale, Varie/Reimposta) in questo file di origine.

L'implementazione di questa API dipende dal caso d'uso specifico. Se vuoi utilizzare le applicazioni CLI e NCP generate per una piattaforma di esempio, devi implementare questa API. In caso contrario, è possibile implementare qualsiasi API per integrare i driver della piattaforma di esempio nel sistema/RTOS.