Tutorial: Criar um aplicativo de alto nível

Um aplicativo de alto nível é executado no sistema operacional do Azure Sphere, usa as bibliotecas de aplicativos do Azure Sphere e pode se comunicar com a Internet e com serviços baseados em nuvem. Consulte Visão geral dos aplicativos do Azure Sphere para obter informações básicas sobre aplicativos de alto nível.

Neste tutorial, você aprenderá a:

  • Preparar seu dispositivo para desenvolvimento e depuração
  • Compilar, executar e depurar um aplicativo de alto nível

Pré-requisitos

Preparar seu dispositivo para 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 o sideload. Por padrão, os dispositivos do Azure Sphere estã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 sideload remove essa restrição.

O comando azsphere device enable-development configura o dispositivo para aceitar aplicativos para depuração, carrega o servidor de depuração no dispositivo e atribui o dispositivo a um grupo de dispositivos que não permite atualizações de aplicativos de nuvem. Durante o desenvolvimento e a depuração de aplicativos, você deve deixar o dispositivo nesse grupo para que as atualizações de aplicativos de nuvem não substituam o aplicativo em desenvolvimento.

  1. Verifique se o dispositivo do Azure Sphere está conectado ao computador e se o computador está conectado à Internet.

  2. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux.

  3. Insira o seguinte comando:

    azsphere device enable-development
    

    Você deverá ver uma saída semelhante à seguinte:

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

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

Compilar e executar o aplicativo de alto nível com Visual Studio Code

Este tutorial usa o modelo blink do Azure Sphere, que faz parte da Extensão do Azure Sphere para Visual Studio Code. O modelo blink pisca um LED para que você possa verificar se o dispositivo e as ferramentas do Azure Sphere estão instalados e configurados corretamente.

  1. Comece Visual Studio Code. Selecione Exibir>paleta de comandos e digite Azure Sphere: Gerar Novo Projeto.

    Barra de comandos no Visual Studio Code

  2. Escolha Piscar no menu Modelos.

    menu pop-up com nomes de modelo

  3. Visual Studio Code exibe uma Explorador de Arquivos janela. Navegue até a pasta onde você deseja colocar o aplicativo Blink. Visual Studio Code cria a pasta Blink no local selecionado e gera os arquivos de build para o aplicativo Blink. Você deve ver mensagens do CMake.

  4. Abra o CMakeLists.txt e altere a configuração TARGET_DIRECTORY para especificar a pasta que contém definições para o hardware que você está usando. Por padrão, o TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que corresponde ao Kit de Desenvolvimento seeed do Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Várias definições de hardware são fornecidas com o modelo. Por exemplo, se você estiver usando uma Placa de Desenvolvimento Mini SEEED MT3620, especifique HardwareDefinitions/seeed_mt3620_mdb vez.

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

  6. Aguarde vários segundos Visual Studio Code para compilar o aplicativo, criar um pacote de imagem, implantá-lo no quadro e in implantá-lo no modo de depuração. Você verá atualizações de status no painel Saída ao longo do caminho.

    Primeiro, o CMake determina se o aplicativo precisa ser compilado. Nesse caso, o foco muda para o painel de saída, que exibe a saída do CMake/Build.

    Em seguida, o painel de saída mostra a saída do Azure Sphere à 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.

    Ponta

    Anote o local do pacote de imagem, pois você precisará dele ao criar uma implantação. Você deverá ver uma mensagem como "<>Criar arquivos gravados no caminho" na janela saída, <> em que o caminho é o caminho completo para a pasta de build do aplicativo Blink, normalmente terminando em "out\ARM-Debug" ou "out/ARM-Debug".

  7. Após um pequeno atraso, você deverá ver um LED piscar.

  8. Defina um ponto de interrupção em algum lugar em main.c e percorra o aplicativo, para que você possa explorar os recursos de Visual Studio Code depuração do Azure Sphere.

Compilar e executar o aplicativo de alto nível com o Visual Studio

Este tutorial usa o modelo blink do Azure Sphere, que faz parte da Extensão do Azure Sphere para Visual Studio. O modelo blink pisca um LED para que você possa verificar se o dispositivo e as ferramentas do Azure Sphere estão instalados e configurados corretamente.

  1. Se você for novo no Visual Studio, considere o Início Rápido ou o Tour Guiado para saber mais sobre como navegar e usá-lo.

  2. Abra o Visual Studio e selecione Criar um novo projeto. Na caixa Pesquisar, digite "azure sphere" para obter uma lista de modelos do Azure Sphere. Escolha Piscar do Azure Sphere na lista.

  3. Insira um nome e um local para o projeto e selecione Criar.

  4. Abra o CMakeLists.txt e altere a configuração TARGET_DIRECTORY para especificar a pasta que contém definições para o hardware que você está usando. Por padrão, o TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que corresponde ao Kit de Desenvolvimento seeed do Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Várias definições de hardware são fornecidas com o modelo. Por exemplo, se você estiver usando uma Placa de Desenvolvimento Mini SEEED MT3620, especifique HardwareDefinitions/seeed_mt3620_mdb vez.

  5. No Visual Studio, selecione Exibir>Saída para exibir o painel Saída.

  6. Verifique se o dispositivo está conectado ao computador por USB. No menu Definir item de inicialização, selecione Aplicativo do Azure Sphere (HLCore), em que o Aplicativo Azure Sphere é o nome do aplicativo de alto nível atual ou pressione F5.

    Botão Depurador GDB Remoto

  7. Se for solicitado que você compile o projeto, selecione Sim. O Visual Studio compila o aplicativo, cria um pacote de imagem, faz sideload dele na placa e o inicia no modo de depuração. O sideload significa que o aplicativo é entregue diretamente do computador por meio de uma conexão com fio, em vez de ser entregue por meio da nuvem.

    Ponta

    Anote o local do pacote de imagem, pois você precisará dele ao criar uma implantação. Você deverá ver uma mensagem como "O arquivo de saída está em:>< caminho" >> na saída em Exibir SaídaMostrar saída de: Build, <> em que o caminho é o caminho completo para a pasta de build do aplicativo Blink, normalmente terminando em "out/ARM-Debug".

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

  9. Ao executar o programa, você deverá ver um LED piscar.

