

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 de compilação, atualização e teste
<a name="cfg-dt-ud"></a>

Para que o IDT para FreeRTOS crie e atualize testes em sua placa automaticamente, você deve configurar o IDT para executar os comandos de compilação e atualização para seu hardware. As configurações de comando de compilação e atualização são definidas no modelo de arquivo `userdata.json` localizado na pasta `config`.

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

As configurações de compilação, atualização e teste são feitas no arquivo `configs/userdata.json`. Oferecemos suporte à configuração do servidor echo carregando os certificados e chaves do cliente e do servidor no `customPath`. Para obter mais informações, consulte [Configurando um servidor Echo](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-echo-server.html) no *Guia de portabilidade do FreeRTOS*. O seguinte exemplo de JSON mostra como você pode configurar o IDT para FreeRTOS para testar vários dispositivos:

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

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

**`sourcePath`**  
O caminho para a raiz do código-fonte do FreeRTOS transferido. Para testes paralelos com um SDK, o `sourcePath` pode ser definido usando o espaço reservado `{{userData.sdkConfiguration.path}}`. Por exemplo:   

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

**`vendorPath`**  
O caminho para o código do FreeRTOS específico do fornecedor. Para testes em série, o `vendorPath` pode ser definido como um caminho absoluto. Por exemplo:  

```
{ "vendorPath":"C:/path-to-freertos/vendors/espressif/boards/esp32" }
```
Para testes paralelos, o `vendorPath` pode ser definido usando o espaço reservado `{{testData.sourcePath}}`. Por exemplo:  

```
{ "vendorPath":"{{testData.sourcePath}}/vendors/espressif/boards/esp32" }
```
A variável `vendorPath` só é necessária quando executada sem um SDK, caso contrário, ela pode ser removida.  
Ao executar testes em paralelo sem um SDK, o espaço reservado `{{testData.sourcePath}}` deve ser usado nos campos `vendorPath`, `buildTool`, `flashTool`. o executar o teste com um único dispositivo, caminhos absolutos devem ser usados nos campos `vendorPath`, `buildTool` e `flashTool`. Ao executar com um SDK, o espaço reservado `{{sdkPath}}` deve ser usado nos comandos `sourcePath`, `buildTool` e `flashTool`.

**`sdkConfiguration`**  
Se você estiver qualificando o FreeRTOS com modificações na estrutura de arquivos e pastas além do necessário para a portabilidade, será necessário configurar as informações do SDK neste bloco. Se você não estiver qualificando com um Freertos transferido de dentro de um SDK, será necessário omitir esse bloco totalmente.    
**`sdkConfiguration.name`**  
O nome do SDK que você está usando com o FreeRTOS. Se você não estiver usando um SDK, todo o bloco `sdkConfiguration` deverá ser omitido.  
**`sdkConfiguration.version`**  
A versão do SDK que você está usando com o FreeRTOS. Se você não estiver usando um SDK, todo o bloco `sdkConfiguration` deverá ser omitido.  
**`sdkConfiguration.path`**  
O caminho absoluto para o diretório do SDK que contém o código do FreeRTOS. Se você não estiver usando um SDK, todo o bloco `sdkConfiguration` deverá ser omitido.

