

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

# デバイスをテストするための設定
<a name="config-settings-device"></a>

ビルド、フラッシュ、およびテストの設定は、`configs/userdata.json` ファイルで行います。エコーサーバー設定は、`customPath` のクライアントとサーバーの証明書とキーの両方をロードすることによってサポートされます。詳細については、[FreeRTOS 移植ガイド](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-echo-server.html)の*エコーサーバーのセットアップ*を参照してください。次の JSON の例は、複数のデバイスをテストするために IDT for FreeRTOS を設定する方法を示します。

```
{
    "sourcePath": "/absolute-path-to/freertos",
    "vendorPath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name",
    // ***********The sdkConfiguration block below is needed if you are not using the default, unmodified FreeRTOS repo. 
    // In other words, if you are using the default, unmodified FreeRTOS repo then remove this block***************
    "sdkConfiguration": {
        "name": "sdk-name",
        "version": "sdk-version",
        "path": "/absolute-path-to/sdk"
    },
    "buildTool": {
        "name": "your-build-tool-name",
        "version": "your-build-tool-version",
        "command": [
            "{{config.idtRootPath}}/relative-path-to/build-parallel.sh {{testData.sourcePath}} {{enableTests}}"
        ]
    },
    "flashTool": {
        "name": "your-flash-tool-name",
        "version": "your-flash-tool-version",
        "command": [
            "/{{config.idtRootPath}}/relative-path-to/flash-parallel.sh {{testData.sourcePath}} {{device.connectivity.serialPort}} {{buildImageName}}"
        ],
        "buildImageInfo" : {
            "testsImageName": "tests-image-name",
            "demosImageName": "demos-image-name"
        }
    },
    "testStartDelayms": 0,
    "clientWifiConfig": {
        "wifiSSID": "ssid",
        "wifiPassword": "password",
        "wifiSecurityType": "eWiFiSecurityOpen | eWiFiSecurityWEP | eWiFiSecurityWPA | eWiFiSecurityWPA2 | eWiFiSecurityWPA3"
    },
    "testWifiConfig": {
        "wifiSSID": "ssid",
        "wifiPassword": "password",
        "wifiSecurityType": "eWiFiSecurityOpen | eWiFiSecurityWEP | eWiFiSecurityWPA | eWiFiSecurityWPA2 | eWiFiSecurityWPA3"
    },
    //**********
    //This section is used to start echo server based on server certificate generation method,
    //When certificateGenerationMethod is set as Automatic specify the eccCurveFormat to generate certifcate and key based on curve format,
    //When certificateGenerationMethod is set as Custom specify the certificatePath and PrivateKeyPath to be used to start echo server
    //**********
    "echoServerCertificateConfiguration": {
      "certificateGenerationMethod": "Automatic | Custom",
      "customPath": {
          "clientCertificatePath":"/path/to/clientCertificate",
          "clientPrivateKeyPath": "/path/to/clientPrivateKey",
          "serverCertificatePath":"/path/to/serverCertificate",
          "serverPrivateKeyPath": "/path/to/serverPrivateKey"
      },
    "eccCurveFormat": "P224 | P256 | P384 | P521"
    },
    "echoServerConfiguration": {
        "securePortForSecureSocket": 33333, // Secure tcp port used by SecureSocket test. Default value is 33333. Ensure that the port configured isn't blocked by the firewall or your corporate network
        "insecurePortForSecureSocket": 33334, // Insecure tcp port used by SecureSocket test. Default value is 33334. Ensure that the port configured isn't blocked by the firewall or your corporate network
        "insecurePortForWiFi": 33335 // Insecure tcp port used by Wi-Fi test. Default value is 33335. Ensure that the port configured isn't blocked by the firewall or your corporate network
    },
    "otaConfiguration": {
        "otaFirmwareFilePath": "{{testData.sourcePath}}/relative-path-to/ota-image-generated-in-build-process",
        "deviceFirmwareFileName": "ota-image-name-on-device",
        "otaDemoConfigFilePath": "{{testData.sourcePath}}/relative-path-to/ota-demo-config-header-file",
        "codeSigningConfiguration": {
            "signingMethod": "AWS | Custom",
            "signerHashingAlgorithm": "SHA1 | SHA256",
            "signerSigningAlgorithm": "RSA | ECDSA",
            "signerCertificate": "arn:partition:service:region:account-id:resource:qualifier | /absolute-path-to/signer-certificate-file",
            "signerCertificateFileName": "signerCertificate-file-name",
            "compileSignerCertificate": boolean,
            // ***********Use signerPlatform if you choose aws for signingMethod***************
            "signerPlatform": "AmazonFreeRTOS-Default | AmazonFreeRTOS-TI-CC3220SF",
            "untrustedSignerCertificate": "arn:partition:service:region:account-id:resourcetype:resource:qualifier",
            // ***********Use signCommand if you choose custom for signingMethod***************
            "signCommand": [
                "/absolute-path-to/sign.sh {{inputImageFilePath}} {{outputSignatureFilePath}}"
            ]
        }
    },
    // ***********Remove the section below if you're not configuring CMake***************
    "cmakeConfiguration": {
        "boardName": "board-name",
        "vendorName": "vendor-name",
        "compilerName": "compiler-name",
        "frToolchainPath": "/path/to/freertos/toolchain",
        "cmakeToolchainPath": "/path/to/cmake/toolchain"
    },
    "freertosFileConfiguration": {
        "required": [
            {
                "configName": "pkcs11Config",
                "filePath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name/aws_tests/config_files/core_pkcs11_config.h"
            },
            {
                "configName": "pkcs11TestConfig",
                "filePath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name/aws_tests/config_files/iot_test_pkcs11_config.h"
            }
        ],
        "optional": [
            {
                "configName": "otaAgentTestsConfig",
                "filePath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name/aws_tests/config_files/ota_config.h"
            },
            {
                "configName": "otaAgentDemosConfig",
                "filePath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name/aws_demos/config_files/ota_config.h"
            },
            {
                "configName": "otaDemosConfig",
                "filePath": "{{testData.sourcePath}}/vendors/vendor-name/boards/board-name/aws_demos/config_files/ota_demo_config.h"
            }
        ]
    }
}
```

