Criar aplicativos parceiros
A maneira mais fácil de criar um novo par de aplicativos parceiros é criar um diretório de nível superior para conter os aplicativos capazes de alto nível e em tempo real e, em seguida, criar os aplicativos capazes de alto nível e em tempo real por sua vez.
Criar um aplicativo de alto nível
Para criar um aplicativo de alto nível, comece com o modelo HLCore Blank da extensão Visual Studio Code Azure Sphere e ajuste a configuração ao seu projeto seguindo estas etapas:
Inicie Visual Studio Code. Selecione Exibir>paleta de comandos e digite Azure Sphere: Gerar Novo Projeto.
Escolha HLCore Blank no menu Modelos.
Visual Studio Code exibe uma janela de Explorador de Arquivos. Navegue até a pasta em que deseja colocar o aplicativo em branco (ou selecione Nova Pasta e crie um novo diretório de projeto de parceiro de nível superior) e especifique um nome para seu projeto, por exemplo, NewHLApp. Visual Studio Code cria a pasta NewHLApp em seu local selecionado e gera os arquivos de build para o aplicativo em branco. Você deve ver mensagens do CMake.
Abra o arquivo CMakeLists.txt e especifique a pasta que contém definições para o hardware que você está usando. Por padrão, o aplicativo HLCore Blank não contém definições de hardware. Você pode encontrar definições de hardware de exemplo no repositório Exemplos do Azure Sphere ou criar uma conforme descrito em definições de hardware.
O seguinte mostra como adicionar as definições de hardware de exemplo para o Kit de Desenvolvimento mt3620 do Seeed Azure Sphere:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Essa linha deve ser inserida antes do comando final iniciar
azsphere_target_add_image_package
.
Você também pode criar um novo aplicativo de alto nível a partir de qualquer um dos exemplos do Azure Sphere de alto nível:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie uma das pastas de aplicativo de alto nível e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewHLApp C)
Criar um RTApp
Para criar um novo aplicativo em tempo real, comece com o modelo RTCore Blank da extensão Visual Studio Code Azure Sphere e ajuste a configuração ao seu projeto seguindo estas etapas:
Inicie Visual Studio Code. Selecione Exibir>paleta de comandos e digite Azure Sphere: Gerar Novo Projeto.
Escolha RTCore Blank no menu Modelos.
Visual Studio Code exibe uma janela de Explorador de Arquivos. Navegue até a pasta que contém sua pasta de aplicativo de alto nível e especifique um nome para seu projeto, por exemplo, NewRTApp. Visual Studio Code cria a pasta NewRTApp em seu local selecionado e gera os arquivos de build para o aplicativo em branco. Você deve ver mensagens do CMake.
Você também pode criar um novo aplicativo com capacidade em tempo real a partir de qualquer um dos exemplos do Azure Sphere com capacidade em tempo real:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie uma das pastas de aplicativo de alto nível e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewRTApp C)
Configurar seu workspace para o desenvolvimento de aplicativos parceiros
Para ingressar efetivamente no aplicativo de alto nível e no aplicativo capaz de desenvolvimento em tempo real, combine seus dois aplicativos em um único workspace multi-raiz da seguinte maneira:
Abra a pasta de aplicativo de alto nível no Visual Studio Code.
Selecione Pasta adicionar arquivo>ao workspace e selecione sua pasta de aplicativo com capacidade em tempo real.
SelecioneSalvar Espaço de Trabalho deArquivo> Como...e salve seu arquivo na pasta que contém aplicativos capazes e de alto nível em tempo real.
Abra seu arquivo de workspace em um editor de texto e adicione as seguintes informações de inicialização imediatamente após a
"settings"
linha:
"launch": {
"configurations": [{
"name": "Launch Azure Sphere Apps (All Cores)",
"type": "azurespheredbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"partnerComponents": [],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}],
"compounds": []
}
Consulte a documentação Visual Studio Code para obter mais informações sobre workspaces multi-raiz.
Criar um aplicativo de alto nível
Para criar um novo aplicativo de alto nível, comece com o modelo HLCore Blank da extensão do Visual Studio Azure Sphere e ajuste a configuração ao seu projeto seguindo estas etapas:
Inicie o Visual Studio e selecione Criar um novo projeto.
Digite
Azure Sphere
na caixa de pesquisa rotulada Pesquisar modelos. Selecione Azure Sphere HLCore Blank na lista retornada e selecione Avançar.Especifique um nome de projeto (por exemplo, NewHLApp), um local de arquivo de projeto e um nome da solução (que pode ser o mesmo que o nome do projeto) e selecione Criar. O Visual Studio cria a pasta NewHLpp em seu local selecionado e gera os arquivos de build para o aplicativo em branco. Você deve ver mensagens do CMake.
Abra o arquivo CMakeLists.txt e especifique a pasta que contém definições para o hardware que você está usando. Por padrão, o aplicativo HL Blank não contém definições de hardware. Você pode encontrar definições de hardware de exemplo no repositório Exemplos do Azure Sphere ou criar uma conforme descrito em definições de hardware.
O seguinte mostra como adicionar as definições de hardware de exemplo para o Kit de Desenvolvimento mt3620 do Seeed Azure Sphere:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Essa linha deve ser inserida antes do comando final iniciar
azsphere_target_add_image_package
.
Você também pode criar um novo aplicativo de alto nível a partir de qualquer um dos exemplos do Azure Sphere de alto nível:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie uma das pastas de aplicativo de alto nível e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewHLApp C)
Criar um RTApp
Para criar um novo aplicativo com capacidade em tempo real, comece com o modelo RTCore Blank da extensão do Visual Studio Azure Sphere e ajuste a configuração ao seu projeto seguindo estas etapas:
Inicie o Visual Studio e selecione Criar um novo projeto.
Digite
Azure Sphere
na caixa de pesquisa rotulada Pesquisar modelos. Selecione Azure Sphere RTCore Blank na lista retornada e selecione Avançar.Especifique um nome de projeto (por exemplo, NewRTApp), um local de arquivo de projeto e o nome da solução que você usou para seu aplicativo de alto nível e selecione Criar. O Visual Studio cria a pasta NewRTApp em seu local selecionado e gera os arquivos de build para o aplicativo em branco. Você deve ver mensagens do CMake.
Você também pode criar um novo aplicativo com capacidade em tempo real a partir de qualquer um dos exemplos do Azure Sphere com capacidade em tempo real:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie uma das pastas de aplicativo com capacidade em tempo real e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewRTApp C)
Criar um arquivo de inicialização do Visual Studio de nível superior
Para trabalhar com aplicativos parceiros simultaneamente, você deseja permitir que o Visual Studio depure em vários núcleos. Você pode habilitar isso criando um arquivo launch.vs.json na pasta de nível superior que contém as duas pastas de aplicativo parceiro. Este arquivo deve ter conteúdo semelhante ao seguinte:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "azurespheredbg",
"name": "Azure Sphere Apps (All Cores)",
"project": "PartnerAppsHL/CMakeLists.txt",
"DebugBuildStepBuildAll": "true",
"workingDirectory": "${workspaceRoot}",
"applicationPath": "${debugInfo.target}",
"imagePath": "${debugInfo.targetImage}",
"targetCore": "AnyCore",
"partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
}
]
}
A "project"
linha deve conter o caminho relativo para o arquivo CMakeLists.txt do aplicativo de alto nível e a "partnerComponents"
linha deve ter as IDs de componente dos dois aplicativos parceiros.
Depois de criar esse arquivo launch.vs.json de nível superior, você pode abrir o Visual Studio na pasta de nível superior e verá a opção Aplicativos do Azure Sphere (Todos os Núcleos) no menu Selecionar Item de Inicialização .
Criar um arquivo CMakeWorkspaceSettings.json
Se você estiver usando o Visual Studio 2022, versão 17.1 ou posterior e tiver um projeto com várias raízes, como o exemplo IntercoreComms, precisará adicionar um arquivo CMakeWorkspaceSettings.json à pasta de nível superior do projeto. O arquivo tem duas entradas, uma para especificar se o build do CMake está habilitado e um que contém os caminhos para as várias raízes. Por exemplo, para o exemplo IntercoreComms, o CMakeWorkspaceSettings.json tem o seguinte conteúdo:
{
"enableCMake": true,
"sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}
Os caminhos são especificados em relação à pasta que contém o arquivo CMakeWorkspaceSettings.json.
Criar um aplicativo de alto nível
Para criar um novo aplicativo de alto nível, comece com qualquer um dos exemplos do Azure Sphere de alto nível:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie uma das pastas de aplicativo de alto nível e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewHLApp C)
Criar um RTApp
A maneira mais fácil de criar um novo aplicativo com capacidade em tempo real é começar com o exemplo HelloWorld_RTApp_MT3620_BareMetal e ajustar a configuração ao seu projeto seguindo estas etapas:
Clone o repositório de exemplos se você ainda não tiver feito isso. Copie a pasta HelloWorld_RTApp_MT3620_BareMetal e renomeie-a para seu projeto.
No arquivo CMakeLists.txt, altere o nome do projeto para o nome da nova pasta. Por exemplo:
PROJECT(NewRTApp C)
Estrutura de arquivo básica de aplicativos do Azure Sphere
Não importa como você cria seu aplicativo, todos os aplicativos do Azure Sphere compartilham os seguintes arquivos principais:
- Código-fonte do aplicativo em um ou mais arquivos. Atualmente, há suporte apenas para o código-fonte do idioma C.
- Arquivos de compilação do CMake. CMakeLists.txt é necessário. O CMake, juntamente com o utilitário de build leve ninja, é usado para controlar o processo de build de aplicativo do Azure Sphere.
- Um arquivo de manifesto de aplicativo que descreve os recursos disponíveis para o aplicativo.
Aplicativos de alto nível normalmente têm pelo menos três outros arquivos:
- Um arquivo applibs-versions.h para especificar os níveis de versão de várias APIs do Azure Sphere
- Dois arquivos de definição de hardware (uma versão editável no formato JSON e uma linguagem C incluem o arquivo gerado a partir dele) que fornecem uma maneira conveniente de se referir aos componentes de hardware em seu código. Com um conjunto consistente de arquivos de definição de hardware, você pode escrever código-fonte independente de hardware e criar imagens de aplicativo para hardware específico, simplesmente redirecionando o arquivo de definição de hardware apropriado em seu arquivo CMakeLists.txt.
Aplicativos com capacidade em tempo real adicionam pelo menos um outro arquivo: um arquivo linker.ld para especificar precisamente onde vários componentes do aplicativo devem ser carregados no núcleo em tempo real.
Escreva seu código de aplicativo de alto nível
- Escreva seu código de aplicativo de alto nível usando os exemplos de aplicativo de alto nível do Azure Sphere como guias. Os tópicos a seguir descrevem cenários de implementação específicos:
- Usar periféricos em um aplicativo de alto nível
- Conectar-se aos serviços Web
- Usar wolfSSL para conexões TLS
- Gerenciar certificados
- Entender o uso de memória
- Adiar atualizações de dispositivo
- Gerenciar tempo e usar o relógio em tempo real
- Usar o armazenamento de dispositivos
- Comunicar-se com um aplicativo com capacidade em tempo real
- Gerenciar o estado do Power Down
- Definir perfis de energia
- Executar descoberta de serviço
- No arquivoCMakeLists.txt:
- Especificar revisão de ferramentas do SDK do Azure Sphere
- Especificar conjunto de API de destino
- Especificar o hardware de destino
- No arquivo app_manifest.json:
- Defina
Name
como o nome do projeto. - Adicione todas as funcionalidades específicas do aplicativo que seu código exige, como recursos de hardware ou conexões. Se o aplicativo de alto nível se comunicar com um RTApp, adicione a ID do componente do aplicativo de alto nível à
AllowedApplicationConnections
funcionalidade.
- Defina
Se você quiser implantar seu RTApp ao lado de um aplicativo parceiro de alto nível, adicione a ID do componente do parceiro ao campo partnerComponents da seção configurações do arquivo launch.vs.json (Visual Studio) ou .vscode/launch.json (Visual Studio Code) :
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Escreva seu código RTApp
- Escreva seu código RTApp usando os exemplos do RTApp do Azure Sphere como guias. Os tópicos a seguir descrevem cenários de implementação específicos:
- No arquivo app_manifest.json:
- Definir
Name
como o nome do projeto, - Definir
ApplicationType
como"RealTimeCapable"
- Adicione todas as funcionalidades específicas do aplicativo que seu código exige, como recursos de hardware ou conexões. Se o RTApp se comunicar com um aplicativo de alto nível, adicione a ID do componente do aplicativo de alto nível à
AllowedApplicationConnections
funcionalidade.
- Definir
Se você quiser implantar seu RTApp ao lado de um aplicativo parceiro de alto nível, adicione a ID do componente do parceiro ao campo partnerComponents da seção configurações do arquivo launch.vs.json (Visual Studio) ou .vscode/launch.json (Visual Studio Code) :
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]