**`buildTool`**  
O caminho completo para o script de compilação (.bat ou .sh) que contém os comandos para compilar seu 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}}` e as referências ao caminho do SDK devem ser substituídas por`{{sdkPath}}`. Use o `{{config.idtRootPath}}` espaço reservado para referenciar o caminho IDT absoluto ou relativo. 

**`testStartDelayms`**  
Especifica quantos milissegundos o executor de testes do FreeRTOS aguardará antes de começar a executar os testes. Isso 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 outra latência. O valor máximo permitido é 30.000 ms (30 segundos). Este valor é aplicável somente aos grupos de teste do FreeRTOS, e não aplicável a outros grupos de teste que não utilizam o executor de testes do FreeRTOS, como os testes OTA.

**`flashTool`**  
O caminho completo para o script de atualização (.sh ou .bat) que contém os comandos de atualização para o dispositivo. Todas as referências ao caminho do código-fonte no comando de atualização devem ser substituídas pela variável `{{testdata.sourcePath}}` do IDT para FreeRTOS e todas as referências ao seu caminho do SDK devem ser substituídas pela variável`{{sdkPath}}` do IDT para FreeRTOS. Use o espaço reservado `{{config.idtRootPath}}` para fazer referência ao caminho absoluto ou relativo do IDT.    
**`buildImageInfo`**    
**`testsImageName`**  
O nome do arquivo produzido pelo comando de compilação ao compilar testes da pasta `freertos-source/tests`.  
**`demosImageName`**  
O nome do arquivo produzido pelo comando de compilação ao compilar testes da pasta `freertos-source/demos`.

**`clientWifiConfig`**  
Configuração do Wi-Fi do cliente. Os testes da biblioteca de Wi-Fi exigem que uma placa de MCU seja conectada a dois pontos de acesso. (Os dois pontos de acesso podem ser os mesmos.) Este atributo define as configurações de Wi-Fi para o primeiro ponto de acesso. Alguns dos casos de teste de Wi-Fi esperam que o ponto de acesso tenha algum recurso de segurança e que não esteja aberto. Verifique se os dois pontos de acesso estão na mesma sub-rede do computador host que executa o IDT.    
**`wifi_ssid`**  
O SSID do Wi-Fi.  
**`wifi_password`**  
A senha do Wi-Fi.  
**`wifiSecurityType`**  
O tipo de segurança do Wi-Fi utilizada. Um dos valores:  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
Se a placa não for compatível com Wi-Fi, você ainda deverá incluir a seção `clientWifiConfig` no arquivo `device.json`, mas poderá omitir os valores desses recursos.

**`testWifiConfig`**  
Configuração de teste do Wi-Fi. Os testes da biblioteca de Wi-Fi exigem que uma placa de MCU seja conectada a dois pontos de acesso. (Os dois pontos de acesso podem ser os mesmos.) Esse atributo define a configuração do Wi-Fi para o segundo ponto de acesso. Alguns dos casos de teste de Wi-Fi esperam que o ponto de acesso tenha algum recurso de segurança e que não esteja aberto. Verifique se os dois pontos de acesso estão na mesma sub-rede do computador host que executa o IDT.    
**`wifiSSID`**  
O SSID do Wi-Fi.  
**`wifiPassword`**  
A senha do Wi-Fi.  
**`wifiSecurityType`**  
O tipo de segurança do Wi-Fi utilizada. Um dos valores:  
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`
Se a placa não for compatível com Wi-Fi, você ainda deverá incluir a seção `testWifiConfig` no arquivo `device.json`, mas poderá omitir os valores desses recursos.

**`echoServerCertificateConfiguration`**  
O espaço reservado configurável de geração de certificados do servidor echo para testes de SSL. Este campo é obrigatório.    
**`certificateGenerationMethod`**  
Especifica se o certificado do servidor é gerado automaticamente ou fornecido manualmente.  
**`customPath`**  
Se o `certificateGenerationMethod` for "personalizado", `certificatePath` e `privateKeyPath` são obrigatórios.    
**`certificatePath`**  
Especifica o caminho do arquivo do certificado do servidor.  
**`privateKeyPath`**  
Especifica o caminho do arquivo da chave privada.  
**`eccCurveFormat`**  
Especifica o formato de curva compatível com a placa. Obrigatório quando `PKCS11` estiver definido como "ecc" em `device.json`. Os valores válidos são "P224", "P256", "P384" ou "P521".

**`echoServerConfiguration`**  
As portas configuráveis do servidor de eco para WiFi testes de soquetes seguros. Esse campo é opcional.    
**`securePortForSecureSocket`**  
A porta que é usada para configurar um servidor echo com TLS para o teste de soquetes seguros. O valor padrão é 33333. Verifique se a porta configurada não está bloqueada por um firewall ou pela rede corporativa.  
**`insecurePortForSecureSocket`**  
A porta usada para configurar o servidor echo sem TLS para o teste de soquetes seguros. O valor padrão usado no teste é 33334. Verifique se a porta configurada não está bloqueada por um firewall ou pela rede corporativa.  
**`insecurePortForWiFi`**  
A porta usada para configurar o servidor de eco sem TLS para WiFi teste. O valor padrão usado no teste é 33335. Verifique se a porta configurada não está bloqueada por um firewall ou pela rede corporativa.

**`otaConfiguration`**  
A configuração OTA. [Opcional]    
**`otaFirmwareFilePath`**  
O caminho completo para a imagem OTA criada após a compilação. Por exemplo, `{{testData.sourcePath}}/relative-path/to/ota/image/from/source/root`.  
**`deviceFirmwareFileName`**  
O caminho completo do arquivo no dispositivo MCU onde o firmware OTA está localizado. Alguns dispositivos não usam esse campo, mas você ainda deve fornecer um valor.  
**`otaDemoConfigFilePath`**  
O caminho completo para `aws_demo_config.h`, encontrado em `afr-source/vendors/vendor/boards/board/aws_demos/config_files/`. Esses arquivos estão incluídos no modelo de código de transferência fornecido pelo FreeRTOS.   
**`codeSigningConfiguration`**  
A configuração de assinatura de código.  
**`signingMethod`**  
O método de assinatura de código. Os valores possíveis são `AWS` ou `Custom`.  
Nas regiões de Pequim e Ningxia, use `Custom`. Não há compatibilidade para a assinatura de código da `AWS` nessas regiões.  
**`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 enviado para o. 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 [Criação de um certificado de assinatura de código](ota-code-sign-cert.md).   
**`signerCertificateFileName`**  
O nome do arquivo do certificado de assinatura de código no dispositivo. Esse valor deve corresponder ao nome do arquivo que você forneceu ao executar o comando `aws acm import-certificate`.  
Para obter mais informações, consulte [Criação de um certificado de assinatura de código](ota-code-sign-cert.md).   
**`compileSignerCertificate`**  
Defina como `true` se o certificado de verificação de assinatura do signatário do código não for provisionado ou atualizado, então ele deve ser compilado no projeto. AWS IoT Device Tester busca o certificado confiável e o compila em. `aws_codesigner_certifiate.h`  
**`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 mais 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).  
**`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` \$1 `RSA` ou `SHA1` \$1 `ECDSA` para sua configuração, entre em contato conosco para obter mais suporte.  
Configure `signCommand` se você escolheu `Custom` para `signingMethod`.  
**`signCommand`**  
O comando usado para executar a assinatura de código personalizado. É possível encontrar o modelo no diretório `/configs/script_templates`.   
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.

