O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

OpenWeave Fábrica Ferramenta Provisioning

jinja-placeholder-0 .MD "> Ver fonte no GitHub

A ferramenta de aprovisionamento OpenWeave fábrica proporciona um meio conveniente para aprovisionamento, por dispositivo informações de configuração persistente em dispositivos tecer-activado. A ferramenta Provisioning fábrica se destina a ser usado como parte de um processo de linha de produção que selos dispositivos individuais com identidade única e informações de credenciais antes do envio para os clientes. Ele também pode ser usado por desenvolvedores para personalizar hardware pré-produção utilizados durante o processo de desenvolvimento.

Teoria de Operação

O objetivo da ferramenta Provisioning OpenWeave fábrica é injetar selecione informações de configuração para armazenamento de configuração persistente de um dispositivo, onde ele pode ser pego e usado em tempo de execução pelo firmware do dispositivo. configuração do dispositivo persistente é normalmente armazenado dentro do Flash interna do dispositivo, embora os detalhes de exatamente como os dados são armazenados, e em que formato, pode variar de plataforma para plataforma. A ferramenta Provisioning fábrica em si é independente do formato de armazenamento final, e se baseia em código no firmware do dispositivo para gravar os dados da maneira correta. A interface de utilizador da ferramenta também é largamente independente do tipo de equipamento a ser configurado, o que significa que os processos de fabrico semelhantes podem ser empregues em todas as linhas de produtos que são baseados em diferentes plataformas de hardware.

A ferramenta de aprovisionamento de fábrica destina-trabalho executado em um computador central que está ligada a um dispositivo de destino através de algum tipo de interface de depuração ou de controlo - por exemplo, uma porta ou JTAG SWD. A ferramenta funciona através da injeção de provisionamento informação na memória RAM do dispositivo de uma forma especialmente codificado. O dispositivo é então instruído a reiniciar, na qual código de ponto integrado para o firmware do dispositivo localiza os dados codificados, valida a sua integridade, e escreve os valores contidos no armazenamento persistente em um formato apropriado para a plataforma.

O código no dispositivo que detecta e processa os dados de aprovisionamento injectados está embutido para a camada do dispositivo OpenWeave, e pode ser activado em qualquer plataforma suportada. Uma vez ativado, o código é executado automaticamente cada vez que o dispositivo é inicializado, em um ponto no início do processo de inicialização do dispositivo. O código funciona digitalizando uma região específica da plataforma de RAM. Em plataformas com montagens modestas de memória (por exemplo, <1M), os engloba varredura de todos RAM disponível.

Quando colocado na RAM, os dados de aprovisionamento é codificado com um prefixo facilmente identificável, que permite que seja rapidamente encontrada durante o processo de verificação. Um valor de verificação de integridade com base em um hash criptográfico é utilizado para confirmar a validade dos dados antes de processar.

Por padrão, os seleciona ferramenta de provisionamento a localização RAM em que injetar os dados de provisionamento baseados na plataforma dispositivo de destino. Esta escolha pode ser substituído através de um argumento para a ferramenta. Em geral, não é necessário que o dispositivo firmware reservar um local RAM especificamente para receber dados de provisionamento. Mais tipicamente, provisionamento de dados são gravados em um local RAM que está alocado para outros fins, mas é geralmente não utilizado no início do processo de inicialização do dispositivo. escolhas comuns são o topo da pilha inicial do sistema, ou a extremidade de uma arena heap.

A ferramenta Provisioning fábrica conta com um conjunto de ferramentas de desenvolvimento externos para fazer a interface com o dispositivo de destino. As ferramentas particulares empregues dependem do tipo do dispositivo de destino. Duas interfaces de dispositivos são suportados atualmente:

  • uma sonda de depuração SEGGER J-Link ligado à porta JTAG ou SWD de um dispositivo
  • uma porta serial USB ligada a uma Espressif ESP32

A interface J-Link conta com a ferramenta SEGGER J-Link Commander (JLinkExe), que deve ser instalado separadamente na máquina host.

