Partilhar via


Criar e implementar aplicações de parceiros

Esta secção descreve como criar, empacotar e implementar aplicações parceiras do Azure Sphere.

Estas instruções utilizam as aplicações de exemplo IntercoreComms como exemplo.

Pré-requisitos

Ativar o desenvolvimento e a depuração

Antes de poder criar uma aplicação de exemplo no seu dispositivo do Azure Sphere ou desenvolver novas aplicações para o mesmo, tem de ativar o desenvolvimento e a depuração. Por predefinição, os dispositivos do Azure Sphere estão "bloqueados"; ou seja, não permitem que as aplicações em desenvolvimento sejam carregadas a partir de um PC e não permitem a depuração de aplicações. Preparar o dispositivo para depuração remove esta restrição e carrega o software necessário para depurar e desbloqueia as capacidades do dispositivo.

Para depurar os núcleos em tempo real, utilize o comando az sphere device enable-development . Este comando configura o dispositivo para aceitar aplicações de um PC para depuração e atribui o dispositivo ao grupo de dispositivos de Desenvolvimento, que não permite atualizações de aplicações na cloud. Durante o desenvolvimento e depuração de aplicações, deve deixar o dispositivo neste grupo para que as atualizações da aplicação na cloud não substituam a aplicação em desenvolvimento.

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

  1. Inicie sessão no Azure Sphere se ainda não o tiver feito:

    az login
    
  2. Abra uma interface de linha de comandos com o PowerShell ou a Linha de Comandos do Windows com privilégios de administrador. O --enable-rt-core-debugging parâmetro requer privilégios de administrador porque instala controladores USB para o depurador.

  3. Introduza 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 já não é necessário. Como melhor prática, deve sempre utilizar o privilégio mais baixo que pode realizar uma tarefa.

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

Ativar o desenvolvimento e a depuração

Antes de poder criar uma aplicação de exemplo no seu dispositivo do Azure Sphere ou desenvolver novas aplicações para o mesmo, tem de ativar o desenvolvimento e a depuração. Por predefinição, os dispositivos do Azure Sphere estão "bloqueados"; ou seja, não permitem que as aplicações em desenvolvimento sejam carregadas a partir de um PC e não permitem a depuração de aplicações. Preparar o dispositivo para depuração remove esta restrição e carrega o software necessário para depurar e desbloqueia as capacidades do dispositivo, conforme descrito em Capacidades e comunicação do dispositivo.

Para depurar os núcleos em tempo real, utilize o comando az sphere device enable-development . Este comando configura o dispositivo para aceitar aplicações de um PC para depuração e atribui o dispositivo ao grupo de dispositivos de Desenvolvimento, que não permite atualizações de aplicações na cloud. Durante o desenvolvimento e depuração de aplicações, deve deixar o dispositivo neste grupo para que as atualizações da aplicação na cloud não substituam a aplicação em desenvolvimento.

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

  1. Inicie sessão no Azure se ainda não o tiver feito:

    az login
    
  2. Abra uma interface de linha de comandos com o PowerShell, a Linha de Comandos do Windows ou a shell de comandos do Linux com privilégios de administrador. O --enable-rt-core-debugging parâmetro requer privilégios de administrador porque instala controladores USB para o depurador.

  3. Introduza 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 já não é necessário. Como melhor prática, deve sempre utilizar 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, veja Resolver 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 aplicações de parceiros com o Visual Studio

  1. Certifique-se de que o dispositivo está ligado ao PC por USB. No menu Definir item de arranque , selecione Aplicação do Azure Sphere (Todos os Núcleos) em que Aplicação do Azure Sphere é o nome do projeto de nível superior ou prima F5.

    Botão Depurador de GDB Remoto

  2. Se lhe for pedido para criar o projeto, selecione Sim. O Visual Studio compila as aplicações parceiras, cria pacotes de imagens, coloca-os em sideloads no quadro e inicia-os no modo de depuração. O sideload significa que as aplicações são fornecidas diretamente a partir do PC através de uma ligação com fios, em vez de serem entregues através da cloud.

    Tenha em atenção os caminhos na saída Ver>Apresentação deSaída> de: Resultado da compilação, que indica a localização dos pacotes de imagem de saída no PC. Quando estiver pronto para criar uma implementação, terá de saber os caminhos para os pacotes de imagens.

  3. Por predefinição , a janela Saída mostra o resultado da Saída do Dispositivo. Para ver mensagens do depurador, selecione Depurar no menu pendente Mostrar saída de: . Também pode inspecionar a desmontagem, registos ou memória do programa através do menu Depurar>o Windows .

Criar aplicações de parceiros com o Visual Studio Code

  1. Abra a pasta que contém as suas aplicações parceiras. O Visual Studio Code deteta o ficheiro da área de trabalho e pergunta se pretende abrir a área de trabalho. Selecione Abrir Área de Trabalho para abrir a aplicação em tempo real e a aplicação de alto nível ao mesmo tempo.

  2. Clique com o botão direito do rato em qualquer um dos dois ficheiros CMakeLists.txt e selecione Criar Todos os Projetos.

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

  4. No menu pendente apresentado na parte superior da janela no lado esquerdo do ecrã, selecione Iniciar Aplicações do Azure Sphere (gdb)(área de trabalho).

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

  6. Aguarde vários segundos para que o Visual Studio Code crie as aplicações, crie os pacotes de imagens, implemente-os no quadro e inicie-os no modo de depuração. Verá atualizações de estado no painel Saída ao longo do caminho.

    Em primeiro lugar, o CMake determina se as aplicações precisam de ser criadas. Em caso afirmativo, o foco muda para a janela de saída, que apresenta a saída de CMake/Build.

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

