

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan pengaturan untuk perangkat pengujian
<a name="config-settings-device"></a>

Pengaturan build, flash, dan test dibuat dalam `configs/userdata.json` file. Kami mendukung konfigurasi Echo Server dengan memuat sertifikat dan kunci klien dan server di file. `customPath` Untuk informasi selengkapnya, lihat [Menyiapkan server gema](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-echo-server.html) di Panduan Porting *FreeRTOS*. Contoh JSON berikut menunjukkan bagaimana Anda dapat mengkonfigurasi IDT untuk FreeRTOS untuk menguji beberapa perangkat:

```
{
    "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"
            }
        ]
    }
}
```

Berikut ini mencantumkan atribut yang digunakan dalam`userdata.json`:

**`sourcePath`**  
Jalur ke root kode sumber FreeRTOS yang diporting. Untuk pengujian paralel dengan SDK, `sourcePath` dapat diatur menggunakan dudukan `{{userData.sdkConfiguration.path}}` tempat. Contoh:   

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

**`vendorPath`**  
Jalur ke kode FreeRTOS khusus vendor. Untuk pengujian serial, `vendorPath` dapat diatur sebagai jalur absolut. Contoh:  

```
{ "vendorPath":"C:/path-to-freertos/vendors/espressif/boards/esp32" }
```
Untuk pengujian paralel, `vendorPath` dapat diatur menggunakan dudukan `{{testData.sourcePath}}` tempat. Contoh:  

```
{ "vendorPath":"{{testData.sourcePath}}/vendors/espressif/boards/esp32" }
```
`vendorPath`Variabel hanya diperlukan saat berjalan tanpa SDK, variabel dapat dihapus jika tidak.  
Saat menjalankan pengujian secara paralel tanpa SDK, `{{testData.sourcePath}}` placeholder harus digunakan di bidang`vendorPath`,,`buildTool`. `flashTool` Saat menjalankan pengujian dengan satu perangkat, jalur absolut harus digunakan di `flashTool` bidang `vendorPath``buildTool`,,. Saat menjalankan dengan SDK, `{{sdkPath}}` placeholder harus digunakan dalam perintah`sourcePath`,`buildTool`, dan. `flashTool`

**`sdkConfiguration`**  
Jika Anda memenuhi syarat FreeRTOS dengan modifikasi apa pun pada file dan struktur folder di luar apa yang diperlukan untuk porting, maka Anda perlu mengonfigurasi informasi SDK Anda di blok ini. Jika Anda tidak memenuhi syarat dengan FreeRTOS porting di dalam SDK, maka Anda harus menghilangkan blok ini sepenuhnya.    
**`sdkConfiguration.name`**  
Nama SDK yang Anda gunakan dengan FreeRTOS. Jika Anda tidak menggunakan SDK, maka seluruh `sdkConfiguration` blok harus dihilangkan.  
**`sdkConfiguration.version`**  
Versi SDK yang Anda gunakan dengan FreeRTOS. Jika Anda tidak menggunakan SDK, maka seluruh `sdkConfiguration` blok harus dihilangkan.  
**`sdkConfiguration.path`**  
Jalur absolut ke direktori SDK Anda yang berisi kode FreeRTOS Anda. Jika Anda tidak menggunakan SDK, maka seluruh `sdkConfiguration` blok harus dihilangkan.

**`buildTool`**  
Jalur lengkap ke skrip build Anda (.bat atau .sh) yang berisi perintah untuk membangun kode sumber Anda. Semua referensi ke jalur kode sumber dalam perintah build harus diganti dengan AWS IoT Device Tester variabel `{{testdata.sourcePath}}` dan referensi ke jalur SDK harus diganti dengan`{{sdkPath}}`. Gunakan `{{config.idtRootPath}}` placeholder untuk mereferensikan jalur IDT absolut atau relatif. 

