

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

# Konfigurasikan pengaturan build, flash, dan uji
<a name="lts-cfg-dt-ud"></a>

IDT untuk FreeRTOS membangun dan mem-flash tes ke papan Anda secara otomatis. Untuk mengaktifkan ini, Anda harus mengkonfigurasi IDT untuk menjalankan perintah build dan flash untuk perangkat keras Anda. Pengaturan perintah build dan flash dikonfigurasi dalam file `userdata.json` template yang terletak di `config` folder.

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

Pengaturan build, flash, dan test dibuat dalam `configs/userdata.json` file. Contoh JSON berikut menunjukkan bagaimana Anda dapat mengkonfigurasi IDT untuk FreeRTOS untuk menguji beberapa perangkat:

```
{
    "sourcePath": "</path/to/freertos>",
    "retainModifiedSourceDirectories": true | false,
    "freeRTOSVersion": "<freertos-version>",
    "freeRTOSTestParamConfigPath": "{{testData.sourcePath}}/path/from/source/path/to/test_param_config.h",
    "freeRTOSTestExecutionConfigPath": "{{testData.sourcePath}}/path/from/source/path/to/test_execution_config.h",
    "buildTool": {
        "name": "your-build-tool-name",
        "version": "your-build-tool-version",
        "command": [
            "<build command> -any-additional-flags {{testData.sourcePath}}"
        ]
    },
    "flashTool": {
        "name": "your-flash-tool-name",
        "version": "your-flash-tool-version",
        "command": [
            "<flash command> -any-additional-flags {{testData.sourcePath}} -any-additional-flags"
        ]
    },
    "testStartDelayms": 0,
    "echoServerConfiguration": {
      "keyGenerationMethod": "EC | RSA",
      "serverPort": 9000      
    },
    "otaConfiguration": {
        "otaE2EFirmwarePath": "{{testData.sourcePath}}/relative-path-to/ota-image-generated-in-build-process",
        "otaPALCertificatePath": "/path/to/ota/pal/certificate/on/device",
        "deviceFirmwarePath" : "/path/to/firmware/image/name/on/device",
        "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",
            "untrustedSignerCertificate": "arn:partition:service:region:account-id:resourcetype:resource:qualifier",
            "signerCertificateFileName": "signerCertificate-file-name",
            "compileSignerCertificate": true | false,
            // ***********Use signerPlatform if you choose AWS for signingMethod***************
            "signerPlatform": "AmazonFreeRTOS-Default | AmazonFreeRTOS-TI-CC3220SF"            
            ]
         }   
    },
    **********
    This section is used for PKCS #11 labels of private key, public key, device certificate, code verification key, JITP certificate, and root certificate.
    When configuring PKCS11, you set up labels and you must provide the labels of the device certificate, public key, 
    and private key for the key generation type (EC or RSA) it was created with. If your device supports PKCS11 storage of JITP certificate, 
    code verification key, and root certificate, set 'pkcs11JITPCodeVerifyRootCertSupport' to 'Yes' in device.json and provide the corresponding labels.
    **********
    "pkcs11LabelConfiguration":{
        "pkcs11LabelDevicePrivateKeyForTLS": "<device-private-key-label>",
        "pkcs11LabelDevicePublicKeyForTLS": "<device-public-key-label>",
        "pkcs11LabelDeviceCertificateForTLS": "<device-certificate-label>",
        "pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS": "<preprovisioned-ec-device-private-key-label>",
        "pkcs11LabelPreProvisionedECDevicePublicKeyForTLS": "<preprovisioned-ec-device-public-key-label>",
        "pkcs11LabelPreProvisionedECDeviceCertificateForTLS": "<preprovisioned-ec-device-certificate-label>",
        "pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS": "<preprovisioned-rsa-device-private-key-label>",
        "pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS": "<preprovisioned-rsa-device-public-key-label>",
        "pkcs11LabelPreProvisionedRSADeviceCertificateForTLS": "<preprovisioned-rsa-device-certificate-label>",
        "pkcs11LabelCodeVerifyKey": "<code-verification-key-label>",
        "pkcs11LabelJITPCertificate": "<JITP-certificate-label>",
        "pkcs11LabelRootCertificate": "<root-certificate-label>"
     }   
  }
```

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

