Criar e implantar aplicativos parceiros

Esta seção descreve como criar, empacotar e implantar aplicativos parceiros do Azure Sphere.

Essas instruções usam os aplicativos de exemplo IntercoreComms como exemplo.

Pré-requisitos

Habilitar desenvolvimento e depuração

Antes de criar um aplicativo de exemplo em seu dispositivo do Azure Sphere ou desenvolver novos aplicativos para ele, você deve habilitar o desenvolvimento e a depuração. Por padrão, os dispositivos do Azure Sphere são "bloqueados"; ou seja, eles não permitem que aplicativos em desenvolvimento sejam carregados de um computador e não permitem a depuração de aplicativos. Preparar o dispositivo para depuração remove essa restrição e carrega o software necessário para depuração e desbloqueia recursos do dispositivo .

Para depurar nos núcleos em tempo real, use o comando az sphere device enable-development . Esse comando configura o dispositivo para aceitar aplicativos de um computador para depuração e atribui o dispositivo ao grupo de dispositivos De desenvolvimento, o que não permite atualizações de aplicativos de nuvem. Durante o desenvolvimento e depuração do aplicativo, você deve deixar o dispositivo nesse grupo para que as atualizações de aplicativos de nuvem não substituam o aplicativo em desenvolvimento.

No Windows, você deve adicionar o --enable-rt-core-debugging parâmetro, que carrega os servidores de depuração e os drivers necessários para cada tipo de núcleo no dispositivo.

  1. Faça logon no Azure Sphere se você ainda não tiver feito isso:

    az login
    
  2. Abra uma interface de linha de comando usando o PowerShell ou o Prompt de Comando do Windows com privilégios de administrador. O --enable-rt-core-debugging parâmetro requer privilégio de administrador porque instala drivers USB para o depurador.

  3. Insira o seguinte comando:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Feche a janela após a conclusão do comando porque o privilégio de administrador não é mais necessário. Como prática recomendada, você deve sempre usar o privilégio mais baixo que pode realizar uma tarefa.

Se o comando az sphere device enable-development falhar, consulte Solucionar problemas do Azure Sphere para obter ajuda.

Habilitar desenvolvimento e depuração

Antes de criar um aplicativo de exemplo em seu dispositivo do Azure Sphere ou desenvolver novos aplicativos para ele, você deve habilitar o desenvolvimento e a depuração. Por padrão, os dispositivos do Azure Sphere são "bloqueados"; ou seja, eles não permitem que aplicativos em desenvolvimento sejam carregados de um computador e não permitem a depuração de aplicativos. A preparação do dispositivo para depuração remove essa restrição e carrega o software necessário para depuração e desbloqueia recursos do dispositivo, conforme descrito em Recursos de dispositivo e comunicação.

Para depurar nos núcleos em tempo real, use o comando az sphere device enable-development . Esse comando configura o dispositivo para aceitar aplicativos de um computador para depuração e atribui o dispositivo ao grupo de dispositivos De desenvolvimento, o que não permite atualizações de aplicativos de nuvem. Durante o desenvolvimento e depuração do aplicativo, você deve deixar o dispositivo nesse grupo para que as atualizações de aplicativos de nuvem não substituam o aplicativo em desenvolvimento.

No Windows, você deve adicionar o --enable-rt-core-debugging parâmetro, que carrega os servidores de depuração e os drivers necessários para cada tipo de núcleo no dispositivo.

  1. Faça logon no Azure se você ainda não tiver feito isso:

    az login
    
  2. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando linux com privilégios de administrador. O --enable-rt-core-debugging parâmetro requer privilégio de administrador porque instala drivers USB para o depurador.

  3. Insira o seguinte comando:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. Feche a janela após a conclusão do comando porque o privilégio de administrador não é mais necessário. Como prática recomendada, você deve sempre usar o privilégio mais baixo que pode realizar uma tarefa.

Se o comando az sphere device enable-development falhar com a seguinte mensagem de erro, consulte Solucionar problemas do Azure Sphere para obter ajuda.

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.

