

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração de parâmetros para testar dispositivos
<a name="lts-config-settings-device"></a>

As configurações de compilação, atualização e teste são feitas no arquivo `configs/userdata.json`. O seguinte exemplo de JSON mostra como é possível configurar o IDT para FreeRTOS para testar vários dispositivos:

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

Veja a seguir uma lista dos recursos usados no `userdata.json`:

**  `sourcePath` **  
O caminho para a raiz do código-fonte transferido do FreeRTOS.

**  `retainModifiedSourceDirectories` **  
(Opcional) Verifica se deve reter os diretórios de origem modificados usados durante a compilação e a atualização para fins de depuração. Se definido como `true`, os diretórios de origem modificados são denominados RetainedSrc e são encontrados nas pastas de log de resultados em cada execução do grupo de teste. Se não for incluído, o campo assume `false` como padrão.

**  `freeRTOSTestParamConfigPath` **  
O caminho para o `test_param_config.h` arquivo para FreeRTOS-Libraries-Integration-Tests integração. Esse arquivo deve usar a variável de `{{testData.sourcePath}}` espaço reservado para torná-lo relativo à raiz do código-fonte. AWS IoT Device Tester usa os parâmetros desse arquivo para configurar os testes.

**  `freeRTOSTestExecutionConfigPath` **  
O caminho para o `test_execution_config.h` arquivo para FreeRTOS-Libraries-Integration-Tests integração. Esse arquivo deve usar a variável de `{{testData.sourcePath}}` espaço reservado para torná-lo relativo à raiz do repositório. AWS IoT Device Tester usa esse arquivo para controlar quais testes devem ser executados.

