Tutorial: Criar um aplicativo de alto nível
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).
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 o seu dispositivo para desenvolvimento e depuração
- Compilar, executar e depurar um aplicativo de alto nível
Pré-requisitos
- Instale o CMake e o Ninja para Windows ou Linux.
- Instale o Visual Studio Code para Windows ou Linux.
- Instale o CMake e o Ninja para Windows ou Linux.
- Instalar o SDK para Windows ou Linux
- Escolher um locatário e reivindicar seu dispositivo
- Configurar a rede e atualizar o sistema operacional do dispositivo
Preparar o 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 sideload. Por padrão, dispositivos do Azure Sphere são "bloqueados", ou seja, 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 na nuvem. Durante o desenvolvimento e a depuração de aplicativos, você deve deixar o dispositivo neste grupo para que as atualizações de aplicativos de nuvem não substituam o aplicativo em desenvolvimento.
Verifique se o dispositivo do Azure Sphere está conectado ao computador e se o computador está conectado à Internet.
Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux.
Insira o seguinte comando:
azsphere device enable-development
Será exibida 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 o 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.
Inicie o Visual Studio Code. Selecione Exibir>paleta de comandos e digite Azure Sphere: Gerar Novo Projeto.
Escolha Piscar no menu Modelos.
Em seguida, o Visual Studio Code exibe uma janela do Explorador de Arquivos. Navegue até a pasta onde deseja colocar o aplicativo Blink. O 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.
Abra o arquivo CMakeLists.txt e altere a configuração TARGET_DIRECTORY para especificar a pasta que contém as definições do hardware que você está usando. Por padrão, o TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que corresponde ao Kit de Desenvolvimento MT3620 do Azure Sphere Seeed:
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 Mini Placa de Desenvolvimento MT3620 SEEED, especifique HardwareDefinitions/seeed_mt3620_mdb em vez disso.
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, o Visual Studio Code compilará o projeto antes do início da depuração.
Aguarde alguns segundos para que o Visual Studio Code compile o aplicativo, crie um pacote de imagens, implante-o na placa e inicie-o 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 criado. 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 ele implanta o pacote de imagem no dispositivo. Por fim, o console de depuração recebe o foco e mostra a saída do gdb.
Dica
Anote o local do pacote de imagens, pois você precisará dele ao criar uma implantação. Você deve ver uma mensagem como "Arquivos de compilação gravados no <caminho" na janela Saída, onde <o caminho> é o caminho completo para a pasta de compilação do aplicativo Blink, normalmente terminando em "out\ARM-Debug" ou "out/>ARM-Debug".
Após um pequeno atraso, você deverá ver um LED piscar.
Defina um ponto de interrupção em algum lugar de main.c e percorra o aplicativo para que você possa explorar os recursos de depuração do Visual Studio Code para o Azure Sphere.
Compilar e executar o aplicativo de alto nível com o Visual Studio
Este tutorial usa o modelo Azure Sphere Blink, 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.
Se você for novo no Visual Studio, considere o Início Rápido ou o Tour Guiado para saber mais sobre como navegar nele e usá-lo.
Abra o Visual Studio e selecione Criar um projeto. Na caixa Pesquisar, digite 'azure sphere' para obter uma lista de modelos do Azure Sphere. Escolha Azure Sphere Blink na lista.
Insira um nome e um local para o projeto e selecione Criar.
Abra o arquivo CMakeLists.txt e altere a configuração TARGET_DIRECTORY para especificar a pasta que contém as definições do hardware que você está usando. Por padrão, o TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que corresponde ao Kit de Desenvolvimento MT3620 do Azure Sphere Seeed:
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 Mini Placa de Desenvolvimento MT3620 SEEED, especifique HardwareDefinitions/seeed_mt3620_mdb em vez disso.
No Visual Studio, selecione Exibir>Saída para exibir o painel Saída.
Verifique se seu dispositivo está conectado ao seu PC por USB. No menu Definir item de inicialização, selecione Aplicativo do Azure Sphere (HLCore), em que o Aplicativo do Azure Sphere é o nome do aplicativo de alto nível atual, ou pressione F5.
Caso precise compilar o projeto, selecione Sim. O Visual Studio compila o aplicativo, cria um pacote de imagem, executa sideloads para a placa e a inicia no modo de depuração. Sideload significa que o aplicativo é entregue diretamente do PC por uma conexão com fio, em vez de entregue por meio da nuvem.
Dica
Anote o local do pacote de imagens, pois você precisará dele ao criar uma implantação. Você deve ver uma mensagem como "O arquivo de saída está em: <caminho>" na saída em Exibir>saída>Mostrar saída de: Build, onde <path> é o caminho completo para a pasta de compilação do aplicativo Blink, normalmente terminando em "out/ARM-Debug".
Por padrão, o painel Saída mostra a saída da Saída do Dispositivo. Para ver as mensagens do depurador, selecione Depurar no menu suspenso Mostrar saída de:. Inspecione também a desmontagem do programa, os registros ou a memória por meio do menu Depuração>Windows.
Ao executar o programa, você deverá ver o LED piscar.
Baixar o aplicativo de exemplo
Você pode baixar o aplicativo HelloWorld da seguinte forma:
- Aponte seu navegador para o Navegador de Exemplos da Microsoft.
- Digite "Azure Sphere" na caixa Pesquisar.
- Selecione Azure Sphere – Hello World nos resultados da pesquisa.
- Selecione Baixar ZIP.
- Abra o arquivo baixado e extraia para um diretório local.
Compilar o exemplo
Para criar os arquivos de build e .imagepackage para o aplicativo de exemplo HelloWorld_HighLevelApp, siga estas etapas.
Atualize a amostra para direcioná-la ao seu hardware, se necessário. Por padrão, os exemplos são direcionados ao hardware que segue o RDB (design da placa de referência) MT3620, como o Kit de Desenvolvimento MT3620 da Seeed Studios. 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 MT3620 da Avnet 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 seu hardware. Por exemplo:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
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 compilação do projeto.
No diretório de compilação 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 da predefinição de configuração de compilação, 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 do 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 linha de comando do Windows, \ para linha de comando do Linux ou ' para PowerShell) pode ser usado para legibilidade, mas não é necessário.
Os exemplos a seguir mostram os comandos do CMake para o aplicativo de alto nível Hello World:
Execute o Ninja para construir o aplicativo e criar o arquivo do pacote de imagens:
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 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
.Ao solucionar o problema, especialmente depois de fazer alterações aos comandos do CMake, exclua todo o build e tente novamente.
Execute o exemplo
Se o dispositivo já estiver executando um aplicativo, exclua o aplicativo:
azsphere device sideload delete
Altere para o diretório que contém o build e os arquivos .imagepackage criados anteriormente.
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 imagens e inicia o aplicativo. Você deve ver um LED piscando.
Dica
Observe o caminho do pacote de imagens. Você usará o pacote de imagem posterior no Início Rápido da Implantação.
Depurar o exemplo
Altere para o diretório que contém o build e os arquivos .imagepackage criados anteriormente.
Obtenha o ID do componente, caso ainda não o tenha:
azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
Se o aplicativo estiver em execução, interrompa-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ê deverá ver:
<ComponentId>
App state : debugging
GDB port : 2345
Output port : 2342
Core : High-level
Use um cliente de terminal para estabelecer uma conexão Telnet ou TCP bruta para ler o fluxo de saída do processo. Especifica 192.168.35.2 como endereço IP e 2342 como a porta.
Abra uma interface de linha de comando usando o PowerShell ou um prompt de comando padrão no Windows ou o shell de comando no Linux e passe o binário do aplicativo .out do build como um parâmetro. Isso habilitará a depuração de código-fonte completa.
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
Observação
O SDK do Azure Sphere é fornecido com vários sysroots para que os aplicativos possam direcionar diferentes conjuntos de APIs, conforme descrito em Versão do runtime do aplicativo, sysroots e APIs beta. Os sysroots são instalados na pasta de instalação do SDK do Azure Sphere em Sysroots.
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
Execute qualquer outro comando gdb que você escolher. Por exemplo, os comandos a seguir definem um ponto de interrupção na entrada de 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 depuração com gdb, consulte GDB: The GNU Project Debugger ou uma das outras inúmeras fontes sobre o assunto.
Próximas etapas
Você criou um aplicativo de alto nível para ser executado em seu dispositivo do Azure Sphere. Você pode querer modificá-lo agora. Definições de hardware descreve 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.
Confira também
Visite a Galeria do Azure Sphere, uma coleção de scripts, utilitários e funções inspiradores, não mantidos e reutilizáveis do Azure Sphere.