Criar aplicativos parceiros com o Visual Studio

  1. Verifique se o dispositivo está conectado ao computador por USB. No menu Definir item de inicialização , selecione Aplicativo do Azure Sphere (Todos os Núcleos) em que o Aplicativo Azure Sphere é o nome do seu projeto de nível superior ou pressione F5.

    Botão Depurador de GDB remoto

  2. Se você for solicitado a criar o projeto, selecione Sim. O Visual Studio compila os aplicativos parceiros, cria pacotes de imagem, os carrega de lado no quadro e inicia-os no modo de depuração. Sideloading significa que os aplicativos são entregues diretamente do computador por meio de uma conexão com fio, em vez de entregues pela nuvem.

    Observe os caminhos no Modo> deExibição Saída>Mostrar saída de: Saída de build, que indica o local dos pacotes de imagem de saída em seu computador. Quando estiver pronto para criar uma implantação, você precisará conhecer os caminhos para os pacotes de imagem.

  3. Por padrão, a janela Saída mostra a saída da Saída do Dispositivo. Para ver as mensagens do depurador, selecione Depurar no menu mostrar saída de: menu suspenso. Você também pode inspecionar a desmontagem do programa, registros ou memória por meio do menu Depurar>Windows .

Criar aplicativos parceiros com Visual Studio Code

  1. Abra a pasta que contém seus aplicativos parceiros. Visual Studio Code detecta o arquivo de workspace e pergunta se você deseja abrir o workspace. Selecione Abrir Workspace para abrir o aplicativo em tempo real e o aplicativo de alto nível ao mesmo tempo.

  2. Clique com o botão direito do mouse em qualquer um dos dois arquivos CMakeLists.txt e selecione Compilar Todos os Projetos.

  3. Clique no ícone Executar na Barra de Atividades Visual Studio Code.

  4. No menu pulldown que aparece na parte superior da janela no lado esquerdo da tela, selecione Iniciar Aplicativos do Azure Sphere (gdb)(workspace).

  5. Pressione F5 para criar e depurar o projeto. Se o projeto não tiver sido criado anteriormente ou se os arquivos tiverem sido alterados e a reconstrução for necessária, Visual Studio Code criará o projeto antes do início da depuração.

  6. Aguarde vários segundos para que Visual Studio Code crie os aplicativos, crie os pacotes de imagem, implante-os no quadro e inicie-os no modo de depuração. Você verá status atualizações no painel Saída ao longo do caminho.

    Primeiro, o CMake determina se os aplicativos precisam ser criados. Nesse caso, o foco muda para a janela de saída, que exibe a saída de CMake/Build.

    Em seguida, o painel de saída mostra a saída à medida que implanta o pacote de imagem no dispositivo. Por fim, o Console de Depuração recebe o foco e mostra a saída do gdb.

Compilar e criar o aplicativo

Para criar seus aplicativos com a CLI, você precisará encontrar as ferramentas de compilação, cabeçalhos e bibliotecas corretos, chamados coletivamente de sysroot, em seu computador. O SDK do Azure Sphere é fornecido com vários sysroots para que os aplicativos possam direcionar diferentes conjuntos de API, conforme descrito em Versão de runtime do aplicativo, sysroots e APIs Beta. Os sysroots são instalados na pasta de instalação do SDK do Azure Sphere em Sysroots.

Ao criar com a CLI, primeiro crie e implante o aplicativo com capacidade em tempo real e, em seguida, crie e implante o aplicativo de alto nível.