A interface ESP32 conta com o comando Espressif esptool.py, que é fornecida como parte de do Espressif ESP-IDF SDK.

Tipos de informação que podem ser provisionados

A ferramenta Provisioning OpenWeave fábrica é capaz de provisionamento os seguintes tipos de informações:

  • número de série do dispositivo
  • atribuído pelo fabricante id dispositivo Weave
  • certificado Weave atribuído pelo fabricante e chave privada
  • código de emparelhamento Weave
  • número de revisão do produto
  • Data de fabricação

Embora geralmente um dispositivo terá todas as informações acima para funcionar corretamente, ele não é obrigado a disposição toda a informação ao mesmo tempo. Deste modo, o aprovisionamento de diferentes tipos de informação pode ocorrer em pontos diferentes do processo de fabrico. Além disso, é possível substituir os valores previamente aprovisionados com novos valores em um passo subsequente de aprovisionamento.

Fontes de informação provisionamento

Dispositivo de provisionamento de informação pode ser fornecida para a ferramenta de provisionamento de fábrica nos caminhos a seguir:

  • A linha de comando argumentos
  • Usando um arquivo CSV provisionamento
  • Ao buscar valores a partir de um servidor de ninho de provisionamento

Linha de comando

Na forma mais simples, as informações do dispositivo de provisionamento é especificado diretamente na linha de comando para a ferramenta de provisionamento OpenWeave fábrica. Por exemplo:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --pairing-code NESTUS --mfg-date 2019/04/01

valores binários de dados, tais como o certificado de tecer e uma chave privada, pode ser especificada quer como base-64 cordas, ou como os nomes dos ficheiros que contêm os dados desejados na sua forma bruta (binário).

Veja abaixo uma lista completa de argumentos de linha de comando disponíveis.

arquivo de provisionamento CSV

Para acomodar maior provisionamento de dispositivos, a ferramenta de provisionamento de fábrica também pode ler o provisionamento de dados a partir de um arquivo de dados de provisionamento formatado-CSV. As colunas deste ficheiro são esperados correspondem a tipos específicos de dados de aprovisionamento - isto é, Serial_Num , Certificate , Private_Key , etc. Linhas no ficheiro dar valores individuais para os dispositivos específicos, indexados por ID de tecer dispositivo ( Device_Id ). O ID do dispositivo específico para ser provisionamento deve ser especificado na linha de comando. Por exemplo:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-csv-file ./dev-provisioning-data.csv

As colunas seguintes CSV são suportados:

Nome Formato Descrição
Device_Id 16 dígitos hexadecimais ID do dispositivo Weave. Devem estar presentes.
Serial_Num corda número de série do dispositivo.
Certificate base 64 cadeia atribuído pelo fabricante certificado do dispositivo Weave.
Private_Key base 64 cadeia -Fabricante atribuído Weave chave privada.
Pairing_Code corda código de emparelhamento Weave.
Product_Rev número inteiro Produto número de revisão.
Mfg_Date AAAA / MM / DD Dispositivo data de fabricação.

Colunas podem aparecer no arquivo CSV em qualquer ordem. Todas as colunas são opcionais, com exceção de Device_Id . Quaisquer valores que não estão presentes no arquivo CSV simplesmente não são provisionados no dispositivo.

O usuário pode especificar valores de provisionamento individuais na linha de comando, além do arquivo CSV, no caso da linha de comando valor prevalece sobre as do arquivo que.

O suporte ao formato de arquivo CSV pela ferramenta Provisioning fábrica é compatível com a saída do weave da ferramenta gen-provisioning-data de comando.

provisioning server Nest

A ferramenta Provisioning fábrica suporta buscar selecione informações de provisionamento de um servidor Nest provisionamento usando um protocolo HTTPS base. O protocolo de servidor de provisionamento pode ser usado para obter o certificado atribuído pelo fabricante do dispositivo Weave, a chave privada correspondente, e o código de emparelhamento Weave do servidor de provisionamento.

