Compartilhar via


Criar um aplicativo com capacidade em tempo real

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).

Você pode usar o Visual Studio, o Visual Studio Code ou a CLI (interface de linha de comando) para desenvolver e depurar aplicativos com capacidade para tempo real (RTApps) da mesma maneira como os aplicativos de alto nível.

Pré-requisitos

Habilitar desenvolvimento e depuração

Antes de criar um aplicativos 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, dispositivos do Azure Sphere são "bloqueados", ou seja, não permitem que aplicativos em desenvolvimento sejam carregados de um PC e não permitem a depuração de aplicativos. Preparar o dispositivo para a depuração remove essa restrição, carrega o software necessário para a depuração e desbloqueia os recursos do dispositivo, conforme descrito em Recursos e comunicação do dispositivo.

Para depurar nos núcleos em tempo real, use o comando azsphere 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, que não permite atualizações de aplicativos em 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.

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, caso ainda não tenha feito isso:

    azsphere 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:

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

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

Habilitar desenvolvimento e depuração

Antes de criar um aplicativos 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, dispositivos do Azure Sphere são "bloqueados", ou seja, não permitem que aplicativos em desenvolvimento sejam carregados de um PC e não permitem a depuração de aplicativos. Preparar o dispositivo para a depuração remove essa restrição, carrega o software necessário para a depuração e desbloqueia os recursos do dispositivo, conforme descrito em Recursos e comunicação do dispositivo.

Para depurar nos núcleos em tempo real, use o comando azsphere 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, que não permite atualizações de aplicativos em 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.

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, caso ainda não tenha feito isso:

    azsphere login
    
  2. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do 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:

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

Se o comando azsphere device enable-development falhar com a mensagem de erro a seguir, 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 'azsphere device show-deployment-status'.

Criar o RTApp usando o Visual Studio Code

Para compilar um RTApp:

  1. No Visual Studio Code, abra a pasta HelloWorld_RTApp_MT3620_BareMetal em seu clone do repositório de exemplos do Azure Sphere. Se você for solicitado a selecionar um kit, escolha "Não usar um kit".

  2. Pressione F5 para iniciar o depurador. Se o projeto não tiver sido compilado anteriormente ou se algum arquivo tiver sido alterado e for necessária a recompilação, o Visual Studio Code compilará o projeto antes de iniciar a depuração.

  3. O emulador de terminal conectado deve exibir a saída do aplicativo. O programa envia as seguintes palavras em intervalos de um segundo:

    Tick

    Tock

    Observação

    O Visual Studio Code fornece o IntelliSense, mas ele não será atualizado automaticamente quando você modificar CMakeLists.txt. Você precisa executar o comando CMake: Excluir Cache e Reconfigurar para atualizar o Intellisense. A exibição de destinos do CMake pode ser encontrada na exibição de extensão do CMake na barra esquerda.

Criar o RTApp usando o Visual Studio

Para compilar um RTApp:

  1. No Visual Studio, selecione Arquivo>CMake e navegue até a pasta que contém o exemplo.

  2. Se a geração de CMake não for iniciada automaticamente, selecione o arquivo CMakeLists.txt.

  3. No Visual Studio, Exibir>saída>Mostrar saída de: A saída do CMake deve mostrar as mensagens e CMake generation started.CMake generation finished.

  4. No menu CMake (se presente), selecione Compilar Tudo. Se o menu não estiver presente, abra o Gerenciador de Soluções, clique com o botão direito do mouse no arquivo CMakeLists.txt e selecione Compilar. O local de saída do aplicativo do Azure Sphere aparece na janela Saída .

  5. Pressione F5 para implantar o aplicativo.

  6. O emulador de terminal conectado deve exibir a saída do aplicativo. O programa envia as seguintes palavras em intervalos de um segundo:

    Tick

    Tock

    Observação

    • O Visual Studio fornece o Intellisense para RTApps do Azure Sphere ao coletar dados de seu cache de CMake. O Visual Studio atualiza o cache sempre que o arquivo CMakeLists.txt ou CMakeSettings no RTApp é alterado.

    • Por padrão, o Visual Studio usa o modo de exibição de pasta. Se você preferir uma exibição lógica do projeto CMake, você pode alterar para o modo de exibição de destinos do CMake. No Gerenciador de soluções, selecione o ícone de alternância de pasta:

      Alternar entre modos de exibição de solução e pasta

      No menu suspenso, selecione Exibição de destinos do CMake.

    • O aplicativo pode começar a ser executado antes que o OpenOCD estabeleça uma conexão. Como resultado, os pontos de interrupção definidos no início do código podem ser ignorados. Uma solução alternativa simples para isso é atrasar o início do aplicativo até que o OpenOCD se conecte.

      1. Insira o código a seguir no início do ponto de entrada do aplicativo RTCoreMain. Isso fará com que o aplicativo entre e permaneça em um loop while até que a variável f seja definida como true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Pressione F5 para iniciar o aplicativo com depuração e, em seguida, interrompa a execução.

      3. No painel de depuração Locais, altere o valor de f de zero para um.

      4. Execute o código em etapas como de costume.

