Implementa API Platform Abstraction Layer

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Visualizza origine su GitHub

OpenThread è indipendente dal sistema operativo e dalla piattaforma, con uno stretto livello di astrazione Platform (PAL). Questo PAL definisce:

Architettura di portabilità
  • Interfaccia di sveglia per timer libero con sveglia
  • Interfacce bus (UART, SPI) per la comunicazione di messaggi dell'interfaccia a riga di comando e Spinel
  • Interfaccia radio per comunicazione IEEE 802.15.4-2006
  • Routine di inizializzazione specifiche per GCC
  • Entropia per la generazione di numeri casuali reali
  • Servizio impostazioni per l'archiviazione in configurazione non volatile
  • Interfaccia di logging per il recapito di messaggi di log OpenThread
  • Routine di inizializzazione specifiche per il sistema

Tutte le API devono essere implementate in base al pacchetto di supporto per la build (HAL) Hardware Abstraction Layer (BSP).

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 offre servizi fondamentali di sincronizzazione e sveglia per l'implementazione del timer superiore.

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

UART

Dichiarazione API:

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

L'API UART implementa la comunicazione di base della porta seriale tramite l'interfaccia UART.

I componenti aggiuntivi CLI e NCP di OpenThread dipendono dall'interfaccia UART per interagire con il lato host, ma il supporto dell'API UART è facoltativo. Tuttavia, anche se non prevedi di utilizzare questi componenti aggiuntivi sul tuo nuovo esempio di piattaforma hardware, ti consigliamo vivamente di aggiungere assistenza per alcuni motivi:

  • L'interfaccia a riga di comando è utile per verificare che la porta funzioni correttamente
  • Lo strumento per l'automazione del cablaggio utilizza l'interfaccia UART per controllare OpenThread per i test e le certificazioni

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, utilizzando gli stessi prototipi di funzioni

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 alla specifica IEEE 802.15.4-2006 a 2,4 GHz.

A causa della sua funzionalità avanzata a basso consumo, OpenThread richiede a tutte le piattaforme di implementare per impostazione predefinita il frame automatico in attesa (trasmissione indiretta) e anche la tabella delle corrispondenze dell'indirizzo di origine deve essere implementata nel file sorgente radio.h.

Tuttavia, se il nuovo esempio di piattaforma hardware è limitato dalla risorsa, la tabella dell'indirizzo di origine può essere definita come di lunghezza 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'ultima reimpostazione.

Entropia

Dichiarazione API:

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

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

  • Nonce AES CCM
  • Tremolio ritardato casuale
  • Dispositivi' indirizzo esteso
  • Il periodo iniziale casuale nel timer del gioco
  • ID token/messaggio CoAP

Tieni presente che molte piattaforme hanno già integrato un generatore di numeri casuali, esponendo l'API nel suo pacchetto BSP. Se la piattaforma hardware di destinazione non supporta il protocollo TRNG, valuta la possibilità di utilizzare il campionamento del modulo ADC per generare un numero casuale a lunghezza fissa. Campione su più iterazioni se necessario per soddisfare i requisiti TRNG (uint32_t).

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

Spazio di archiviazione permanente

Dichiarazioni dell'API:

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

o

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

Il requisito dello spazio di archiviazione non volatile può essere soddisfatto implementando una delle due API elencate sopra. L'API Flash implementa un driver di archiviazione Flash, mentre l'API Settings fornisce funzioni per un'implementazione di operazioni Flash sottoposta al livello superiore.

Queste API espongono al livello superiore:

  • Le dimensioni di archiviazione non volatili disponibili utilizzate per archiviare i dati dell'applicazione (ad esempio, set di dati operativi attivo/in attesa, parametri di rete correnti e dispositivi con thread' credenziali per il nuovo collegamento dopo il ripristino)
  • Operazioni di lettura, scrittura, cancellazione ed esecuzione di query sullo stato Flash

Utilizza OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE nel file di configurazione principale di esempio della piattaforma per indicare quale API dovrebbe essere utilizzata dalla piattaforma. Se impostata su 1, l'API Flash deve essere implementata. In caso contrario, 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's sul tuo nuovo esempio di piattaforma hardware.

Il livello più alto e dettagliato è OPENTHREAD_LOG_LEVEL_DEBG, che stampa tutte le informazioni non elaborate del pacchetto e le righe di log attraverso la porta seriale o sul terminale. Scegli il livello di debug che meglio soddisfa le tue esigenze.

Specifico del sistema

Dichiarazione API:

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

L'API specifica di sistema fornisce principalmente operazioni di inizializzazione e deinizializzazione per la piattaforma hardware selezionata. Questa API non viene chiamata dalla libreria OpenThread stessa, ma potrebbe essere utile per il tuo sistema o i tuoi RTO. 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 dell'interfaccia a riga di comando e NCP generate per una piattaforma di esempio, devi implementare questa API. In caso contrario, è possibile implementare qualsiasi API per integrare i driver di piattaforma di esempio nel tuo sistema/RTOS.