Criar e implantar o aplicativo com capacidade em tempo real

  1. Navegue até a pasta que contém seu aplicativo com capacidade em tempo real.

  2. Abra o arquivo app_manifest.json e verifique se a ID do componente do aplicativo de alto nível é mostrada no recurso AllowedApplicationConnections.

  3. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux. Navegue até o diretório de build do projeto.

  4. No diretório de build do projeto, no prompt de comando, execute o CMake com os seguintes parâmetros:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      O nome predefinido de configuração de build, conforme definido em CMakePresets.json.

    • --build <cmake-path>

      O diretório binário que contém o cache CMake. Por exemplo, se você executar o CMake em um exemplo do Azure Sphere, o comando de build será cmake --build out/ARM-Debug.

    • <source-path>

      O caminho do diretório que contém os arquivos de origem do aplicativo de exemplo. No exemplo, o repositório de exemplos do Azure Sphere foi baixado em um diretório chamado AzSphere.

      Os parâmetros CMake são separados por espaços. O caractere de continuação de linha (^ para linha de comando do Windows, \ para linha de comando linux ou ' para PowerShell) pode ser usado para legibilidade, mas não é necessário.

    Os exemplos a seguir mostram os comandos CMake para o IntercoreComms RTApp:

    Prompt de Comando do Windows

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    
  5. No diretório de build do projeto, no prompt de comando, execute o Ninja para criar o aplicativo e criar o arquivo de pacote de imagem.

    ninja -C out/ARM-Debug
    

    O Ninja coloca os arquivos de aplicativo e .imagepackage resultantes no diretório especificado.

    Você também pode invocar o Ninja por meio do CMake com o seguinte comando:

    cmake --build out/<binary-dir>
    

    Defina <binary-dir> como o diretório binário que contém o cache CMake. Por exemplo, se você executar o CMake em um exemplo do Azure Sphere, o comando de build será cmake --build out/ARM-Debug.

    Ao solucionar problemas, especialmente depois de fazer alterações nos comandos do CMake, exclua todo o build e tente novamente.

  6. Exclua todos os aplicativos que já estão implantados no dispositivo:

    az sphere device sideload delete
    
  7. No diretório de build do projeto, no prompt de comando, carregue o pacote de imagem que o Ninja criou:

    az sphere device sideload deploy --image-package <path-to-imagepackage>
    

    O aplicativo começará a ser executado logo após ser carregado.

  8. Obtenha a ID do componente para a imagem:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    O comando retorna todos os metadados do pacote de imagem. A ID do componente do aplicativo é exibida na seção Identidade do Tipo de Imagem do Aplicativo. Por exemplo:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

Criar e implantar o aplicativo de alto nível

  1. Navegue até a pasta que contém seu aplicativo de alto nível.

  2. Abra o arquivo app_manifest.json e verifique se a ID do componente do RTApp é mostrada no recurso AllowedApplicationConnections.

  3. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux. Navegue até o diretório de build do projeto.

  4. No diretório de build do projeto, no prompt de comando, execute o CMake com os seguintes parâmetros:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      O nome predefinido de configuração de build, conforme definido em CMakePresets.json.

    • --build <cmake-path>

      O diretório binário que contém o cache CMake. Por exemplo, se você executar o CMake em um exemplo do Azure Sphere, o comando de build será cmake --build out/ARM-Debug.

    • <source-path>

      O caminho do diretório que contém os arquivos de origem do aplicativo de exemplo. No exemplo, o repositório de exemplos do Azure Sphere foi baixado em um diretório chamado AzSphere.

      Os parâmetros CMake são separados por espaços. O caractere de continuação de linha (^ para linha de comando do Windows, \ para linha de comando linux ou ' para PowerShell) pode ser usado para legibilidade, mas não é necessário.

    Os exemplos a seguir mostram os comandos CMake para o aplicativo de alto nível IntercoreComms.

    Prompt de Comando do Windows

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    
  5. No diretório de build do projeto, no prompt de comando, execute o Ninja para criar o aplicativo e criar o arquivo de pacote de imagem.

    ninja -C out/ARM-Debug
    

    O Ninja coloca os arquivos de aplicativo e .imagepackage resultantes no diretório especificado.

    Você também pode invocar o Ninja por meio do CMake com o seguinte comando:

    cmake --build out/<binary-dir>
    

    Defina <binary-dir> como o diretório binário que contém o cache CMake. Por exemplo, se você executar o CMake em um exemplo do Azure Sphere, o comando de build será cmake --build out/ARM-Debug.

    Ao solucionar problemas, especialmente depois de fazer alterações nos comandos do CMake, exclua todo o build e tente novamente.

  6. No diretório de build do projeto, no prompt de comando, carregue o pacote de imagem que o Ninja criou:

    az sphere device sideload deploy --image-package <package-name>
    

    O aplicativo começará a ser executado logo após ser carregado.

  7. Obtenha a ID do componente para a imagem:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    O comando retorna todos os metadados do pacote de imagem. A ID do componente do aplicativo é exibida na seção Identidade do Tipo de Imagem do Aplicativo. Por exemplo:

      "ComponentId": "<component-ID>",
    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...