**`testStartDelayms`**  
Menentukan berapa milidetik pelari uji FreeRTOS akan menunggu sebelum mulai menjalankan tes. Ini dapat berguna jika perangkat yang diuji mulai mengeluarkan informasi pengujian penting sebelum IDT memiliki kesempatan untuk terhubung dan mulai masuk karena jaringan atau latensi lainnya. Nilai maksimum yang diizinkan adalah 30000 ms (30 detik). Nilai ini hanya berlaku untuk kelompok uji FreeRTOS, dan tidak berlaku untuk kelompok uji lain yang tidak menggunakan pelari uji FreeRTOS, seperti tes OTA.

**`flashTool`**  
Jalur lengkap ke skrip flash Anda (.sh atau.bat) yang berisi perintah flash untuk perangkat Anda. Semua referensi ke jalur kode sumber dalam perintah flash harus diganti oleh variabel IDT untuk FreeRTOS `{{testdata.sourcePath}}` dan semua referensi ke jalur SDK Anda harus diganti dengan IDT untuk variabel FreeRTOS. Gunakan placeholder untuk mereferensikan jalur IDT absolut atau relatif. `{{sdkPath}}` `{{config.idtRootPath}}`    
**`buildImageInfo`**    
**`testsImageName`**  
Nama file yang dihasilkan oleh perintah build saat membuat pengujian dari `freertos-source/tests` folder.  
**`demosImageName`**  
Nama file yang dihasilkan oleh perintah build saat membuat pengujian dari `freertos-source/demos` folder.

**`clientWifiConfig`**  
Konfigurasi Wi-Fi klien. Tes perpustakaan Wi-Fi memerlukan papan MCU untuk terhubung ke dua titik akses. (Dua titik akses bisa sama.) Atribut ini mengkonfigurasi pengaturan Wi-Fi untuk titik akses pertama. Beberapa kasus uji Wi-Fi mengharapkan titik akses memiliki keamanan dan tidak terbuka. Pastikan kedua titik akses berada pada subnet yang sama dengan komputer host yang menjalankan IDT.    
**`wifi_ssid`**  
Wi-Fi SSID.  
**`wifi_password`**  
Kata sandi Wi-Fi.  
**`wifiSecurityType`**  
Jenis keamanan Wi-Fi yang digunakan. Salah satu nilai:  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
Jika papan Anda tidak mendukung Wi-Fi, Anda masih harus menyertakan `clientWifiConfig` bagian dalam `device.json` file Anda, tetapi Anda dapat menghilangkan nilai untuk atribut ini.

**`testWifiConfig`**  
Konfigurasi Wi-Fi uji. Tes perpustakaan Wi-Fi memerlukan papan MCU untuk terhubung ke dua titik akses. (Dua titik akses bisa sama.) Atribut ini mengkonfigurasi pengaturan Wi-Fi untuk titik akses kedua. Beberapa kasus uji Wi-Fi mengharapkan titik akses memiliki keamanan dan tidak terbuka. Pastikan kedua titik akses berada pada subnet yang sama dengan komputer host yang menjalankan IDT.    
**`wifiSSID`**  
Wi-Fi SSID.  
**`wifiPassword`**  
Kata sandi Wi-Fi.  
**`wifiSecurityType`**  
Jenis keamanan Wi-Fi yang digunakan. Salah satu nilai:  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
Jika papan Anda tidak mendukung Wi-Fi, Anda masih harus menyertakan `testWifiConfig` bagian dalam `device.json` file Anda, tetapi Anda dapat menghilangkan nilai untuk atribut ini.

**`echoServerCertificateConfiguration`**  
Placeholder pembuatan sertifikat server gema yang dapat dikonfigurasi untuk pengujian soket aman. Bidang ini wajib diisi.    
**`certificateGenerationMethod`**  
Menentukan apakah sertifikat server dihasilkan secara otomatis atau disediakan secara manual.  
**`customPath`**  
Jika `certificateGenerationMethod` “Kustom”, `certificatePath` dan `privateKeyPath` diperlukan.    
**`certificatePath`**  
Menentukan filepath untuk sertifikat server.  
**`privateKeyPath`**  
Menentukan filepath untuk kunci pribadi.  
**`eccCurveFormat`**  
Menentukan format kurva didukung oleh papan. Diperlukan saat `PKCS11` disetel ke “ecc” di`device.json`. Nilai yang valid adalah “P224", “P256", “P384", atau “P521".