Compilar e compilar a aplicação

Para criar as suas aplicações com a CLI, terá de encontrar as ferramentas de compilação, cabeçalhos e bibliotecas corretos , coletivamente denominados sysroot, no seu computador. O SDK do Azure Sphere é fornecido com vários sysroots para que as aplicações possam visar diferentes conjuntos de API, conforme descrito em Versão do runtime da aplicação, 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, crie e implemente primeiro a aplicação com capacidade em tempo real e, em seguida, crie e implemente a aplicação de alto nível.

Criar e implementar a aplicação com capacidade em tempo real

  1. Navegue para a pasta que contém a sua aplicação em tempo real.

  2. Abra o ficheiro app_manifest.json e verifique se o ID de componente da aplicação de alto nível é apresentado na capacidade AllowedApplicationConnections.

  3. Abra uma interface de linha de comandos com o PowerShell, a Linha de Comandos do Windows ou a shell de comandos do Linux. Navegue para o diretório de compilação do projeto.

  4. No diretório de compilação do projeto, na linha de comandos, execute CMake com os seguintes parâmetros:

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

      O nome predefinido da configuração da compilação, conforme definido no CMakePresets.json.

    • --build <cmake-path>

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

    • <source-path>

      O caminho do diretório que contém os ficheiros de origem da aplicação de exemplo. No exemplo, o repositório de exemplos do Azure Sphere foi transferido para um diretório chamado AzSphere.

      Os parâmetros CMake são separados por espaços. O caráter de continuação da linha (^ para a linha de comandos do Windows, \ para a linha de comandos do Linux ou ' para o PowerShell) pode ser utilizado para legibilidade, mas não é necessário.

    Os exemplos seguintes mostram os comandos CMake para o IntercoreComms RTApp:

    Linha de Comandos 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 compilação do projeto, na linha de comandos, execute Ninja para criar a aplicação e criar o ficheiro de pacote de imagem.

    ninja -C out/ARM-Debug
    

    Ninja coloca a aplicação resultante e os ficheiros .imagepackage no diretório especificado.

    Também pode invocar Ninja através de CMake com o seguinte comando:

    cmake --build out/<binary-dir>
    

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

    Ao resolver problemas, especialmente depois de efetuar alterações aos comandos CMake, elimine toda a sua criação e tente novamente.

  6. Elimine todas as aplicações que já estejam implementadas no dispositivo:

    az sphere device sideload delete
    
  7. No diretório de compilação do projeto, na linha de comandos, carregue o pacote de imagem que Ninja criou:

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

    A aplicação começará a ser executada logo após ser carregada.

  8. Obtenha o ID do componente da imagem:

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

    O comando devolve todos os metadados do pacote de imagem. O ID do componente da aplicação é apresentado na secção Identidade do Tipo de Imagem da Aplicação. Por exemplo:

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

Criar e implementar a aplicação de alto nível

  1. Navegue para a pasta que contém a sua aplicação de alto nível.

  2. Abra o ficheiro app_manifest.json e verifique se o ID do componente do RTApp é apresentado na capacidade AllowedApplicationConnections.

  3. Abra uma interface de linha de comandos com o PowerShell, a Linha de Comandos do Windows ou a shell de comandos do Linux. Navegue para o diretório de compilação do projeto.

  4. No diretório de compilação do projeto, na linha de comandos, execute CMake com os seguintes parâmetros:

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

      O nome predefinido da configuração da compilação, conforme definido no CMakePresets.json.

    • --build <cmake-path>

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

    • <source-path>

      O caminho do diretório que contém os ficheiros de origem da aplicação de exemplo. No exemplo, o repositório de exemplos do Azure Sphere foi transferido para um diretório chamado AzSphere.

      Os parâmetros CMake são separados por espaços. O caráter de continuação da linha (^ para a linha de comandos do Windows, \ para a linha de comandos do Linux ou ' para o PowerShell) pode ser utilizado para legibilidade, mas não é necessário.

    Os exemplos seguintes mostram os comandos CMake para a aplicação de alto nível IntercoreComms.

    Linha de Comandos 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 compilação do projeto, na linha de comandos, execute Ninja para criar a aplicação e criar o ficheiro de pacote de imagem.

    ninja -C out/ARM-Debug
    

    Ninja coloca a aplicação resultante e os ficheiros .imagepackage no diretório especificado.

    Também pode invocar Ninja através de CMake com o seguinte comando:

    cmake --build out/<binary-dir>
    

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

    Ao resolver problemas, especialmente depois de efetuar alterações aos comandos CMake, elimine toda a sua criação e tente novamente.

  6. No diretório de compilação do projeto, na linha de comandos, carregue o pacote de imagem que Ninja criou:

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

    A aplicação começará a ser executada logo após ser carregada.

  7. Obtenha o ID do componente da imagem:

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

    O comando devolve todos os metadados do pacote de imagem. O ID do componente da aplicação é apresentado na secção Identidade do Tipo de Imagem da Aplicação. Por exemplo:

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