**  `sourcePath` **  
Jalur ke root kode sumber FreeRTOS yang diporting.

**  `retainModifiedSourceDirectories` **  
(Opsional) Memeriksa apakah akan mempertahankan direktori sumber yang dimodifikasi yang digunakan selama pembuatan dan flashing untuk tujuan debugging. Jika disetel ke`true`, direktori sumber yang dimodifikasi diberi nama RetainedSrc dan ditemukan dalam folder log hasil di setiap grup uji yang dijalankan. Jika tidak disertakan, bidang default ke. `false`

**  `freeRTOSTestParamConfigPath` **  
Jalur ke `test_param_config.h` file untuk FreeRTOS-Libraries-Integration-Tests integrasi. File ini harus menggunakan variabel `{{testData.sourcePath}}` placeholder untuk membuatnya relatif terhadap root kode sumber. AWS IoT Device Tester menggunakan parameter dalam file ini untuk mengkonfigurasi tes.

**  `freeRTOSTestExecutionConfigPath` **  
Jalur ke `test_execution_config.h` file untuk FreeRTOS-Libraries-Integration-Tests integrasi. File ini harus menggunakan variabel `{{testData.sourcePath}}` placeholder untuk membuatnya relatif terhadap root repositori. AWS IoT Device Tester menggunakan file ini untuk mengontrol tes mana yang harus dijalankan.

**  `freeRTOSVersion` **  
Versi FreeRTOS termasuk versi patch yang digunakan dalam implementasi Anda. Lihat [Versi FreeRTOS yang didukung AWS IoT Device Tester untuk versi FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/dev-test-versions-afr.html) yang kompatibel dengan untuk FreeRTOS. AWS IoT Device Tester 

**  `buildTool` **  
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}}`. Gunakan `{{config.idtRootPath}}` placeholder untuk mereferensikan skrip build relatif terhadap jalur AWS IoT Device Tester root.

**  `flashTool` **  
Perintah untuk mem-flash gambar ke perangkat Anda. Semua referensi ke jalur kode sumber dalam perintah flashash harus diganti dengan AWS IoT Device Tester variabel`{{testData.sourcePath}}`. Gunakan `{{config.idtRootPath}}` placeholder untuk mereferensikan skrip flash relatif terhadap jalur AWS IoT Device Tester root.  
Struktur pengujian integrasi baru dengan FRQ 2.0 tidak memerlukan variabel jalur seperti `{{enableTests}}` dan`{{buildImageName}}`. Tes OTA End to End dijalankan dengan template konfigurasi yang disediakan di [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/blob/main/config_template/) GitHub repositori. Jika file dalam GitHub repositori ada di proyek sumber induk Anda, kode sumber tidak berubah di antara pengujian. Jika image build yang berbeda untuk OTA End to End diperlukan, Anda harus membuat gambar ini dalam skrip build dan menentukannya di `userdata.json` file yang ditentukan di bawah`otaConfiguration`. 

**  `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 masalah latensi lainnya. Nilai ini hanya berlaku untuk kelompok uji FreeRTOS, dan tidak untuk kelompok uji lain yang tidak menggunakan pelari uji FreeRTOS, seperti tes OTA. Jika Anda menerima kesalahan terkait dengan **10 yang diharapkan tetapi menerima 5**, bidang ini harus disetel ke 5000.

**  `echoServerConfiguration` **  
Konfigurasi untuk mengatur server gema untuk tes TLS. Bidang ini wajib diisi.    
** `keyGenerationMethod` **  
Server gema dikonfigurasi dengan opsi ini. Pilihannya adalah EC, atau RSA.  
** `serverPort` **  
Nomor port tempat server echo berjalan.

**  `otaConfiguration` **  
Konfigurasi untuk tes OTA PAL dan OTA E2E. Bidang ini wajib diisi.    
**`otaE2EFirmwarePath`**  
Jalur ke gambar bin OTA yang digunakan IDT untuk pengujian OTA End to End.  
** `otaPALCertificatePath` **  
Jalur ke sertifikat untuk uji OTA PAL pada perangkat. Ini digunakan untuk memverifikasi tanda tangan. Misalnya, **ecdsa-sha256-signer.crt.pem**.  
** `deviceFirmwarePath` **  
Jalur ke nama kode keras untuk gambar firmware untuk boot. Jika perangkat Anda TIDAK menggunakan sistem file untuk boot firmware, tentukan bidang ini sebagai`'NA'`. Jika perangkat Anda menggunakan sistem file untuk boot firmware, tentukan jalur atau nama ke image boot firmware.  
** `codeSigningConfiguration` **    
** `signingMethod` **  
Metode penandatanganan kode. Nilai yang mungkin adalah AWS atau Kustom.  
Untuk Wilayah Beijing dan Ningxia, gunakan Custom. AWS penandatanganan kode tidak didukung di wilayah itu.  
** `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 Certificate Manager AWS . Untuk metode penandatanganan kode kustom, gunakan jalur absolut ke file sertifikat penandatangan. Untuk informasi tentang membuat sertifikat tepercaya, lihat [Membuat sertifikat penandatanganan kode](https://docs.aws.amazon.com/freertos/latest/userguide/ota-code-sign-cert.html).  
** `untrustedSignerCertificate` **  
ARN atau filepath untuk sertifikat kedua yang digunakan dalam beberapa tes OTA sebagai sertifikat yang tidak tepercaya. Untuk informasi tentang membuat sertifikat, lihat [Membuat sertifikat penandatanganan kode](https://docs.aws.amazon.com//freertos/latest/userguide/ota-code-sign-cert.html).  
** `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.  
** `compileSignerCertificate` **  
Nilai Boolean yang menentukan status sertifikat verifikasi tanda tangan. Nilai yang valid adalah `true` dan `false`.   
Tetapkan nilai ini ke **true** jika sertifikat verifikasi tanda tangan penandatangan kode tidak disediakan atau di-flash. Itu harus dikompilasi ke dalam proyek. AWS IoT Device Tester mengambil sertifikat tepercaya dan mengkompilasinya menjadi. `aws_codesigner_certificate.h`   
** `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` **  
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.

**  `pkcs11LabelConfiguration` **  
PKCS11 konfigurasi label memerlukan setidaknya satu set label label sertifikat perangkat, label kunci publik, dan label kunci pribadi untuk menjalankan grup PKCS11 pengujian. PKCS11 Label yang diperlukan didasarkan pada konfigurasi perangkat Anda dalam `device.json` file. Jika pre-provisioned disetel ke **Yes** in`device.json`, maka label yang diperlukan harus salah satu di bawah ini tergantung pada apa yang dipilih untuk fitur tersebut. PKCS11   
+ `PreProvisionedEC`
+ `PreProvisionedRSA`
Jika pra-penyediaan disetel ke **No** in`device.json`, maka label yang diperlukan adalah:  
+ `pkcs11LabelDevicePrivateKeyForTLS`
+ `pkcs11LabelDevicePublicKeyForTLS`
+ `pkcs11LabelDeviceCertificateForTLS`
Tiga label berikut diperlukan hanya jika Anda memilih **Ya** untuk `pkcs11JITPCodeVerifyRootCertSupport` dalam `device.json` file Anda.  
+ `pkcs11LabelCodeVerifyKey`
+ `pkcs11LabelRootCertificate`
+ `pkcs11LabelJITPCertificate`
Nilai untuk bidang ini harus sesuai dengan nilai yang ditentukan dalam Panduan Porting [FreerTOS](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-pkcs.html).     
** `pkcs11LabelDevicePrivateKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci pribadi. Untuk perangkat dengan dukungan onboard dan impor dari penyediaan kunci, label ini digunakan untuk pengujian. Label ini mungkin berbeda dari yang ditentukan untuk kasus yang telah disediakan sebelumnya. Jika Anda memiliki penyediaan kunci yang disetel ke **Tidak** dan disetel sebelumnya ke **Ya**, di`device.json`, ini akan menjadi tidak terdefinisi.  
** `pkcs11LabelDevicePublicKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci publik. Untuk perangkat dengan dukungan onboard dan impor dari penyediaan kunci, label ini digunakan untuk pengujian. Label ini mungkin berbeda dari yang ditentukan untuk kasus yang telah disediakan sebelumnya. Jika Anda memiliki penyediaan kunci yang disetel ke **Tidak** dan disetel sebelumnya ke **Ya**, di`device.json`, ini akan menjadi tidak terdefinisi.  
** `pkcs11LabelDeviceCertificateForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari sertifikat perangkat. Untuk perangkat dengan dukungan onboard dan impor dari penyediaan kunci, label ini akan digunakan untuk pengujian. Label ini mungkin berbeda dari yang ditentukan untuk kasus yang telah disediakan sebelumnya. Jika Anda memiliki penyediaan kunci yang disetel ke **Tidak** dan disetel sebelumnya ke **Ya**, di`device.json`, ini akan menjadi tidak terdefinisi.  
** `pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci pribadi. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci EC, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS`, atau keduanya harus disediakan. Label ini mungkin berbeda dari yang ditentukan untuk kasus onboard dan impor.  
** `pkcs11LabelPreProvisionedECDevicePublicKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci publik. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci EC, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS`, atau keduanya harus disediakan. Label ini mungkin berbeda dari yang ditentukan untuk kasus onboard dan impor.  
** `pkcs11LabelPreProvisionedECDeviceCertificateForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari sertifikat perangkat. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci EC, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedRSADeviceCertificateForTLS`, atau keduanya harus disediakan. Label ini mungkin berbeda dari yang ditentukan untuk kasus onboard dan impor.  
** `pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci pribadi. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci RSA, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS`, atau keduanya harus disediakan.  
** `pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci publik. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci RSA, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedECDevicePublicKeyForTLS`, atau keduanya harus disediakan.  
** `pkcs11LabelPreProvisionedRSADeviceCertificateForTLS` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari sertifikat perangkat. Untuk perangkat dengan elemen aman atau keterbatasan perangkat keras, ini akan memiliki label berbeda untuk mempertahankan AWS IoT kredensyal. Jika perangkat Anda mendukung pra-penyediaan dengan kunci RSA, berikan label ini. Ketika preProvisionEd disetel ke **Yes** in`device.json`, label ini,`pkcs11LabelPreProvisionedECDeviceCertificateForTLS`, atau keduanya harus disediakan.  
** `pkcs11LabelCodeVerifyKey` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari kunci verifikasi kode. Jika perangkat Anda memiliki dukungan penyimpanan PKCS \$111 dari sertifikat JITP, kunci verifikasi kode, dan sertifikat root, berikan label ini. Ketika `pkcs11JITPCodeVerifyRootCertSupport` in `device.json` diatur ke **Ya**, label ini harus disediakan.  
** `pkcs11LabelJITPCertificate` **  
(Opsional) Label ini digunakan untuk label PKCS \$111 dari sertifikat JITP. Jika perangkat Anda memiliki dukungan penyimpanan PKCS \$111 dari sertifikat JITP, kunci verifikasi kode, dan sertifikat root, berikan label ini. Ketika `pkcs11JITPCodeVerifyRootCertSupport` in `device.json` diatur ke **Ya**, label ini harus disediakan.

# IDT untuk variabel FreeRTOS
<a name="lts-dt-vars"></a>

Perintah untuk membangun kode Anda dan mem-flash perangkat mungkin memerlukan konektivitas atau informasi lain tentang perangkat Anda agar berhasil berjalan. AWS IoT Device Tester memungkinkan Anda untuk mereferensikan informasi perangkat dalam flash dan membangun perintah menggunakan [JsonPath](https://goessner.net/articles/JsonPath/). Dengan menggunakan JsonPath ekspresi sederhana, Anda dapat mengambil informasi yang diperlukan yang ditentukan dalam `device.json` file Anda.

## Variabel jalur
<a name="path-variables-lts"></a>

IDT untuk FreeRTOS mendefinisikan variabel jalur berikut yang dapat digunakan dalam baris perintah dan file konfigurasi:

** `{{testData.sourcePath}}` **  
Memperluas ke jalur kode sumber. Jika Anda menggunakan variabel ini, itu harus digunakan dalam perintah flash dan build.

** `{{device.connectivity.serialPort}}` **  
Memperluas ke port serial.

** `{{device.identifiers[?(@.name == 'serialNo')].value[0]}}` **  
Memperluas ke nomor seri perangkat Anda.

** `{{config.idtRootPath}}` **  
Memperluas ke jalur AWS IoT Device Tester root.