Capacidades e comunicação do dispositivo
As capacidades do dispositivo determinam políticas de SO específicas do dispositivo para comunicação service-UART . Toda a comunicação entre o computador anfitrião e um dispositivo ligado é através do UART do serviço. O computador anfitrião comunica com um dispositivo anexado para realizar operações no dispositivo. Fabricantes, programadores de software e técnicos de serviços de campo utilizam capacidades para desbloquear a comunicação service-UART para as operações necessárias, garantindo ao mesmo tempo que o dispositivo está protegido contra utilizadores maliciosos.
Os fabricantes de dispositivos e os OEMs podem bloquear a comunicação service-UART para impedir a utilização não autorizada 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 utilizador pode obter o ID de um dispositivo, mas nada mais; todas as outras operações requerem uma capacidade de dispositivo. Normalmente, a finalização é efetuada no piso da fábrica antes de o fabricante ter enviado o dispositivo para um site de cliente.
Um ficheiro de capacidade de dispositivo contém zero ou mais capacidades apenas para um único dispositivo. O ficheiro de capacidade não funcionará se for aplicado a um dispositivo que não seja aquele para o qual se destina. Um dispositivo pode ter as seguintes capacidades, cada uma das quais é descrita mais adiante neste tópico:
Nota
As capacidades do dispositivo não estão relacionadas com as capacidades da aplicação. As capacidades da aplicação especificam os recursos necessários para uma aplicação no runtime. Veja o manifesto da aplicação para obter mais informações sobre as capacidades da aplicação.
Como determinar as capacidades do dispositivo ou o estado de fabrico
Para determinar a configuração da capacidade armazenada no dispositivo anexado, utilize o comando az sphere device capability show-attached . O comando apresenta as capacidades que são configuradas através de um ficheiro de capacidade e algumas capacidades, mas não todas, presentes por predefinição nos quadros.
As capacidades do dispositivo podem ser afetadas pelo estado de fabrico do dispositivo. Para determinar o estado de fabrico do dispositivo, utilize o comando az sphere device manufacturing-state show . Se o comando mostrar que o dispositivo está no estado de fabrico DeviceComplete ou devolve Device access is forbidden
, a comunicação service-UART está bloqueada e precisa de uma capacidade de dispositivo para comunicar com o dispositivo a partir do seu computador. Quando um dispositivo está no estado de fabrico DeviceComplete , as operações de fabrico só são permitidas quando o dispositivo é desbloqueado através de um ficheiro de capacidade.
Nota
Se instalar um dispositivo num site de cliente, deve certificar-se de que o dispositivo está finalizado para o estado de fabrico DeviceComplete antes da instalação. Veja Finalizar o dispositivo do Azure Sphere.
O estado deviceComplete manufacuring normalmente não é adequado para um kit de programador. Para permitir o teste das operações de fabrico que estão a ser desenvolvidas por engenheiros de fabrico, um kit de desenvolvimento deve estar no estado de fabrico em branco ou no estado de fabrico Module1Complete .
Como os dispositivos adquirem capacidades
Os dispositivos podem adquirir capacidades de uma de três formas:
Aberto por predefinição. Um dispositivo que esteja no estado de fabrico em branco ou no estado de fabrico Module1Complete tem algumas capacidades abertas por predefinição. Isto é feito para que os dispositivos ainda na fase de fabrico não precisem de estar ligados à cloud ou reclamados em catálogos, tal como é exigido pelo processo de utilização de ficheiros de capacidade de dispositivos para desbloquear capacidades. À medida que o fabrico progride, os fabricantes podem alterar o estado de fabrico do dispositivo para bloquear capacidades que já não são adequadas, conforme descrito em Tarefas de fábrica.
Sideloaded no dispositivo. Um dispositivo pode ter um ficheiro de capacidade sideload no dispositivo a partir do computador anfitrião. Utilize o comando az sphere device capability download para obter o ficheiro de capacidade. Este conjunto de capacidades de sideload persiste até que um novo ficheiro de capacidade (que pode ser um ficheiro em branco sem capacidades) seja sideload. Esta é a situação habitual durante o desenvolvimento de aplicações, por exemplo, quando o comando az sphere device enable-development é executado. O desenvolvimento de aplicações é ajudado por ter o dispositivo num estado desbloqueado, onde o programador pode realizar operações como depuração e eliminar e implementar facilmente versões sideload da aplicação.
Passado para o dispositivo com cada operação. Um dispositivo pode ter capacidades selecionadas localmente aplicadas por operação. O comando az sphere device capability apply seleciona um ficheiro de capacidade armazenado localmente no computador anfitrião. Assim que este comando for executado, a capacidade selecionada é transmitida do computador para o dispositivo com cada comando subsequente. Esta é a forma recomendada de utilizar capacidades para dispositivos que estão no campo porque as capacidades são armazenadas no computador e não no dispositivo. O risco de um engenheiro de campo deixar acidentalmente o dispositivo num estado não seguro esquecendo-se de remover a capacidade é evitado.
Antes de um ficheiro de capacidade poder ser sideloaded num dispositivo ou transmitido para um dispositivo com uma operação, este tem de ser transferido a partir do Serviço de Segurança do Azure Sphere (AS3), conforme descrito em Fazer alterações a um dispositivo após o fabrico. Os ficheiros de capacidade transferidos são específicos do dispositivo; depois de transferido, um ficheiro de capacidade pode ser utilizado repetidamente no dispositivo associado.
A capacidade enableRfTestMode
A capacidade enableRfTestMode está presente por predefinição no dispositivo quando o estado de fabrico do dispositivo está Em Branco. Esta capacidade permite a programação de fusíveis eletrónicos e a configuração e teste da operação rf. Não é possível que os proprietários do catálogo transfiram esta capacidade para um computador anfitrião. Se precisar desta capacidade, contacte o seu representante da Microsoft.
Quando o estado de fabrico do dispositivo estiver em Branco, o comando az sphere device capability show-attached apresenta a capacidade enableRfTestMode .
A capacidade appDevelopment
A capacidade de dispositivo appDevelopment desbloqueia a comunicação service-UART e altera o tipo de assinatura em que o dispositivo confia. Destina-se a ser utilizado durante o desenvolvimento de aplicações.
Por predefinição, os dispositivos do Azure Sphere confiam nos pacotes de imagens assinados pela produção que são transferidos pelo Serviço de Segurança do Azure Sphere, mas não confiam em pacotes de imagens assinados pelo SDK. Por conseguinte, não pode criar um pacote de imagem com o SDK e utilizá-lo em sideload no dispositivo do Azure Sphere para depuração, a menos que o dispositivo tenha a capacidade appDevelopment . A capacidade appDevelopment faz com que o dispositivo confie no pacote de imagem e permite-lhe iniciar, parar, depurar ou remover uma aplicação do dispositivo.
Em resumo, a capacidade 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 da forma como o pacote de imagem é assinado.
Para adicionar a capacidade appDevelopment , utilize o comando az sphere device enable-development . Este comando transfere a capacidade appDevelopment para o dispositivo anexado, faz sideloads da capacidade para o dispositivo e move o dispositivo para o grupo de dispositivos de Desenvolvimento predefinido. Para especificar um grupo de dispositivos diferente, inclua o --device-group
parâmetro .
Quando utiliza az sphere device enable-development, o dispositivo permanece desbloqueado até o bloquear explicitamente. Para desbloquear o dispositivo, utilize o comando az sphere device enable-cloud-test . Este comando remove a capacidade e altera o grupo de dispositivos, consoante os parâmetros da linha de comandos 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 implementações na cloud, respetivamente. Em vez de utilizar estes comandos, pode utilizar o comando az sphere device capability para transferir ou atualizar uma capacidade de dispositivo ou para saber quais as capacidades que um dispositivo tem atualmente.
A capacidade fieldServicing
A capacidade fieldServicing está presente num dispositivo por predefinição quando o dispositivo tem um estado de fabrico em Branco ou Módulo1Complete. Quando um dispositivo está no estado de fabrico DeviceComplete , a capacidade fieldServicing pode ser sideloaded, mas é normalmente transmitida 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 efetuar alterações a um dispositivo após o fabrico.
Independentemente do estado de fabrico do dispositivo, a capacidade fieldServicing desbloqueia a comunicação service-UART para permitir as seguintes operações:
- Sideloading a production-signed image package.
- Iniciar, parar e eliminar um pacote de imagem assinado em produção que está marcado como temporário.
- Executar tarefas de manutenção de rotina, como configurar Wi-Fi.
Embora a capacidade fieldServicing esteja presente por predefinição no dispositivo quando o estado de fabrico do dispositivo é Blank ou Module1Complete, o comando az sphere device capability show-attached não apresenta a capacidade fieldServicing .
Dependência do keystore fidedigno atualizado
Quando um ficheiro de capacidade é criado pelo AS3, é assinado com a chave de assinatura de imagem atual. Cada dispositivo tem um keystore fidedigno como parte do SO onde essas chaves são mantidas. No entanto, se o dispositivo não estiver ligado à Internet, é possível que uma capacidade não seja considerada fidedigna pelo dispositivo que está a filtrar se o keystore fidedigno desse dispositivo estiver desatualizado.
Para resolver este problema, um método consiste em permitir que o dispositivo se ligue à Internet para que atualize o keystore fidedigno. Ligue o dispositivo à Internet e prima Reset para acionar uma atualização do SO.
Se isto não for possível, pode fazer sideload de um keystore fidedigno atualizado. Para tal, aceite os termos de licenciamento e, em seguida, transfira as imagens de recuperação do SO mais recentes e, a partir deste ficheiro zip, extraia apenas o ficheiro "trusted-keystore.bin". Em seguida, pode utilizar o comando az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> para carregar o keystore fidedigno e a capacidade deve agora ser considerada fidedigna pelo dispositivo.
Um terceiro método é Recuperar o software de sistema para atualizar o SO do Azure Sphere para a versão lançada mais recente, incluindo o keystore fidedigno mais recente.