A localização de rede do servidor de provisionamento é especificado pelo fornecimento de uma URL base na linha de comando da ferramenta de provisionamento. O provisionamento informação desejada é selecionada por especificar o ID do dispositivo Weave na linha de comando. Por exemplo:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-server https://192.168.172.2:8000/

O usuário pode especificar valores de provisionamento individuais na linha de comando, além do URL do servidor de provisionamento. Neste caso, os valores fornecidos na linha de comando têm precedência sobre valores devolvidos pelo servidor.

Ativar / desativar o suporte de provisionamento fábrica

Suporte para OpenWeave fábrica de provisionamento no firmware do dispositivo é controlada pelo WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING opção de configuração em tempo de compilação. Essa opção é ativada por padrão. O recurso pode ser desativado, substituindo a opção no aplicativo WeaveProjectConfig.h arquivo. Por exemplo:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

Em geral, é seguro para permitir fábrica provisionamento equipamento para a produção firmware desde que a interface do dispositivo de depuração é desativado adequadamente em dispositivos de produção. Isto pode ser conseguido, quer através de meios de hardware (por exemplo, por sopragem de fusíveis no SoC), ou em software (por exemplo, através de um carregador de arranque seguro que bloqueia o acesso de depuração como parte do processo de arranque).

Executar a Ferramenta de provisionamento de fábrica

A ferramenta Provisioning OpenWeave fábrica suporta as seguintes opções de linha de comando:

Opção Descrição
--target <string> Alvo tipo de dispositivo. As opções são: nrf52840, esp32
--load-addr <hex-dígitos> Endereço na memória do dispositivo em que os dados de provisionamento será escrito.
--verbose, -v Ajuste o nível de verbosidade de saída. Use vários argumentos para aumentar o detalhe.
--serial-num <string> Definir o número de série do dispositivo.
--device-id <hex-dígitos> Definir o ID do dispositivo atribuído pelo fabricante.
--device-cert <base-64> | <file-name> Defina o certificado do dispositivo Weave atribuído pelo fabricante.
--device-chave <base-64> | <file-name> Defina o dispositivo Weave chave privada atribuído pelo fabricante.
--pairing-code <string> Defina o código do dispositivo de emparelhamento.
--product-rev <inteiro> Defina a revisão do produto para o dispositivo.
--mfg-date <AAAA / MM / DD> | hoje | agora Definir a data de fabricação do dispositivo.
--jlink-cmd <path-name> Caminho para o comando JLink. O padrão é 'JLinkExe'.
--jlink-se SWD | JTAG J-Link tipo de interface. O padrão é SWD.
--jlink velocidade <inteiro> | adaptativa | auto J-Link velocidade da interface.
--jlink-sn <string> J-Link sondar número de série.
--esptool-cmd <path-name> Caminho para o comando esptool. O padrão é 'esptool.py'.
--port <path-name> nome do dispositivo porta COM para ESP32. O padrão é / tty / USB0.
--speed <inteiro> taxa de transmissão para a porta COM. O padrão é 115200.
--prov-csv-file <file-name> dispositivo de leitura de provisionamento dados de um arquivo CSV de provisionamento.
--prov-servidor <url> dispositivo de leitura de provisionamento dados de um servidor de provisionamento.
--disable-server-validação Ao usar HTTPS, desativar a validação do certificado apresentado pelo servidor de provisionamento.

Exemplos

O comando a seguir define o ID do dispositivo, número de série, revisão do produto e código de emparelhamento a valores específicos. A data de fabricação é definido para a data atual. E o certificado do dispositivo ea chave privada são definidas para valores de teste fornecidas em um arquivo CSV fornecido com o openweave-core repositório de origem.

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000042 \
    --serial-num JAYS_DEVICE_42 --product-rev 1 --pairing-code NESTUS --mfg-date today \
    --prov-csv-file ~/projects/openweave-core/certs/development/device/test-dev-provisioning-data.csv