次のリストは、`userdata.json` で使用される属性です。

**`sourcePath`**  
移植された FreeRTOS ソースコードのルートへのパス。SDK を使用する並行テストの場合、`sourcePath` は `{{userData.sdkConfiguration.path}}` プレースホルダーを使用して設定できます。例:   

```
{ "sourcePath":"{{userData.sdkConfiguration.path}}/freertos" }
```

**`vendorPath`**  
ベンダー固有の FreeRTOS コードへのパス。シリアルテストでは、`vendorPath` を絶対パスとして設定できます。例:  

```
{ "vendorPath":"C:/path-to-freertos/vendors/espressif/boards/esp32" }
```
並行テストの場合、`vendorPath` は `{{testData.sourcePath}}` プレースホルダーを使用して設定できます。例:  

```
{ "vendorPath":"{{testData.sourcePath}}/vendors/espressif/boards/esp32" }
```
`vendorPath` 変数は SDK なしで実行している場合にのみ必要で、それ以外の場合は削除できます。  
SDK なしでテストを並行して実行する場合、`vendorPath`、`buildTool`、および `flashTool` フィールドで `{{testData.sourcePath}}` プレースホルダーを使用する必要があります。1 つのデバイスでテストを実行するときは、`vendorPath`、`buildTool`、および `flashTool` フィールドで絶対パスを使用する必要があります。SDK を使用して実行する場合、`{{sdkPath}}` プレースホルダーを `sourcePath`、`buildTool`、および `flashTool` コマンドで使用する必要があります。

**`sdkConfiguration`**  
移植に必要な範囲を超えてファイルやフォルダの構造を変更して FreeRTOS を認定する場合は、このブロックで SDK 情報を設定する必要があります。SDK 内で移植された FreeRTOS を認定しない場合は、このブロックを完全に省略する必要があります。    
**`sdkConfiguration.name`**  
FreeRTOS で使用する SDK の名前。SDK を使用しない場合は、`sdkConfiguration` ブロック全体を省略する必要があります。  
**`sdkConfiguration.version`**  
FreeRTOS で使用する SDK のバージョン。SDK を使用しない場合は、`sdkConfiguration` ブロック全体を省略する必要があります。  
**`sdkConfiguration.path`**  
FreeRTOS コードがある SDK ディレクトリへの絶対パス。SDK を使用しない場合は、`sdkConfiguration` ブロック全体を省略する必要があります。

**`buildTool`**  
ソースコードをビルドするためのコマンドを含むビルドスクリプト (.bat または .sh) の完全パス。ビルドコマンドのソースコードパスへの参照はすべて AWS IoT Device Tester 変数に置き換え、SDK パスへの`{{testdata.sourcePath}}`参照は に置き換える必要があります`{{sdkPath}}`。IDT の絶対パスまたは相対パスを参照するには、`{{config.idtRootPath}}` プレースホルダーを使用します。

**`testStartDelayms`**  
FreeRTOS test runner がテストの実行を開始する前に待機するミリ秒数を指定します。これは、ネットワークやその他の遅延が原因でテスト対象のデバイスが重要なテスト情報の出力を開始してから、IDT が接続してロギングを開始する場合に役立ちます。最大許容値は 30000 ms (30 秒) です。この値は FreeRTOS テストグループにのみ適用され、OTA テストなど FreeRTOS test runner を使用しない他のテストグループには適用されません。

**`flashTool`**  
デバイス用のフラッシュコマンドを含むフラッシュスクリプト (.sh または .bat) の完全パス。フラッシュコマンドのソースコードパスへの参照はすべて IDT for FreeRTOS 変数 `{{testdata.sourcePath}}` に置き換え、SDK パスへ参照はすべて IDT for FreeRTOS 変数 `{{sdkPath}}` に置き換える必要があります。IDT の絶対パスまたは相対パスを参照するには、`{{config.idtRootPath}}` プレースホルダーを使用します。    
**`buildImageInfo`**    
**`testsImageName`**  
`freertos-source/tests` フォルダからテストを構築するときにビルドコマンドによって生成されるファイルの名前。  
**`demosImageName`**  
`freertos-source/demos` フォルダからテストを構築するときにビルドコマンドによって生成されるファイルの名前。

**`clientWifiConfig`**  
クライアント側の Wi-Fi 設定。Wi-Fi ライブラリテストは、MCU ボードに対し、2 つのアクセスポイントへの接続を要求します。(2 つのアクセスポイントは同じにすることができます)。この属性は、最初のアクセスポイントの Wi-Fi を設定します。一部の Wi-Fi テストケースでは、アクセスポイントにセキュリティが設定されていて、オープンでないことが求められます。両方のアクセスポイントが IDT を実行しているホストコンピュータと同じサブネット上にあることを確認してください。    
**`wifi_ssid`**  
Wi-Fi の SSID。  
**`wifi_password`**  
Wi-Fi のパスワード。  
**`wifiSecurityType`**  
使用されている Wi-Fi セキュリティの種類。次のいずれかの値です。  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
ボードが Wi-Fi をサポートしていない場合でも、`device.json` ファイルに `clientWifiConfig` セクションを含める必要がありますが、属性の値は省略してかまいません。

**`testWifiConfig`**  
テストの Wi-Fi 設定。Wi-Fi ライブラリテストは、MCU ボードに対し、2 つのアクセスポイントへの接続を要求します。(2 つのアクセスポイントは同じにすることができます)。この属性は、2 番目のアクセスポイントの Wi-Fi を設定します。一部の Wi-Fi テストケースでは、アクセスポイントにセキュリティが設定されていて、オープンでないことが求められます。両方のアクセスポイントが IDT を実行しているホストコンピュータと同じサブネット上にあることを確認してください。    
**`wifiSSID`**  
Wi-Fi の SSID。  
**`wifiPassword`**  
Wi-Fi のパスワード。  
**`wifiSecurityType`**  
使用されている Wi-Fi セキュリティの種類。次のいずれかの値です。  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
ボードが Wi-Fi をサポートしていない場合でも、`device.json` ファイルに `testWifiConfig` セクションを含める必要がありますが、属性の値は省略してかまいません。

**`echoServerCertificateConfiguration`**  
セキュアソケットテスト用に設定可能なエコーサーバー証明書生成プレースホルダー。このフィールドは必須です。    
**`certificateGenerationMethod`**  
サーバー証明書を自動的に生成するか、手動で生成するかを指定します。  
**`customPath`**  
`certificateGenerationMethod` が「Custom」の場合は、`certificatePath` と `privateKeyPath` が必要です。    
**`certificatePath`**  
サーバー証明書のファイルパスを指定します。  
**`privateKeyPath`**  
プライベートキーのファイルパスを指定します。  
**`eccCurveFormat`**  
ボードがサポートする曲線形式を指定します。`PKCS11` が `device.json` で「ecc」に設定されている場合に必要です。有効な値は「P224」、「P256」、「P384」、または「P521」です。

**`echoServerConfiguration`**  
WiFi およびセキュアソケットテスト用の設定可能なエコーサーバーポート。このフィールドはオプションです。    
**`securePortForSecureSocket`**  
セキュアソケットテスト用に TLS ありでエコーサーバーをセットアップするために使用されるポート。デフォルト値は 33333 です。設定するポートがファイアウォールまたは社内ネットワークによってブロックされていないことを確認します。  
**`insecurePortForSecureSocket`**  
セキュアソケットテスト用に TLS なしでエコーサーバーをセットアップするために使用されるポート。テストで使用されるデフォルト値は 33334 です。設定するポートがファイアウォールまたは社内ネットワークによってブロックされていないことを確認します。  
**`insecurePortForWiFi`**  
WiFi テスト用に TLS なしでエコーサーバーをセットアップするために使用されるポート。テストで使用されるデフォルト値は 33335 です。設定するポートがファイアウォールまたは社内ネットワークによってブロックされていないことを確認します。

**`otaConfiguration`**  
OTA 設定。[オプション]    
**`otaFirmwareFilePath`**  
ビルドの後に作成された OTA イメージの完全パス。例えば、`{{testData.sourcePath}}/relative-path/to/ota/image/from/source/root`。  
**`deviceFirmwareFileName`**  
MCU デバイスで、OTA ファームウェアがある場所を示す完全ファイルパス。このフィールドを使用しないデバイスもありますが、値は指定しなければなりません。  
**`otaDemoConfigFilePath`**  
`afr-source/vendors/vendor/boards/board/aws_demos/config_files/` 内にある `aws_demo_config.h` への完全パス。これらのファイルは、FreeRTOS が提供する移植コードテンプレートに含まれています。  
**`codeSigningConfiguration`**  
コード署名の設定。  
**`signingMethod`**  
コード署名の方法。想定される値は、`AWS` または `Custom` です。  
北京および寧夏リージョンでは、`Custom` を使用します。`AWS` コード署名は、これらのリージョンではサポートされていません。  
**`signerHashingAlgorithm`**  
デバイスでサポートされているハッシュアルゴリズム。想定される値は、`SHA1` または `SHA256` です。  
**`signerSigningAlgorithm`**  
デバイスでサポートされている署名アルゴリズム。想定される値は、`RSA` または `ECDSA` です。  
**`signerCertificate`**  
OTA 用の信頼された証明書。  
 AWS コード署名方法では、 にアップロードされた信頼された証明書の Amazon リソースネーム (ARN) を使用します AWS Certificate Manager。  
