Crie um grupo de dispositivos no IDT para FreeRTOS
Os dispositivos a serem testados são organizados em grupos de dispositivos. Cada grupo de dispositivos consiste em um ou mais dispositivos idênticos. Também é possível configurar o IDT para FreeRTOS para testar um único dispositivo ou vários dispositivos em um grupo. Para acelerar o processo de qualificação, o IDT para FreeRTOS pode testar dispositivos com as mesmas especificações em paralelo. Ele usa o método round-robin para executar um grupo de testes diferente em cada dispositivo de um grupo de dispositivos.
O arquivo device.json tem uma matriz em seu nível superior. Cada recurso da matriz é um novo grupo de dispositivos. Cada grupo de dispositivos tem um recurso de matriz de dispositivos, que tem vários dispositivos declarados. No modelo, há um grupo de dispositivos e somente um dispositivo neste grupo de dispositivos. Você pode adicionar um ou mais dispositivos a um grupo de dispositivos editando a seção devices do modelo device.json na pasta configs.
nota
Todos os dispositivos no mesmo grupo devem ser da mesma especificação técnica e SKU. Para habilitar as compilações paralelas do código-fonte para diferentes grupos de teste, o IDT para FreeRTOS copia o código-fonte para uma pasta de resultados dentro da pasta onde o IDT para FreeRTOS foi extraído. É preciso referenciar o caminho do código-fonte no comando de compilação ou atualização por meio da variável testdata.sourcePath. O IDT para FreeRTOS substitui esta variável por um caminho temporário do código-fonte copiado. Para obter mais informações, consulte Variáveis do IDT para FreeRTOS.
Veja a seguir um exemplo do arquivo device.json que foi usado para criar um grupo de dispositivos com vários dispositivos.
[ { "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" } ] } ] } ]
Os seguintes recursos são usados no arquivo device.json:
-
id -
Um ID alfanumérico definido pelo usuário que identifica exclusivamente um grupo de dispositivos. Os dispositivos que pertencem a um grupo devem ser do mesmo tipo. Quando um conjunto de testes está em execução, os dispositivos do grupo são usados para paralelizar a carga de trabalho.
-
sku -
Um valor alfanumérico que identifica exclusivamente a placa sendo testada. A SKU é usada para rastrear as placas qualificadas.
nota
Se deseja listar sua placa no AWS Partner Device Catalog, a SKU especificada aqui deve corresponder à SKU usada no processo de oferta.
-
features -
Uma matriz contendo os recursos compatíveis do dispositivo. O AWS IoT Device Tester usa essas informações para selecionar os testes de qualificação a serem executados.
Os valores compatíveis são:
-
Wifi -
Indica se a placa tem recursos de Wi-Fi.
-
Cellular -
Indica se a placa tem recursos de celular.
-
PKCS11 -
Indica o algoritmo de criptografia de chave pública compatível com a placa. O PKCS11 é necessário para qualificação. Os valores compatíveis são
ECC,RSA, eBoth.Bothindica que a placa é compatível com os algoritmosECCeRSA. -
KeyProvisioning -
Indica o método de gravação de um certificado de cliente X.509 confiável em sua placa.
Os valores válidos são
Import,Onboard,BotheNo. O provisionamento das chavesOnboard,BothouNoé necessário para a qualificação.Import, por si só, não é uma opção válida para qualificação.-
Use
Importsomente se a sua placa permitir a importação de chaves privadas. SelecionarImportnão é uma configuração válida para qualificação e deve ser usada somente para fins de teste, especificamente com casos de teste do PKCS11.Onboard,BothouNoé necessário para a qualificação. -
Use
Onboardse a placa for compatível com chaves privadas integradas (por exemplo, se o dispositivo tiver um elemento seguro ou se você preferir gerar o seu próprio par de chaves de dispositivo e certificado). Adicione um elementosecureElementConfigem cada uma das seções do dispositivo e coloque o caminho absoluto para o arquivo de chave pública no campopublicKeyAsciiHexFilePath. -
Use
Bothse sua placa suportar a importação de chaves privadas e a geração de chaves integradas para provisionamento de chaves. -
Use
Nose sua placa não suportar o provisionamento de chaves.Nosó é uma opção válida quando seu dispositivo também está pré-provisionado.
-
-
OTA -
Indica se a placa oferece suporte à funcionalidade de atualização remota (OTA — Over-the-air). O recurso
OtaDataPlaneProtocolindica a qual protocolo de plano de dados OTA o dispositivo oferece suporte. Um OTA com o protocolo de plano de dados HTTP ou MQTT é necessário para a qualificação. Para pular a execução de testes OTA durante o teste, defina o recurso OTA comoNoe o recursoOtaDataPlaneProtocolcomoNone. Esta não será uma corrida de qualificação. -
BLE -
Indica se a placa é compatível com Bluetooth Low Energy (BLE).
-
-
devices.id -
Um identificador exclusivo, definido pelo usuário, para o dispositivo que está sendo testado.
-
devices.connectivity.serialPort -
A porta serial do computador host usada para se conectar aos dispositivos que estão sendo testados.
-
devices.secureElementConfig.PublicKeyAsciiHexFilePath -
Obrigatório se sua placa NÃO for
pre-provisionedouPublicDeviceCertificateArnnão for fornecido. ComoOnboardé um tipo obrigatório de provisionamento de chaves, este campo é obrigatório atualmente para o grupo de teste FullTransportInterfaceTLS. Se o seu dispositivo forpre-provisioned,PublicKeyAsciiHexFilePathé opcional e não precisa ser incluído.O bloco a seguir é um caminho absoluto para o arquivo que contém a chave pública de bytes hexadecimal extraída da chave privada
Onboard.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 0cSe sua chave pública estiver no formato .der, é possível codificar a chave pública em hexadecimal diretamente para gerar o arquivo hexadecimal.
Para gerar o arquivo hexadecimal a partir de uma chave pública .der, digite o seguinte comando xxd:
xxd -p pubkey.der > outFileSe sua chave pública estiver no formato .pem, é possível extrair os cabeçalhos e rodapés codificados em base64 e decodificá-los em formato binário. Em seguida, string binária é codificada em hexadecimal para gerar o arquivo hexadecimal.
Para gerar um arquivo hexadecimal para uma chave pública. pem, faça o seguinte:
-
Execute o comando base64 a seguir para remover o cabeçalho e o rodapé base64 da chave pública. A chave decodificada, chamada
base64key, é enviada para o arquivopubkey.der:base64 —decode base64key > pubkey.der -
Execute o comando xxd a seguir para converter
pubkey.derpara o formato hexadecimal. A chave resultante é salva como.outFilexxd -p pubkey.der >outFile
-
-
devices.secureElementConfig.PublicDeviceCertificateArn -
O ARN do certificado do seu elemento seguro que é carregado para AWS IoT Core. Para obter informações sobre como fazer upload do seu certificados para AWS IoT Core, consulte Certificados de cliente X.509 no Guia do desenvolvedor do AWS IoT.
-
devices.secureElementConfig.SecureElementSerialNumber -
(Opcional) O número de série do elemento seguro. O número de série é usado como opção para criar certificados de dispositivo para o provisionamento de chaves JITR.
-
devices.secureElementConfig.preProvisioned -
(Opcional) Defina como "Sim" se o dispositivo tiver um elemento seguro pré-provisionado com credenciais bloqueadas, que não possa importar, criar ou destruir objetos. Se este recurso for definido como Sim, os rótulos pkcs11 correspondentes deverão ser fornecidos.
-
devices.secureElementConfig.pkcs11JITPCodeVerifyRootCertSupport -
(Opcional) Defina como Sim se a implementação do CorePKCS11 do dispositivo for compatível com o armazenamento para JITP. Isto habilitará o teste
codeverifyJITP ao testar o PKCS 11 principal e exigirá que sejam fornecidos rótulos de chave de verificação de código, certificado JITP e certificado raiz PKCS 11. -
identifiers -
(Opcional) Uma matriz de pares de nome-valor arbitrários. Você pode usar esses valores nos comandos de compilação e atualização descritos na próxima seção.