**`cmakeConfiguration`**  
CMake configuração [Opcional]  
Para executar casos de CMake teste, você deve fornecer o nome da placa, o nome do fornecedor e o `frToolchainPath` ou`compilerName`. Você também pode fornecer o `cmakeToolchainPath` se tiver um caminho personalizado para o CMake conjunto de ferramentas.  
**`boardName`**  
O nome da placa em teste. O nome do painel deve ser o mesmo que o nome da pasta em `path/to/afr/source/code/vendors/vendor/boards/board`.  
**`vendorName`**  
O nome do fornecedor para a placa em teste. O fornecedor deve ser o mesmo que o nome da pasta em `path/to/afr/source/code/vendors/vendor`.  
**`compilerName`**  
O nome do compilador.  
**`frToolchainPath`**  
O caminho totalmente qualificado para o conjunto de ferramentas do compilador  
**`cmakeToolchainPath` **  
O caminho totalmente qualificado para a cadeia de ferramentas. CMake Este campo é opcional

**`freertosFileConfiguration`**  
A configuração dos arquivos FreeRTOS que o IDT modifica antes de executar testes.    
**`required`**  
Esta seção especifica os testes necessários cujos arquivos de configuração você moveu, por exemplo PKCS11, TLS e assim por diante.    
**`configName`**  
O nome do teste que é configurado.  
**`filePath`**  
O caminho absoluto para os arquivos de configuração no repositório `freertos`. Use a variável `{{testData.sourcePath}}` para definir o caminho.  
**`optional`**  
Esta seção especifica testes opcionais cujos arquivos de configuração você moveu, por exemplo, OTA WiFi, etc.    
**`configName`**  
O nome do teste que é configurado.  
**`filePath`**  
O caminho absoluto para os arquivos de configuração no repositório `freertos`. Use a variável `{{testData.sourcePath}}` para definir o caminho.

**nota**  
Para executar casos de CMake teste, você deve fornecer o nome da placa, o nome do fornecedor e o `afrToolchainPath` ou`compilerName`. Você também pode fornecer `cmakeToolchainPath` se você tem um caminho personalizado para o CMake conjunto de ferramentas.

# Variáveis do IDT para FreeRTOS
<a name="dt-vars"></a>

Os comandos para criar seu código e atualizar o dispositivo podem exigir conectividade ou outras informações sobre seus dispositivos para serem executados com êxito. AWS IoT Device Tester permite referenciar informações do dispositivo em flash e criar comandos usando [JsonPath](https://goessner.net/articles/JsonPath/)o. Usando JsonPath expressões simples, você pode buscar as informações necessárias especificadas em seu `device.json` arquivo.

## Variáveis de caminho
<a name="path-variables-frq"></a>

O IDT para FreeRTOS define as seguintes variáveis de caminho que podem ser usadas em linhas de comando e arquivos de configuração:

**`{{testData.sourcePath}}`**  
Expande o caminho do código-fonte. Se você usar essa variável, ela deverá ser usada nos comandos de compilação e atualização.

**`{{sdkPath}}`**  
Expande-se para o valor em seu `userData.sdkConfiguration.path` quando usado nos comandos compilar e atualizar.

**`{{device.connectivity.serialPort}}`**  
Expande à porta serial.

**`{{device.identifiers[?(@.name == 'serialNo')].value[0]}}`**  
Expande o número de série do dispositivo.

**`{{enableTests}}`**  
Valor inteiro que indica se a compilação é para testes (valor 1) ou demonstrações (valor 0).

**`{{buildImageName}}`**  
O nome do arquivo da imagem criada pelo comando de compilação.

**`{{otaCodeSignerPemFile}}`**  
Arquivo PEM para o assinante do código OTA.

**`{{config.idtRootPath}}`**  
Expande-se até o caminho AWS IoT Device Tester raiz. Essa variável substitui o caminho absoluto do IDT quando usada pelos comandos build e flash.