Recursos de dispositivo e comunicação

Os recursos do dispositivo determinam políticas de sistema operacional específicas do dispositivo para comunicação service-UART . Toda a comunicação entre o computador host e um dispositivo anexado é por meio do UART de serviço. O computador host se comunica com um dispositivo anexado para executar operações no dispositivo. Fabricantes, desenvolvedores de software e técnicos de serviço de campo usam recursos para desbloquear a comunicação service-UART para as operações necessárias, garantindo que o dispositivo esteja protegido contra usuários mal-intencionados.

Fabricantes de dispositivos e OEMs podem bloquear a comunicação service-UART para impedir o uso não autorizado por aqueles que têm acesso físico ao dispositivo. Bloquear essa comunicação faz parte da finalização do dispositivo. Após a finalização, um usuário pode obter a ID de um dispositivo, mas nada mais; todas as outras operações exigem um recurso de dispositivo. A finalização normalmente é executada no chão de fábrica antes que o fabricante envia o dispositivo para um site de cliente.

Um arquivo de funcionalidade do dispositivo contém zero ou mais recursos somente para um único dispositivo. O arquivo de funcionalidade não funcionará se aplicado a um dispositivo que não é aquele para o qual ele se destina. Um dispositivo pode ter os seguintes recursos, cada um dos quais é descrito posteriormente neste tópico:

Nota

Os recursos do dispositivo não estão relacionados aos recursos do aplicativo. Os recursos do aplicativo especificam os recursos exigidos por um aplicativo no runtime. Consulte o manifesto do aplicativo para obter mais informações sobre os recursos do aplicativo.

Como determinar recursos de dispositivo ou estado de fabricação

Para determinar a configuração de funcionalidade armazenada no dispositivo anexado, use o comando az sphere device capability show-attached . O comando exibe os recursos configurados usando um arquivo de funcionalidade e alguns, mas não todos, recursos presentes por padrão em placas.

Os recursos do dispositivo podem ser afetados pelo estado de fabricação do dispositivo. Para determinar o estado de fabricação do dispositivo, use o comando az sphere device manufacturing-state show . Se o comando mostrar que o dispositivo está no estado de fabricação deviceComplete ou retornar Device access is forbidden, a comunicação service-UART está bloqueada e você precisará de um recurso de dispositivo para se comunicar com o dispositivo do computador. Quando um dispositivo está no estado de fabricação deviceComplete , as operações de fabricação são permitidas somente quando o dispositivo é desbloqueado por meio de um arquivo de funcionalidade.

Nota

Se você instalar um dispositivo em um site do cliente, deverá garantir que o dispositivo seja finalizado para o estado de fabricação deviceComplete antes da instalação. Consulte Finalizar o dispositivo do Azure Sphere.

O estado manufacuring DeviceComplete normalmente não é apropriado para um kit de desenvolvimento. Para habilitar o teste das operações de fabricação que estão sendo desenvolvidas por engenheiros de fabricação, um kit de desenvolvimento deve estar no estado de fabricação em branco ou no estado de fabricação Module1Complete .

Como os dispositivos adquirem recursos

Os dispositivos podem adquirir recursos de uma das três maneiras:

  • Aberto por padrão. Um dispositivo que está no estado de fabricação em branco ou no estado de fabricação module1Complete tem alguns recursos abertos por padrão. Isso é feito para que os dispositivos ainda na fase de fabricação não precisem ser conectados à nuvem ou reivindicados em catálogos, como é exigido pelo processo de uso de arquivos de funcionalidade do dispositivo para desbloquear recursos. À medida que a fabricação progride, os fabricantes podem alterar o estado de fabricação do dispositivo para bloquear recursos que não são mais apropriados, conforme descrito em tarefas de chão de fábrica.

  • Sideloaded no dispositivo. Um dispositivo pode ter um arquivo de funcionalidade carregado no dispositivo do computador host. Use o comando az sphere device capability download para recuperar o arquivo de funcionalidade. Esse conjunto sideload de recursos persiste até que um novo arquivo de funcionalidade (que pode ser um arquivo em branco sem recursos) seja carregado de lado. Essa é a situação usual durante o desenvolvimento do aplicativo, por exemplo, quando o comando az sphere device enable-development é executado. O desenvolvimento do aplicativo é auxiliado por ter o dispositivo em um estado desbloqueado em que o desenvolvedor pode executar operações como depuração e excluir e implantar facilmente versões sideload do aplicativo.

  • Passado para o dispositivo com cada operação. Um dispositivo pode ter recursos selecionados localmente aplicados por operação. O comando az sphere device capability apply seleciona um arquivo de funcionalidade armazenado localmente no computador host. Depois que esse comando é executado, o recurso selecionado é passado do computador para o dispositivo com cada comando subsequente. Essa é a maneira recomendada de usar recursos para dispositivos que estão no campo porque os recursos são armazenados no computador e não no dispositivo. O risco de um engenheiro de campo deixar acidentalmente o dispositivo em um estado sem segurança esquecendo de remover a funcionalidade é evitado.

Antes que um arquivo de funcionalidade possa ser sideload em um dispositivo ou passado para um dispositivo com uma operação, ele deve ser baixado do AS3 (Serviço de Segurança do Azure Sphere), conforme descrito em Fazer alterações em um dispositivo após a fabricação. Os arquivos de recursos baixados são específicos do dispositivo; depois de baixado, um arquivo de funcionalidade pode ser usado repetidamente no dispositivo associado.

