Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

プラットフォーム抽象化レイヤーAPIを実装する

GitHubでソースを表示

OpenThreadは、OSとプラットフォームに依存せず、狭いプラットフォーム抽象化レイヤー(PAL)を備えています。このPALは以下を定義します。

移植アーキテクチャ
  • アラーム付き自走タイマー用アラームインターフェース
  • CLIおよびSpineメッセージを通信するためのバスインターフェース(UART、SPI)
  • IEEE802.15.4-2006通信用の無線インターフェース
  • GCC固有の初期化ルーチン
  • 真の乱数生成のためのエントロピー
  • 不揮発性構成ストレージの設定サービス
  • OpenThreadログメッセージを配信するためのロギングインターフェイス
  • システム固有の初期化ルーチン

すべてのAPIは、基盤となるハードウェアアブストラクションレイヤー(HAL)ビルドサポートパッケージ(BSP)に基づいて実装する必要があります。

APIファイルは次のディレクトリに配置する必要があります。

タイプディレクトリ
プラットフォーム固有のPAL実装/openthread/examples/platforms/ platform-name
ヘッダーファイル—不揮発性ストレージAPI /openthread/examples/platforms/utils
他のすべてのヘッダーファイル/openthread/include/openthread/platform
HALBSP /openthread/third_party/ platform-name

警報

API宣言:

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

Alarm APIは、上位層のタイマー実装に基本的なタイミングおよびアラームサービスを提供します。

2つのアラームサービスタイプありますが、ミリ秒マイクロ秒。新しいハードウェアプラットフォームにはミリ秒が必要です。マイクロ秒はオプションです。

UART

API宣言:

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

UART APIは、UARTインターフェイスを介して基本的なシリアルポート通信を実装します。

OpenThreadながらCLIおよびNCPアドオンは、ホスト側と対話するUARTインターフェースに依存し、UARTのAPIのサポートはオプションです。ただし、新しいハードウェアプラットフォームの例でこれらのアドオンを使用する予定がない場合でも、いくつかの理由でサポートを追加することを強くお勧めします。

  • CLIは、ポートが正しく機能することを検証するのに役立ちます
  • ハーネス自動化ツールは、UARTインターフェイスを使用して、テストおよび認証の目的でOpenThreadを制御します。

ターゲットハードウェアプラットフォームがUARTではなくUSBCDCモジュールをサポートしている場合は、次のことを確認してください。

  • ホスト側に正しいUSBCDCドライバーをインストールします
  • 同じ関数プロトタイプを使用して、UARTAPI実装をOpenThread側のUSBCDCドライバー(およびBSP)に置き換えます

無線

API宣言:

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

Radio APIは、上位IEEE 802.15.4MAC層によって呼び出されるすべての必要な関数を定義します。無線チップは、2.4GHz IEEE802.15.4-2006仕様に完全に準拠している必要があります。

その改善された低消費電力機能のために、OpenThreadは、デフォルトでは、保留中の自動フレーム(間接伝送)を実現するために、すべてのプラットフォームを必要とし、送信元アドレスの一致テーブルも実装する必要がありますradio.hソースファイル。

ただし、新しいハードウェアプラットフォームの例でリソースが制限されている場合は、送信元アドレステーブルを長さゼロとして定義できます。参照してください自動フレーム保留の詳細については。

その他/リセット

API宣言:

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

Misc / Reset APIは、チップ上のソフトウェアをリセットし、最後にリセットした理由を照会する方法を提供します。

エントロピ

API宣言:

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

Entropy APIは、上位層に真の乱数ジェネレーター(TRNG)を提供します。これは、OpenThreadネットワーク全体のセキュリティ資産を維持するために使用されます。 APIは、関数呼び出しごとに新しい乱数が生成されることを保証する必要があります。 TRNGの影響を受けるセキュリティ資産には次のものがあります。

  • AES CCM nonce
  • ランダム遅延ジッター
  • デバイスの拡張アドレス
  • トリクルタイマーの最初のランダム期間
  • CoAPトークン/メッセージID

多くのプラットフォームはすでに乱数ジェネレーターを統合しており、APIをBSPパッケージで公開していることに注意してください。ターゲットハードウェアプラットフォームがTRNGをサポートしていない場合は、ADCモジュールサンプリングを利用して固定長の乱数を生成することを検討してください。 TRNG要件(uint32_t)を満たすために必要な場合は、複数の反復にわたってサンプリングします。

マクロ場合MBEDTLS_ENTROPY_HARDWARE_ALTに設定されている1 、このAPIはまたmbedTLSライブラリで使用されるハードウェアのエントロピーを生成するための方法を提供すべきです。

不揮発性ストレージ

API宣言:

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

また

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

不揮発性ストレージの要件は、上記の2つのAPIのいずれかを実装することで満たすことができます。 Flash APIはフラッシュストレージドライバーを実装し、Settings APIは、基盤となるフラッシュ操作の実装のための関数を上位層に提供します。

これらのAPIは上位層に公開されます。

  • アプリケーションデータの保存に使用される利用可能な不揮発性ストレージサイズ(たとえば、アクティブ/保留中の運用データセット、現在のネットワークパラメータ、リセット後の再接続用のスレッドデバイスのクレデンシャル)
  • フラッシュステータス操作の読み取り、書き込み、消去、およびクエリ

使用OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLEお使いのプラットフォームの例のコア設定ファイル内には、プラットフォームが使用すべきAPIを示します。設定されている場合1 、フラッシュAPIを実装する必要があります。それ以外の場合は、設定APIを実装する必要があります。

このフラグは、自分の中で設定する必要があります/openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.hファイル。

ロギング

API宣言:

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

Logging APIは、OpenThreadのロギングおよびデバッグ機能を実装し、複数レベルのデバッグ出力を利用できます。新しいハードウェアプラットフォームの例でOpenThreadのロギングを利用する予定がない場合、このAPIはオプションです。

最高と最も詳細なレベルであるOPENTHREAD_LOG_LEVEL_DEBGシリアルポートを介して、または端末にすべての生のパケット情報とログラインを印刷します。ニーズに最適なデバッグレベルを選択してください。

システム固有

API宣言:

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

システム固有のAPIは、主に、選択したハードウェアプラットフォームの初期化および非初期化操作を提供します。このAPIは、OpenThreadライブラリ自体によって呼び出されることはありませんが、システム/ RTOSに役立つ場合があります。このソースファイルで他のモジュール(UART、ラジオ、ランダム、その他/リセットなど)の初期化を実装することもできます。

このAPIの実装は、ユースケースによって異なります。あなたが生成された使用したい場合はCLIおよびNCPアプリケーションのための例プラットフォーム、あなたはこのAPIを実装する必要があります。それ以外の場合は、任意のAPIを実装して、サンプルプラットフォームドライバーをシステム/ RTOSに統合できます。