カスタムコード署名方法としては、署名者の証明書ファイルへの絶対パスを使用します。  
信頼された証明書の作成の詳細については、「[コード署名証明書の作成](ota-code-sign-cert.md)」を参照してください。  
**`signerCertificateFileName`**  
デバイスのコード署名証明書のファイル名。この値は、`aws acm import-certificate` コマンド実行時に指定したファイル名と一致する必要があります。  
詳細については、「[コード署名証明書の作成](ota-code-sign-cert.md)」を参照してください。  
**`compileSignerCertificate`**  
`true` コード署名者署名検証証明書がプロビジョニングまたはフラッシュされていない場合、 に設定するため、プロジェクトにコンパイルする必要があります。 は信頼できる証明書 AWS IoT Device Tester を取得し、 にコンパイルします`aws_codesigner_certifiate.h`。  
**`untrustedSignerCertificate`**  
一部の OTA テストで信頼できない証明書として使用される 2 番目の証明書の ARN またはファイルパス。証明書を作成する方法の詳細については、「[コード署名証明書の作成](https://docs.aws.amazon.com/freertos/latest/userguide/ota-code-sign-cert.html)」を参照してください。  
**`signerPlatform`**  
OTA 更新ジョブの作成時に AWS Code Signer が使用する署名およびハッシュアルゴリズム。現在、このフィールドで可能な値は、`AmazonFreeRTOS-TI-CC3220SF` と `AmazonFreeRTOS-Default` です。  
+ `SHA1` および `RSA` の場合は、`AmazonFreeRTOS-TI-CC3220SF` を選択します。
+ `SHA256` および `ECDSA` の場合は、`AmazonFreeRTOS-Default` を選択します。
設定に `SHA256` \$1 `RSA` または `SHA1` \$1 `ECDSA` が必要な場合は、当社に追加のサポートを依頼してください。  
`signingMethod` として `Custom` を選択した場合は、`signCommand` を設定します。  
**`signCommand`**  
カスタムコード署名を実行するために使用するコマンド。テンプレートは `/configs/script_templates` ディレクトリにあります。  
このコマンドには `{{inputImageFilePath}}` と `{{outputSignatureFilePath}}` の 2 つのプレースホルダーが必要です。`{{inputImageFilePath}}` は、IDT によって構築される署名対象のイメージのファイルパスです。`{{outputSignatureFilePath}}` は、スクリプトによって生成される署名のファイルパスです。

**`cmakeConfiguration`**  
CMake の設定 [オプション]  
CMake テストケースを実行するには、ベンダー名、ボード名、および `frToolchainPath` または `compilerName` を指定する必要があります。CMake ツールチェーンへのカスタムパスがある場合は、`cmakeToolchainPath` を指定することもできます。  
**`boardName`**  
テスト対象ボードの名前。ボード名は、`path/to/afr/source/code/vendors/vendor/boards/board` のフォルダ名と同じにする必要があります。  
**`vendorName`**  
テスト対象ボードのベンダー名。ベンダー名は、`path/to/afr/source/code/vendors/vendor` のフォルダ名と同じにする必要があります。  
**`compilerName`**  
コンパイラ名。  
**`frToolchainPath`**  
コンパイラツールチェーンへの完全修飾パス。  
**`cmakeToolchainPath` **  
CMake ツールチェーンへの完全修飾パス。このフィールドはオプションです

**`freertosFileConfiguration`**  
IDT がテストを実行する前に変更する FreeRTOS ファイルの設定。    
**`required`**  
このセクションでは、設定ファイルを移動済みの必須テストを指定します (PKCS11、TLS など)。    
**`configName`**  
設定対象のテストの名前。  
**`filePath`**  
`freertos` リポジトリ内の設定ファイルの絶対パス。`{{testData.sourcePath}}` 変数を使用してパスを定義します。  
**`optional`**  
このセクションでは、設定ファイルを移動済みの必須テストを指定します (OTA、WiFi など)。    
**`configName`**  
設定対象のテストの名前。  
**`filePath`**  
`freertos` リポジトリ内の設定ファイルの絶対パス。`{{testData.sourcePath}}` 変数を使用してパスを定義します。

**注記**  
CMake テストケースを実行するには、ベンダー名、ボード名、および `afrToolchainPath` または `compilerName` を指定する必要があります。CMake ツールチェーンへのカスタムパスがある場合は、`cmakeToolchainPath` を指定することもできます。