ネットワークトランスポートインターフェイスの移植 - FreeRTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ネットワークトランスポートインターフェイスの移植

TLS ライブラリの統合

Transport Layer Security (TLS) 認証の場合は、優先する TLS スタックを使用します。を使用することをお勧めします。Mbed TLSFreeRTOS ライブラリでテストされているからです。この例は、こちらで確認できます。GitHubrepository.

デバイスで使用される TLS 実装に関係なく、TCP/IP スタックを使用した TLS スタックの基礎となるトランスポートフックを実装する必要があります。彼らはサポートしなければならないでサポートされている TLS 暗号スイートAWS IoT

ネットワークトランスポートインターフェイスライブラリの移植

使用するネットワークトランスポートインターフェイスを実装する必要がありますcoreMQTTそしてcoreHTTP。ネットワークトランスポートインターフェイスには、単一のネットワーク接続でデータを送受信するために必要な関数ポインタとコンテキストデータが含まれています。「」を参照してください。転送インターフェイス詳細については、をご覧ください。FreeRTOS は、これらの実装を検証するための一連の組み込みネットワークトランスポートインターフェイステストを提供します。以下のセクションでは、これらのテストを実行するためのプロジェクトを設定する方法について説明します。

前提条件

このテストを移植するには、次のものが必要です。

  • 検証済みの FreeRTOS カーネルポートで FreeRTOS をビルドできるビルドシステムを持つプロジェクト。

  • ネットワークドライバの作業実装。

移植

  • を追加します。Freertos-Libraries-統合テストプロジェクトのサブモジュールとして。サブモジュールがビルドできる限り、プロジェクトのどこにサブモジュールが配置されているかは関係ありません。

  • コピーconfig_template/test_execution_config_template.hそしてconfig_template/test_param_config_template.hビルドパス内のプロジェクトの場所に移動し、名前をtest_execution_config.hそしてtest_param_config.h

  • 関連するファイルをビルドシステムに含めます。を使用する場合CMake,qualification_test.cmakeそしてsrc/transport_interface_tests.cmake関連するファイルを含めるのに使われます。

  • 次の関数を適切なプロジェクトの場所に実装します。

    • あるnetwork connect function: シグニチャは次の式で定義されます。NetworkConnectFuncsrc/common/network_connection.h。この関数は、ネットワークコンテキストへのポインタ、ホスト情報へのポインタ、およびネットワーククレデンシャルへのポインタを取ります。指定されたネットワーククレデンシャルを使用して、ホスト情報で指定されたサーバーとの接続を確立します。

    • あるnetwork disconnect function: シグニチャは次の式で定義されます。NetworkDisconnectFuncsrc/common/network_connection.h。この関数は、ネットワークコンテキストへのポインタを取り込みます。ネットワークコンテキストに格納されている以前に確立された接続を切断します。

    • setupTransportInterfaceTestParam(): これはに定義されています。src/transport_interface/transport_interface_tests.h。実装は、で定義されている名前とシグネチャとまったく同じでなければなりません。transport_interface_tests.h。この関数は、トランスポートインターフェイス TestParam構造体。これは、次のフィールドに入力されます。トランスポートインターフェイス TestParamトランスポートインターフェイステストで使用される構造体。

  • を実装するUNITY_OUTPUT_CHARテスト出力ログがデバイスログとインターリーブしないようにします。

  • 電話runQualificationTest()アプリケーションから。デバイスのハードウェアが正しく初期化され、コール前にネットワークが接続されている必要があります。

クレデンシャル管理(デバイス上で生成されたキー)

メトリックFORCE_GENERATE_NEW_KEY_PAIRtest_param_config.hを 1 に設定すると、デバイスアプリケーションは新しいオンデバイスkey pair を生成し、公開キーを出力します。デバイスアプリケーションではECHO_SERVER_ROOT_CAそしてCLIENT_CERTIFICATEエコーサーバと TLS 接続を確立するときに、エコーサーバのルート CA およびクライアント証明書として指定します。IDT は、資格の実行中にこれらのパラメータを設定します。

認証情報管理 (キーのインポート)

デバイスアプリケーションではECHO_SERVER_ROOT_CA,CLIENT_CERTIFICATEそしてCLIENT_PRIVATE_KEYtest_param_config.hエコーサーバと TLS 接続を確立するときに、エコーサーバのルート CA、クライアント証明書、およびクライアント秘密キーとして指定します。IDT は、資格の実行中にこれらのパラメータを設定します。

テスト

このセクションでは、資格テストを使用してトランスポートインターフェイスをローカルでテストする方法について説明します。または、IDT を使用して実行を自動化することもできます。「」を参照してください。AWS IoT Device TesterFreeRTOS の場合FreeRTOS ユーザーガイド詳細については。

テストを有効にする

オープンtest_execution_config.hを定義するにはTRANSPORT_INTERFACE_TEST_ENABLEDに 1.

テスト用にエコーサーバーをセットアップする

ローカルテストには、テストを実行するデバイスからアクセス可能なエコーサーバーが必要です。トランスポートインターフェイス実装が TLS をサポートしている場合、エコーサーバーは TLS をサポートする必要があります。お持ちでない場合は、Freertos-Libraries-統合テスト GitHub リポジトリには、エコーサーバーの実装があります。

テスト用にプロジェクトを構成する

In (イン)test_param_config.hを更新するにはECHOそしてECHO_SERVER_PORTを前のステップでエンドポイントとサーバーのセットアップに設定します。

認証情報の設定 (デバイス上で生成されたキー)

  • 設定ECHO_SERVER_ROOT_CAエコーサーバのサーバ証明書に送信します。

  • 設定FORCE_GENERATE_NEW_KEY_PAIR1 にするとkey pair を生成し、公開キーを取得します。

  • 設定FORCE_GENERATE_NEW_KEY_PAIRキー生成後 0 に戻ります。

  • 公開キー、サーバーキー、および証明書を使用して、クライアント証明書を生成します。

  • 設定CLIENT_CERTIFICATEを生成したクライアント証明書に送信します。

認証情報の設定 (キーのインポート)

  • 設定ECHO_SERVER_ROOT_CAエコーサーバのサーバ証明書に送信します。

  • 設定CLIENT_CERTIFICATE事前に生成されたクライアント証明書に送信します。

  • 設定CLIENT_PRIVATE_KEYを事前に生成したクライアントのプライベートキーに設定します。

アプリケーションをビルドしてフラッシュする

選択したツールチェーンを使用して、アプリケーションをビルドしてフラッシュします。メトリックrunQualificationTest()が呼び出されると、トランスポートインターフェースのテストが実行されます。テスト結果はシリアルポートに出力されます。

注記

デバイスを正式に FreeRTOS 向けに資格認定するには、でデバイスの移植されたソースコードをOTA PAL および OTA E2E テストグループに対して検証する必要があります。AWS IoT Device Tester。「」の指示に従って、を使用するAWS IoT Device TesterFreeRTOS の場合FreeRTOS ユーザーガイドをセットアップするにはAWS IoT Device Testerポート検証用。特定のライブラリのポートをテストするには、で正しいテストグループを有効にする必要があります。device.jsonのファイルAWS IoT Device Tester configsfolder