Baixar o aplicativo de exemplo

Você pode baixar o aplicativo HelloWorld da seguinte maneira:

  1. Aponte seu navegador para o Navegador de Exemplos da Microsoft.
  2. Digite "Azure Sphere" na caixa Pesquisar.
  3. Selecione Azure Sphere – Olá, Mundo nos resultados da pesquisa.
  4. Selecione Baixar ZIP.
  5. Abra o arquivo baixado e extraia para um diretório local.

Compilar o exemplo

Para criar os arquivos build e .imagepackage para o HelloWorld_HighLevelApp aplicativo de exemplo, siga estas etapas.

  1. Atualize o exemplo para direcionar seu hardware, se necessário. Por padrão, os exemplos direcionam o hardware que segue o RDB (design do quadro de referência) MT3620, como o Kit de Desenvolvimento MT3620 da Seeed Studio. Definições de hardware de destino adicionais para os aplicativos de exemplo estão disponíveis no diretório HardwareDefinitions do repositório de Exemplos do Azure Sphere. Por exemplo, os arquivos de definição de hardware para o Kit de Início Avnet MT3620 estão no subdiretório HardwareDefinitions/avnet_mt3620_sk.

    • Abra CMakeLists.txt e atualize o parâmetro TARGET_DIRECTORY na função azure_target_hardware_definition para apontar para o subdiretório do hardware. Por exemplo:

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. 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.

  3. 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 do 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 para o aplicativo de exemplo. No exemplo, o repositório de exemplos do Azure Sphere foi baixado para um diretório chamado AzSphere.

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

    Os exemplos a seguir mostram os comandos do CMake Olá, Mundo aplicativo de alto nível:

    Prompt de Comando do Windows

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  4. Execute o Ninja para compilar o aplicativo e criar o arquivo de pacote de imagem:

    ninja -C out/ARM-Debug
    

    O Ninja coloca o aplicativo resultante e os arquivos .imagepackage 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.

Executar o exemplo

  1. Se o dispositivo já estiver executando um aplicativo, exclua o aplicativo:

    azsphere device sideload delete
    
  2. Altere para o diretório que contém os arquivos build e .imagepackage criados anteriormente.

  3. Carregue o pacote de imagem em seu dispositivo executando o comando azsphere device sideload deploy e especificando o pacote de imagem. Por exemplo:

    azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Esse comando carrega o pacote de imagem e inicia o aplicativo. Você deverá ver um LED piscar.

    Ponta

    Observe o caminho do pacote de imagem. Você usará o pacote de imagem posteriormente no Início Rápido de Implantação.

Depurar o exemplo

  1. Altere para o diretório que contém os arquivos build e .imagepackage criados anteriormente.

  2. Obtenha a ID do componente se você ainda não a tiver:

    azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    

  1. Se o aplicativo estiver em execução, pare-o e reinicie-o com a --debug-mode opção:

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    

Você deve ver:

 <ComponentId>
 App state   : debugging
 GDB port    : 2345
 Output port : 2342
 Core        : High-level
  1. Use um cliente de terminal para estabelecer uma conexão TCP telnet ou bruta para ler o fluxo de saída do processo. Especifique 192.168.35.2 como o endereço IP e 2342 como a porta.

  2. Abra uma interface de linha de comando usando o PowerShell ou um prompt de comando padrão no Windows ou shell de comando no Linux e passe o binário do aplicativo .out do build como um parâmetro. Isso habilitará a depuração completa do código-fonte.

    Prompt de Comando do Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Nota

    O SDK do Azure Sphere é fornecido com vários sysroots para que os aplicativos possam direcionar diferentes conjuntos de API, conforme descrito na 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.

  3. Defina o destino de depuração remota para o endereço IP 192.168.35.2 na porta 2345:

    target remote 192.168.35.2:2345

  4. Execute qualquer outro comando gdb que você escolher. Por exemplo, os comandos a seguir definem um ponto de interrupção na entrada como main() e, em seguida, continuam a execução após o ponto de interrupção, respectivamente.

    break main
    
    c
    

    Para obter mais informações sobre a depuração com gdb, consulte GDB: O Depurador de Projeto GNU ou uma das outras várias fontes sobre o assunto.

Próximas etapas

Você criou um aplicativo de alto nível para ser executado em seu dispositivo do Azure Sphere. Talvez você queira modificá-lo agora. As definições de hardware descrevem como editar um arquivo JSON de definição de hardware e gerar novamente o arquivo de cabeçalho associado.

Em seguida, saiba como implantar seu aplicativo de alto nível na nuvem.

Consulte também

Visite a Galeria do Azure Sphere, uma coleção de scripts, utilitários e funções inspirados, não contidos e reutilizáveis do Azure Sphere.