Criar RTApp usando a CLI

As instruções a seguir pressupõem que você está usando o CMake. Se preferir criar o aplicativo na linha de comando sem usar o CMake, você poderá determinar as opções do compilador e do vinculador apropriadas examinando os arquivos AzureSphereToolchainBase.cmake e AzureSphereRTCoreToolchain.cmake, que estão instalados com o SDK do Azure Sphere.

  1. 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.

  2. 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 CMake para o HelloWorld RTApp:

    Prompt de Comando do Windows

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

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. 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.

  4. Exclua os aplicativos que já foram implantados no dispositivo:

    azsphere device sideload delete
    
  5. Implante o pacote de imagem que o Ninja criou:

    azsphere device sideload deploy --image-package <package-name>
    
  6. Obtenha a ID do componente da imagem:

    azsphere image-package show --image-package <path-to-imagepackage>
    

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

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  7. Determine em qual núcleo seu aplicativo está sendo executado.

    Por padrão, o RTApp é implantado no primeiro núcleo em tempo real disponível no dispositivo; não é possível especificar um núcleo específico no momento. Para descobrir em qual núcleo o aplicativo está sendo executado, use o comando azsphere device app para parar e reiniciar o aplicativo. Forneça a ID do componente para o aplicativo nos comandos. Por exemplo:

    azsphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    azsphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. O emulador de terminal conectado deve exibir a saída do aplicativo. O programa envia as seguintes palavras em intervalos de um segundo:

    Tick

    Tock

Saída de log de um RTApp

Cada núcleo em tempo real sobre o MT3620 tem um UART dedicado que é destinado à saída de log. Os núcleos em tempo real também podem acessar os UARTs ISU. O RDB MT3620 expõe apenas o pino TX, que você pode usar para exibir a saída de log do aplicativo. Outros dispositivos de hardware podem expor isso de forma diferente ou de nenhuma forma. Para ver a saída do log, configure o hardware para exibir a saída de log do UART dedicado, conforme descrito no quickstart. O UART dedicado não exige o requisito de manifesto de aplicativo Uart, no entanto, ele não deve ser usado para outros fins além da saída de log de um RTApp.

Desenvolver com aplicativos de parceiros

Quando você carrega um aplicativo no dispositivo do Azure Sphere, as ferramentas de implantação do Azure Sphere excluem todos os aplicativos existentes por padrão. Para evitar que isso aconteça quando você desenvolve aplicativos que se comunicam entre si, é necessário marcar os aplicativos como parceiros. Quando você implanta um dos aplicativos, seus parceiros não serão excluídos. Consulte Marcar aplicativos como parceiros para obter detalhes.

Solução de problemas

Se você encontrar problemas, confira Solução de problemas de aplicativos com funcionalidade de tempo real.

Recursos adicionais

Drivers e exemplos adicionais para RTApps direcionados aos núcleos em tempo real M4 no chip MT3620 estão disponíveis no GitHub de parceiros do Azure Sphere: