

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Crea un pool di dispositivi in IDT per FreerTOS
<a name="lts-cfg-dt-dp"></a>

I dispositivi da testare sono organizzati in pool di dispositivi. Ogni pool di dispositivi è composto da uno o più dispositivi identici. Puoi configurare IDT per FreerTOS per testare un singolo dispositivo o più dispositivi in un pool. Per accelerare il processo di qualificazione, IDT for FreerTOS può testare dispositivi con le stesse specifiche in parallelo. Lo strumento utilizza un metodo Round Robin per eseguire un gruppo di test differente su ciascun dispositivo di un pool.

Il `device.json` file ha un array nel suo livello superiore. Ogni attributo dell'array è un nuovo pool di dispositivi. Ogni pool di dispositivi ha un attributo di array di dispositivi, che ha più dispositivi dichiarati. Nel modello è presente un pool di dispositivi e solo un dispositivo in quel pool di dispositivi. È possibile aggiungere uno o più dispositivi a un pool di dispositivi modificando la sezione `devices` del modello `device.json` nella cartella `configs`.

**Nota**  
Tutti i dispositivi dello stesso pool devono avere le stesse specifiche tecniche e lo stesso SKU. Per abilitare le build parallele del codice sorgente per diversi gruppi di test, IDT for FreeRTOS copia il codice sorgente in una cartella dei risultati all'interno della cartella estratta IDT for FreerTOS. È necessario fare riferimento al percorso del codice sorgente nel comando build o flash utilizzando la variabile. `testdata.sourcePath` IDT for FreerTOS sostituisce questa variabile con un percorso temporaneo del codice sorgente copiato. Per ulteriori informazioni, consulta [IDT per variabili FreerTOS](lts-dt-vars.md).

Di seguito è riportato un `device.json` file di esempio utilizzato per creare un pool di dispositivi con più dispositivi.

```
[
    {
        "id": "pool-id",
        "sku": "sku",
        "features": [
           {
              "name": "Wifi",
              "value": "Yes | No"
           },
           {
              "name": "Cellular",
              "value": "Yes | No"
           },
           {
              "name": "BLE",
              "value": "Yes | No"
          },
          {
             "name": "PKCS11",
             "value": "RSA | ECC | Both"
          },
          {
              "name": "OTA",
              "value": "Yes | No",
              "configs": [
              {
                  "name": "OTADataPlaneProtocol",
                  "value": "MQTT | HTTP | None"
              }
            ]
          },
          {
             "name": "KeyProvisioning",
             "value": "Onboard | Import | Both | No"
          }
        ],
        "devices": [
          {
            "id": "device-id",
            "connectivity": {
              "protocol": "uart",
              "serialPort": "/dev/tty*"
            },
            "secureElementConfig" : {
              "publicKeyAsciiHexFilePath": "absolute-path-to/public-key-txt-file: contains-the-hex-bytes-public-key-extracted-from-onboard-private-key",
              "publiDeviceCertificateArn": "arn:partition:iot:region:account-id:resourcetype:resource:qualifier",
              "secureElementSerialNumber": "secure-element-serialNo-value",
              "preProvisioned"           : "Yes | No",
              "pkcs11JITPCodeVerifyRootCertSupport": "Yes | No"
            },         
            "identifiers": [
              {
                "name": "serialNo",
                "value": "serialNo-value"
              }
            ]
          }
        ]
    }
]
```

I seguenti attributi vengono utilizzati nel file `device.json`:

** `id` **  
Un ID alfanumerico definito dall'utente che identifica in modo univoco un pool di dispositivi. I dispositivi appartenenti a un pool devono essere dello stesso tipo. Durante l'esecuzione di una suite di test, i dispositivi del pool vengono utilizzati per parallelizzare il carico di lavoro.

** `sku` **  
Un valore alfanumerico che identifica in modo univoco la scheda da testare. Il codice SKU viene utilizzato per tenere traccia delle schede qualificate.  
Se desideri inserire la tua scheda nel AWS Partner Device Catalog, lo SKU che specifichi qui deve corrispondere allo SKU che utilizzi nel processo di pubblicazione delle offerte.

** `features` **  
Un array che contiene le funzionalità supportate dal dispositivo. AWS IoT Device Tester utilizza queste informazioni per selezionare i test di qualificazione da eseguire.  
I valori supportati sono:    
** `Wifi` **  
Indica se la scheda dispone di Wi-Fi funzionalità.  
** `Cellular` **  
Indica se la scheda è dotata di funzionalità di rete cellulare.  
** `PKCS11` **  
Indica l'algoritmo di crittografia della chiave pubblica supportato dalla scheda. PKCS11 è obbligatorio per la qualifica. I valori supportati sono `ECC``RSA`, e`Both`. `Both`indica che la scheda supporta entrambi `ECC` e`RSA`.  
** `KeyProvisioning` **  
Indica il metodo di scrittura di un certificato X.509 client affidabile sulla scheda.   