A funcionalidade enableRfTestMode

O recurso enableRfTestMode está presente por padrão no dispositivo quando o estado de fabricação do dispositivo está em branco. Essa funcionalidade permite a programação de fusíveis eletrônicos e a configuração e o teste da operação rf. Não é possível que os proprietários de catálogo baixem essa funcionalidade em um computador host. Se você precisar desse recurso, entre em contato com seu representante da Microsoft.

Quando o estado de fabricação do dispositivo está em branco, o comando show-attached do recurso do dispositivo az sphere exibe a funcionalidade enableRfTestMode .

A funcionalidade appDevelopment

A funcionalidade do dispositivo appDevelopment desbloqueia a comunicação service-UART e altera o tipo de assinatura em que o dispositivo confia. Ele destina-se a ser usado durante o desenvolvimento do aplicativo.

Por padrão, os dispositivos do Azure Sphere confiam em pacotes de imagem assinados pela produção que são baixados pelo Serviço de Segurança do Azure Sphere, mas não confiam em pacotes de imagem assinados pelo SDK. Portanto, você não pode criar um pacote de imagem com o SDK e carregá-lo em seu dispositivo do Azure Sphere para depuração, a menos que o dispositivo tenha a funcionalidade appDevelopment . A funcionalidade appDevelopment faz com que o dispositivo confie no pacote de imagem e permite que você inicie, pare, depure ou remova um aplicativo do dispositivo.

Em resumo, o recurso appDevelopment desbloqueia a comunicação service-UART para permitir as seguintes operações:

  • Sideloading an image package that is built with Visual Studio, Visual Studio Code, the CLI, or the az sphere image-package command.

  • Iniciar, parar, depurar ou remover um pacote de imagem do dispositivo do Azure Sphere, independentemente de como o pacote de imagem é assinado.

Para adicionar a funcionalidade appDevelopment , use o comando az sphere device enable-development . Esse comando baixa a funcionalidade appDevelopment para o dispositivo anexado, carrega o recurso no dispositivo e move o dispositivo para o grupo de dispositivos de desenvolvimento padrão. Para especificar um grupo de dispositivos diferente, inclua o --device-group parâmetro.

Quando você usa o az sphere device enable-development, o dispositivo permanece desbloqueado até bloqueá-lo explicitamente. Para retracionar o dispositivo, use o comando az sphere device enable-cloud-test . Esse comando remove a funcionalidade e altera o grupo de dispositivos, dependendo dos parâmetros de linha de comando fornecidos.

Os comandos az sphere device enable-development e az sphere device enable-cloud-test executam uma sequência de ações que preparam um dispositivo para desenvolvimento e depuração ou para implantações na nuvem, respectivamente. Em vez de usar esses comandos, você pode usar o comando az sphere device capability para baixar ou atualizar um recurso de dispositivo ou para descobrir quais recursos um dispositivo tem atualmente.

A funcionalidade fieldServicing

A funcionalidade fieldServicing está presente em um dispositivo por padrão quando o dispositivo tem um estado de fabricação de Blank ou Module1Complete. Quando um dispositivo está no estado de fabricação deviceComplete , o recurso fieldServicing pode ser sideload, mas normalmente é passado para o dispositivo com cada operação durante uma sessão de manutenção. Para obter detalhes sobre como iniciar uma sessão de manutenção, consulte Fazer alterações em um dispositivo após a fabricação.

Independentemente do estado de fabricação do dispositivo, a funcionalidade fieldServicing desbloqueia a comunicação service-UART para permitir as seguintes operações:

  • Sideloading a production-signed image package.
  • Iniciar, parar e excluir um pacote de imagem assinado pela produção que é marcado como temporário.
  • Executar tarefas de manutenção de rotina, como configurar o Wi-Fi.

Embora a funcionalidade fieldServicing esteja presente por padrão no dispositivo quando o estado de fabricação do dispositivo for Blank ou Module1Complete, o comando show-attached do recurso do dispositivo az sphere não exibe a funcionalidade fieldServicing .

Dependência do repositório de chaves confiável atualizado

Quando um arquivo de funcionalidade é criado pelo AS3, ele é assinado usando a chave de assinatura de imagem atual. Cada dispositivo tem um repositório de chaves confiável como parte do sistema operacional em que essas chaves são mantidas. No entanto, se o dispositivo não estiver conectado à Internet, será possível que um recurso não seja confiável pelo dispositivo que ele está direcionando se o repositório de chaves confiável desse dispositivo estiver desatualizado.

Para remediar isso, um método é permitir que o dispositivo se conecte à Internet para que ele atualize o repositório de chaves confiável. Conecte seu dispositivo à Internet e pressione Redefinir para disparar uma atualização do sistema operacional.

Se isso não for possível, você poderá carregar um armazenamento de chaves confiável atualizado. Para fazer isso, aceite os termos de licença e baixe as imagens mais recentes de recuperação do sistema operacional e, neste arquivo zip, extraia apenas o arquivo "trusted-keystore.bin". Em seguida, você pode usar o comando az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> to sideload the trusted keystore, and the capability should now be trusted by the device.

Um terceiro método é Recuperar o software do sistema para atualizar o sistema operacional do Azure Sphere para a versão mais recente lançada, incluindo o armazenamento de chaves confiável mais recente.