**`echoServerConfiguration`**  
Port server gema yang dapat dikonfigurasi untuk WiFi dan pengujian soket aman. Bidang ini bersifat opsional.    
**`securePortForSecureSocket`**  
Port yang digunakan untuk mengatur server gema dengan TLS untuk uji soket aman. Nilai defaultnya adalah 33333. Pastikan port yang dikonfigurasi tidak diblokir oleh firewall atau jaringan perusahaan Anda.  
**`insecurePortForSecureSocket`**  
Port yang digunakan untuk mengatur server gema tanpa TLS untuk uji soket aman. Nilai default yang digunakan dalam pengujian adalah 33334. Pastikan port yang dikonfigurasi tidak diblokir oleh firewall atau jaringan perusahaan Anda.  
**`insecurePortForWiFi`**  
Port yang digunakan untuk setup server echo tanpa TLS untuk WiFi pengujian. Nilai default yang digunakan dalam pengujian adalah 33335. Pastikan port yang dikonfigurasi tidak diblokir oleh firewall atau jaringan perusahaan Anda.

**`otaConfiguration`**  
Konfigurasi OTA. [Opsional]    
**`otaFirmwareFilePath`**  
Jalur lengkap ke gambar OTA yang dibuat setelah build. Misalnya, `{{testData.sourcePath}}/relative-path/to/ota/image/from/source/root`.  
**`deviceFirmwareFileName`**  
Jalur file lengkap pada perangkat MCU tempat firmware OTA berada. Beberapa perangkat tidak menggunakan bidang ini, tetapi Anda masih harus memberikan nilai.  
**`otaDemoConfigFilePath`**  
Jalan lengkap ke`aws_demo_config.h`, ditemukan di`afr-source/vendors/vendor/boards/board/aws_demos/config_files/`. File-file ini termasuk dalam template kode porting yang disediakan FreeRTOS.   
**`codeSigningConfiguration`**  
Konfigurasi penandatanganan kode.  
**`signingMethod`**  
Metode penandatanganan kode. Nilai yang mungkin adalah `AWS` atau `Custom`.  
Untuk Wilayah Beijing dan Ningxia, gunakan`Custom`. `AWS`penandatanganan kode tidak didukung di Wilayah ini.  
**`signerHashingAlgorithm`**  
Algoritma hashing didukung pada perangkat. Nilai yang mungkin adalah `SHA1` atau `SHA256`.   
**`signerSigningAlgorithm`**  
Algoritma penandatanganan didukung pada perangkat. Nilai yang mungkin adalah `RSA` atau `ECDSA`.  
**`signerCertificate`**  
Sertifikat tepercaya yang digunakan untuk OTA.  
Untuk metode penandatanganan AWS kode, gunakan Amazon Resource Name (ARN) untuk sertifikat tepercaya yang diunggah ke file. AWS Certificate Manager  
Untuk metode penandatanganan kode kustom, gunakan jalur absolut ke file sertifikat penandatangan.  
Untuk informasi selengkapnya tentang membuat sertifikat tepercaya, lihat[Buat sertifikat penandatanganan kode](ota-code-sign-cert.md).   
**`signerCertificateFileName`**  
Nama file sertifikat penandatanganan kode pada perangkat. Nilai ini harus sesuai dengan nama file yang Anda berikan saat menjalankan `aws acm import-certificate` perintah.  
Untuk informasi selengkapnya, lihat [Buat sertifikat penandatanganan kode](ota-code-sign-cert.md).   
**`compileSignerCertificate`**  
Setel ke `true` jika sertifikat verifikasi tanda tangan penandatangan kode tidak disediakan atau di-flash, sehingga harus dikompilasi ke dalam proyek. AWS IoT Device Tester mengambil sertifikat tepercaya dan mengkompilasinya menjadi. `aws_codesigner_certifiate.h`  
**`untrustedSignerCertificate`**  
ARN atau filepath untuk sertifikat kedua yang digunakan dalam beberapa tes OTA sebagai sertifikat yang tidak tepercaya. Untuk informasi selengkapnya tentang membuat sertifikat, lihat [Membuat sertifikat penandatanganan kode](https://docs.aws.amazon.com/freertos/latest/userguide/ota-code-sign-cert.html).  
**`signerPlatform`**  
Algoritma penandatanganan dan hashing yang digunakan AWS Code Signer saat membuat pekerjaan pembaruan OTA. Saat ini, nilai yang mungkin untuk bidang ini adalah `AmazonFreeRTOS-TI-CC3220SF` dan`AmazonFreeRTOS-Default`.   
+ Pilih `AmazonFreeRTOS-TI-CC3220SF` jika `SHA1` dan`RSA`. 
+ Pilih `AmazonFreeRTOS-Default` jika `SHA256` dan`ECDSA`.
Jika Anda membutuhkan `SHA256` \$1 `RSA` atau `SHA1` \$1 `ECDSA` untuk konfigurasi Anda, hubungi kami untuk dukungan lebih lanjut.  
Konfigurasikan `signCommand` jika Anda memilih `Custom` untuk`signingMethod`.  
**`signCommand`**  
Perintah yang digunakan untuk melakukan penandatanganan kode kustom. Anda dapat menemukan template di `/configs/script_templates` direktori.   
Dua placeholder `{{inputImageFilePath}}` dan `{{outputSignatureFilePath}}` diperlukan dalam perintah. `{{inputImageFilePath}}`adalah jalur file gambar yang dibangun oleh IDT untuk ditandatangani. `{{outputSignatureFilePath}}`adalah jalur file dari tanda tangan yang akan dihasilkan oleh skrip.

**`cmakeConfiguration`**  
CMake konfigurasi [Opsional]  
Untuk menjalankan kasus CMake uji, Anda harus memberikan nama papan, nama vendor, dan salah satu `frToolchainPath` atau`compilerName`. Anda juga dapat memberikan `cmakeToolchainPath` jika Anda memiliki jalur khusus ke CMake rantai alat.  
**`boardName`**  
Nama papan yang diuji. Nama papan harus sama dengan nama folder di bawah`path/to/afr/source/code/vendors/vendor/boards/board`.  
**`vendorName`**  
Nama vendor untuk papan yang diuji. Vendor harus sama dengan nama folder di bawah`path/to/afr/source/code/vendors/vendor`.  
**`compilerName`**  
Nama kompiler.  
**`frToolchainPath`**  
Jalur yang sepenuhnya memenuhi syarat ke toolchain kompiler  
**`cmakeToolchainPath` **  
Jalur yang sepenuhnya memenuhi syarat ke rantai alat. CMake Bidang ini opsional

**`freertosFileConfiguration`**  
Konfigurasi file FreerTOS yang IDT memodifikasi sebelum menjalankan tes.    
**`required`**  
Bagian ini menentukan tes wajib yang file konfigurasinya telah Anda pindahkan, misalnya, TLS PKCS11, dan sebagainya.    
**`configName`**  
Nama tes yang sedang dikonfigurasi.  
**`filePath`**  
Jalur absolut ke file konfigurasi dalam `freertos` repo. Gunakan `{{testData.sourcePath}}` variabel untuk menentukan jalur.  
**`optional`**  
Bagian ini menentukan tes opsional yang file konfigurasinya telah Anda pindahkan, misalnya OTA, WiFi, dan sebagainya.    
**`configName`**  
Nama tes yang sedang dikonfigurasi.  
**`filePath`**  
Jalur absolut ke file konfigurasi dalam `freertos` repo. Gunakan `{{testData.sourcePath}}` variabel untuk menentukan jalur.

**catatan**  
Untuk menjalankan kasus CMake uji, Anda harus memberikan nama papan, nama vendor, dan salah satu `afrToolchainPath` atau`compilerName`. Anda juga dapat memberikan `cmakeToolchainPath` jika Anda memiliki jalur khusus ke CMake rantai alat.