I valori validi sono `Import``Onboard`, `Both` e`No`. `Onboard``Both`, oppure per la qualificazione è richiesta la fornitura delle `No` chiavi. `Import`da sola non è un'opzione valida per la qualificazione.
+ `Import`Utilizzalo solo se la tua scheda consente l'importazione di chiavi private. `Import`La selezione non è una configurazione valida per la qualificazione e deve essere utilizzata solo a scopo di test, in particolare con i casi di test PKCS11. `Onboard`, `Both` o `No` è necessario per la qualificazione.
+ Utilizzalo `Onboard` se la tua scheda supporta le chiavi private integrate (ad esempio, se il tuo dispositivo ha un elemento sicuro o se preferisci generare la tua coppia di chiavi e il tuo certificato del dispositivo). Assicurarsi di aggiungere un elemento `secureElementConfig` in ciascuna delle sezioni del dispositivo e inserire il percorso assoluto del file della chiave pubblica nel campo `publicKeyAsciiHexFilePath`.
+ Utilizzalo `Both` se la tua scheda supporta sia l'importazione di chiavi private che la generazione di chiavi integrate per il provisioning delle chiavi.
+ Utilizzalo `No` se la tua scheda non supporta il provisioning delle chiavi. `No`è un'opzione valida solo quando anche il dispositivo è preconfigurato.  
** `OTA` **  
Indica se la scheda supporta la funzionalità di aggiornamento Over-The-Air (OTA). L'attributo `OtaDataPlaneProtocol` indica quale protocollo di piano dei dati OTA supporta il dispositivo. Per la qualificazione è richiesta una OTA con protocollo dataplane HTTP o MQTT. Per ignorare l'esecuzione dei test OTA durante il test, imposta la funzionalità OTA su e l'attributo su`No`. `OtaDataPlaneProtocol` `None` Questa non sarà una corsa di qualificazione.  
** `BLE` **  
Indica se la scheda supporta Bluetooth Low Energy (BLE).

** `devices.id` **  
Un identificativo univoco definito dall'utente del dispositivo sottoposto a test.

** `devices.connectivity.serialPort` **  
La porta seriale del computer host utilizzato per connettersi ai dispositivi da testare.

** `devices.secureElementConfig.PublicKeyAsciiHexFilePath` **  
Obbligatoria se la tavola NON è `pre-provisioned` o non `PublicDeviceCertificateArn` viene fornita. Poiché `Onboard` è un tipo obbligatorio di Key Provisioning, questo campo è attualmente obbligatorio per il gruppo di FullTransportInterfaceTLS test. Se il dispositivo lo è`pre-provisioned`, `PublicKeyAsciiHexFilePath` è facoltativo e non deve essere incluso.  
Il blocco seguente è un percorso assoluto del file che contiene la chiave pubblica in byte esadecimali estratta dalla chiave `Onboard` privata.   

```
3059 3013 0607 2a86 48ce 3d02 0106 082a
8648 ce3d 0301 0703 4200 04cd 6569 ceb8
1bb9 1e72 339f e8cf 60ef 0f9f b473 33ac
6f19 1813 6999 3fa0 c293 5fae 08f1 1ad0
41b7 345c e746 1046 228e 5a5f d787 d571
dcb2 4e8d 75b3 2586 e2cc 0c
```
Se la chiave pubblica è in formato.der, puoi codificare direttamente in esadecimale la chiave pubblica per generare il file esadecimale.  
Per generare il file esadecimale da una chiave pubblica.der, inserisci il seguente comando: **xxd**  

```
xxd -p pubkey.der > outFile
```
Se la chiave pubblica è in formato.pem, puoi estrarre le intestazioni e i piè di pagina codificati in base64 e decodificarli in formato binario. Quindi, codificate in modo esadecimale la stringa binaria per generare il file esadecimale.  
Per generare un file esadecimale per una chiave pubblica.pem, procedi come segue:  

1. Esegui il **base64** comando seguente per rimuovere l'intestazione e il piè di pagina base64 dalla chiave pubblica. La chiave decodificata, denominata`base64key`, viene quindi emessa nel file: `pubkey.der`

   ```
   base64 —decode base64key > pubkey.der
   ```

1. Esegui il seguente **xxd** comando per `pubkey.der` convertire in formato esadecimale. La chiave risultante viene salvata come `{{outFile}}`

   ```
   xxd -p pubkey.der > {{outFile}}
   ```

** `devices.secureElementConfig.PublicDeviceCertificateArn` **  
L'ARN del certificato del tuo elemento sicuro su cui viene caricato. AWS IoT Core Per informazioni sul caricamento del certificato su AWS IoT Core, consulta i [certificati X.509 client nella Guida](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) per gli *AWS IoT sviluppatori*. 

** `devices.secureElementConfig.SecureElementSerialNumber` **  
(Facoltativo) Il numero di serie dell'elemento sicuro. Il numero di serie viene utilizzato opzionalmente per creare certificati di dispositivo per la fornitura di chiavi JITR.

** `devices.secureElementConfig.preProvisioned` **  
(Facoltativo) Imposta su «Sì» se il dispositivo dispone di un elemento sicuro preconfigurato con credenziali bloccate, che non può importare, creare o distruggere oggetti. Se questo attributo è impostato su **Sì, è necessario fornire le etichette** pkcs11 corrispondenti.

** `devices.secureElementConfig.pkcs11JITPCodeVerifyRootCertSupport` **  
(Facoltativo) Imposta su **Sì** se l'implementazione CorePKCS11 del dispositivo supporta l'archiviazione per JITP. Ciò abiliterà il test JITP durante il `codeverify` test PKCS 11 di base e richiede la fornitura della chiave di verifica del codice, del certificato JITP e delle etichette PKCS 11 del certificato radice.

** `identifiers` **  
(Facoltativo) Un array di coppie nome/valore arbitrarie. Puoi utilizzare questi valori nei comandi di compilazione e flashing descritti nella sezione successiva.