**  `freeRTOSVersion` **  
A versão dos FreeRTOS, incluindo a versão do patch usada em sua implementação. Consulte [Versões suportadas do FreeRTOS AWS IoT Device Tester para as versões do](https://docs.aws.amazon.com/freertos/latest/userguide/dev-test-versions-afr.html) FreeRTOS compatíveis com o FreeRTOS. AWS IoT Device Tester 

**  `buildTool` **  
O comando para compilar o código-fonte. Todas as referências ao caminho do código-fonte no comando build devem ser substituídas pela AWS IoT Device Tester variável`{{testData.sourcePath}}`. Use o `{{config.idtRootPath}}` espaço reservado para referenciar um script de construção em relação ao caminho AWS IoT Device Tester raiz.

**  `flashTool` **  
O comando para exibir uma imagem em seu dispositivo. Todas as referências ao caminho do código-fonte no comando f.ash devem ser substituídas pela AWS IoT Device Tester variável`{{testData.sourcePath}}`. Use o `{{config.idtRootPath}}` espaço reservado para referenciar um script flash em relação ao caminho AWS IoT Device Tester raiz.  
A nova estrutura de testes de integração com o FRQ 2.0 não requer variáveis de caminho como `{{enableTests}}` e `{{buildImageName}}`. Os testes OTA End to End são executados com os modelos de configuração fornecidos no [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/blob/main/config_template/) GitHub repositório. Se os arquivos no GitHub repositório estiverem presentes no seu projeto fonte principal, o código-fonte não será alterado entre os testes. Se for necessária uma imagem de compilação diferente para o OTA End to End, esta imagem deverá ser criada no script de compilação e especificada no arquivo `userdata.json` especificado abaixo `otaConfiguration`. 

**  `testStartDelayms` **  
Especifica quantos milissegundos o executor de testes do FreeRTOS aguardará antes de começar a executar os testes. Isto pode ser útil se o dispositivo em teste começar a gerar informações de teste importantes antes que o IDT tenha a chance de se conectar e iniciar o registro em log devido à rede ou outros problemas de latência. Este valor é aplicável somente aos grupos de teste do FreeRTOS, e não a outros grupos de teste que não utilizam o executor de testes do FreeRTOS, como os testes OTA. Se receber um erro relacionado a **10 esperados, mas cinco recebidos**, este campo deverá ser definido como 5.000.

**  `echoServerConfiguration` **  
A configuração para configurar o servidor de eco para o teste TLS. Este campo é obrigatório.    
** `keyGenerationMethod` **  
O servidor echo está configurado com esta opção. As opções são EC ou RSA.  
** `serverPort` **  
O número da porta na qual o servidor echo é executado.

**  `otaConfiguration` **  
A configuração para testes OTA PAL e OTA E2E. Este campo é obrigatório.    
**`otaE2EFirmwarePath`**  
O caminho para a imagem do compartimento OTA que o IDT usa para os testes do OTA End to End.  
** `otaPALCertificatePath` **  
O caminho para o certificado para o teste OTA PAL no dispositivo. Isto é usado para verificar a assinatura. Por exemplo, **ecdsa-sha256-signer.crt.pem**.  
** `deviceFirmwarePath` **  
O caminho para o nome com codificação rígida da imagem do firmware a ser inicializada. Se o seu dispositivo NÃO usar o sistema de arquivos para inicialização do firmware, especifique este campo como `'NA'`. Se o seu dispositivo usa o sistema de arquivos para inicialização do firmware, especifique o caminho ou o nome da imagem de inicialização do firmware.  
** `codeSigningConfiguration` **    
** `signingMethod` **  
O método de assinatura de código. Os valores possíveis são AWS ou Custom.  
Para as regiões de Pequim e Ningxia, use Personalizado. AWS a assinatura de código não é suportada nessa região.  
** `signerHashingAlgorithm` **  
O algoritmo de hash ao qual o dispositivo oferece suporte. Os valores possíveis são `SHA1` ou `SHA256`.  
** `signerSigningAlgorithm` **  
O algoritmo de assinatura ao qual o dispositivo oferece suporte. Os valores possíveis são `RSA` ou `ECDSA`.  
** `signerCertificate` **  
O certificado de confiança usado para OTA. Para o método de assinatura de AWS código, use o Amazon Resource Name (ARN) para o certificado confiável carregado no AWS Certificate Manager. Para o método de assinatura de código personalizado, use o caminho absoluto para o arquivo de certificado do assinante. Para obter mais informações sobre como criar um certificado confiável, consulte [Criar um certificado de assinatura de código](https://docs.aws.amazon.com/freertos/latest/userguide/ota-code-sign-cert.html).  
** `untrustedSignerCertificate` **  
O ARN ou caminho de arquivo de um segundo certificado usado em alguns testes OTA como um certificado não confiável. Para obter informações sobre como criar um certificado, consulte [Criar um certificado de assinatura de código](https://docs.aws.amazon.com//freertos/latest/userguide/ota-code-sign-cert.html).  
** `signerCertificateFileName` **  
O nome do arquivo do certificado de assinatura de código no dispositivo. Este valor deve corresponder ao nome do arquivo fornecido ao executar o comando `aws acm import-certificate`.  
** `compileSignerCertificate` **  
Valor booleano que determina o status do certificado de verificação de assinatura. Os valores válidos são `true` e `false`.   
Defina este valor como **verdadeiro** se o certificado de verificação da assinatura do signatário do código não for provisionado ou exibido. Ele deve ser compilado no projeto. AWS IoT Device Tester busca o certificado confiável e o compila em. `aws_codesigner_certificate.h`   
** `signerPlatform` **  
O algoritmo de assinatura e hashing que o AWS Code Signer usa ao criar o trabalho de atualização do OTA. Atualmente, os valores possíveis para este campo são `AmazonFreeRTOS-TI-CC3220SF` e `AmazonFreeRTOS-Default`.  
+ Escolha `AmazonFreeRTOS-TI-CC3220SF` se `SHA1` e `RSA`.
+ Escolha `AmazonFreeRTOS-Default` se `SHA256` e `ECDSA`.
+ Se você precisar de `SHA256` \| `RSA` ou `SHA1` \| `ECDSA` para sua configuração, entre em contato conosco para obter mais suporte.
+ Configure `signCommand` se você escolheu `Custom` para `signingMethod`.  
** `signCommand` **  
Dois espaços reservados `{{inputImageFilePath}}` e `{{outputSignatureFilePath}}` são necessários no comando. `{{inputImageFilePath}}` é o caminho do arquivo da imagem criada pelo IDT a ser assinado. `{{outputSignatureFilePath}} ` é o caminho do arquivo da assinatura que será gerado pelo script.

**  `pkcs11LabelConfiguration` **  
PKCS11 a configuração do rótulo requer pelo menos um conjunto de rótulos de rótulo de certificado de dispositivo, rótulo de chave pública e rótulo de chave privada para executar os grupos de PKCS11 teste. As PKCS11 etiquetas necessárias são baseadas na configuração do dispositivo no `device.json` arquivo. Se pré-provisionado estiver definido como **Sim** em`device.json`, os rótulos necessários deverão ser um dos abaixo, dependendo do que for escolhido para o recurso. PKCS11   
+ `PreProvisionedEC`
+ `PreProvisionedRSA`
Se pré-provisionado estiver definido como **Não** em `device.json`, os rótulos necessários serão:  
+ `pkcs11LabelDevicePrivateKeyForTLS`
+ `pkcs11LabelDevicePublicKeyForTLS`
+ `pkcs11LabelDeviceCertificateForTLS`
Os três rótulos a seguir são necessários somente se você selecionar **Sim** para `pkcs11JITPCodeVerifyRootCertSupport` em seu arquivo `device.json`.  
+ `pkcs11LabelCodeVerifyKey`
+ `pkcs11LabelRootCertificate`
+ `pkcs11LabelJITPCertificate`
Os valores desses campos devem corresponder aos valores definidos no [Guia de portabilidade do FreeRTOS](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-pkcs.html).     
** `pkcs11LabelDevicePrivateKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave privada. Para dispositivos com suporte integrado e de importação de provisionamento de chaves, este rótulo é usado para testes. Este rótulo pode ser diferente daquele definido para o caso pré-provisionado. Se tiver o provisionamento de chaves definido como **Não** e o pré-provisionado definido como **Sim**, em `device.json`, isso será indefinido.  
** `pkcs11LabelDevicePublicKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave pública. Para dispositivos com suporte integrado e de importação de provisionamento de chaves, este rótulo é usado para testes. Este rótulo pode ser diferente do definido para o caso pré-provisionado. Se tiver o provisionamento de chaves definido como **Não** e o pré-provisionado definido como **Sim**, em `device.json`, isso será indefinido.  
** `pkcs11LabelDeviceCertificateForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 do certificado do dispositivo. Para dispositivos com suporte integrado e de importação de provisionamento de chaves, este rótulo será usado para testes. Este rótulo pode ser diferente do definido para o caso pré-provisionado. Se tiver o provisionamento de chaves definido como **Não** e o pré-provisionado definido como **Sim**, em `device.json`, isso será indefinido.  
** `pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave privada. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave EC, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS`, ou ambos devem ser fornecidos. Este rótulo pode ser diferente do definido para caixas integradas e de importação.  
** `pkcs11LabelPreProvisionedECDevicePublicKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave pública. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave EC, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS`, ou ambos devem ser fornecidos. Este rótulo pode ser diferente do definido para caixas integradas e de importação.  
** `pkcs11LabelPreProvisionedECDeviceCertificateForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 do certificado do dispositivo. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave EC, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedRSADeviceCertificateForTLS`, ou ambos devem ser fornecidos. Este rótulo pode ser diferente do definido para caixas integradas e de importação.  
** `pkcs11LabelPreProvisionedRSADevicePrivateKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave privada. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave RSA, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedECDevicePrivateKeyForTLS`, ou ambos devem ser fornecidos.  
** `pkcs11LabelPreProvisionedRSADevicePublicKeyForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave pública. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave RSA, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedECDevicePublicKeyForTLS`, ou ambos devem ser fornecidos.  
** `pkcs11LabelPreProvisionedRSADeviceCertificateForTLS` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 do certificado do dispositivo. Para dispositivos com elementos seguros ou limitações de hardware, isso terá uma etiqueta diferente para preservar AWS IoT as credenciais. Se o seu dispositivo for compatível com o pré-provisionamento com uma chave RSA, forneça este rótulo. Quando PreProvisioned é definido como **Sim** em `device.json`, este rótulo, `pkcs11LabelPreProvisionedECDeviceCertificateForTLS`, ou ambos devem ser fornecidos.  
** `pkcs11LabelCodeVerifyKey` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 da chave de verificação de código. Se o seu dispositivo tiver suporte de armazenamento PKCS n.º 11 para o certificado JITP, a chave de verificação de código e o certificado-raiz, forneça este rótulo. Quando `pkcs11JITPCodeVerifyRootCertSupport` em `device.json` estiver definido como **Sim**, este rótulo deverá ser fornecido.  
** `pkcs11LabelJITPCertificate` **  
(Opcional) Este rótulo é usado para o rótulo PKCS n.º 11 do certificado JITP. Se o seu dispositivo tiver suporte de armazenamento PKCS n.º 11 para o certificado JITP, a chave de verificação de código e o certificado-raiz, forneça este rótulo. Quando `pkcs11JITPCodeVerifyRootCertSupport` em `device.json` estiver definido como **Sim**, este rótulo deverá ser fornecido.