Compartilhar via


Tutorial: Criar e depurar aplicativos de parceiros

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

Este tutorial mostra como criar e depurar um projeto de exemplo que inclui um aplicativo de alto nível e um aplicativo com capacidade em tempo real, em que os dois aplicativos se comunicam entre o núcleo A7 de alto nível e o núcleo M4 em tempo real. Consulte Visão geral dos aplicativos do Azure Sphere para obter informações básicas sobre aplicativos de alto nível e aplicativos com capacidade para tempo real.

Neste tutorial, você aprenderá a:

  • Instalar o conjunto de ferramentas GNU Arm
  • Configurar o hardware para exibir a saída
  • Habilitar desenvolvimento e depuração
  • Clonar o repositório de exemplo do Azure Sphere
  • Iniciar um emulador de terminal para exibir a saída
  • Compilar, executar e depurar um par de aplicativos parceiros

Importante

Essas instruções pressupõem que você está usando o hardware que segue o hardware do RDB (design de quadro de referência) MT3620, como o Kit de Desenvolvimento MT3620 da Seeed Studios. Se você estiver usando um hardware Azure Sphere diferente, consulte a documentação do fabricante para descobrir se o UART está exposto e como acessá-lo. Talvez você precise configurar o hardware para exibir a saída de outra maneira e atualizar o código de exemplo e o campo "Uarts" do arquivo app_manifest.json para usar um UART diferente.

Pré-requisitos

Instalar o GNU Arm Embedded Toolchain

  • Visual Studio 2022: se você estiver usando o Visual Studio 2022, instale o GNU Arm Embedded Toolchain (arm-none-eabi) no site do desenvolvedor do Arm.
  • Visual Studio 2019: a cadeia de ferramentas é instalada automaticamente com a Extensão do Azure Sphere para Visual Studio no Visual Studio 2019. Se você estiver usando o Visual Studio 2019, prossiga para Configurar o hardware para exibir a saída. No entanto, se você instalou o GNU Arm Embedded Toolchain manualmente, o Visual Studio usará a versão instalada.

Para instalar o conjunto de ferramentas, no site do desenvolvedor do Arm, localize o GNU Arm Embedded Toolchain (arm-none-eabi) que inclui o compilador para o processador ARM Cortex-M4. Siga as instruções para baixar e instalar o compilador para sua plataforma de sistema operacional.

Por padrão, o Visual Studio Code pesquisa a cadeia de ferramentas e deve encontrar a versão que você instalou. Se você encontrar problemas de build relacionados à cadeia de ferramentas, verifique Preferências>, Configurações>, Extensões>AzureSphere para garantir que "Azure Sphere: Arm Gnu Path" identifique o diretório de instalação da cadeia de ferramentas GNU Arm Embedded.

Configurar o hardware para exibir a saída

No momento, cada núcleo em tempo real oferece suporte a um UART somente TX. O RTApps pode usar essa UART para enviar a saída de log do dispositivo. Durante o desenvolvimento e a depuração de aplicativos, normalmente você precisa de uma maneira de ler e exibir a saída. A amostra HelloWorld_RTApp_MT3620_BareMetal apresenta como um aplicativo pode gravar no UART.

Use um adaptador de USB para serial como o FTDI Friend para conectar o UART no núcleo em tempo real a uma porta USB em seu computador. Você também precisará de um emulador de terminal para estabelecer uma conexão serial com configurações de terminal 115200-8-N-1 (115200 bps, 8 bits, sem bits de paridade, um bit de parada) para exibir a saída.

Para configurar o hardware para exibir a saída de um RTApp, siga estas etapas. Você precisará consultar a documentação do fabricante do hardware para determinar a localização dos pinos. Se você estiver usando um hardware que segue o RDB (Design de placa de referência) MT3620, como o Kit de desenvolvimento de MT3620 da Seeed Studio, consultar os cabeçalhos da interface de RDB pode ajudar a determinar os locais dos pinos.

  1. Conecte o GND no adaptador USB para serial ao GND no kit de desenvolvimento. Em hardware com RDB MT3620, o GND é o Cabeçalho 3, pino 2.

  2. Conecte o RX no adaptador USB para serial ao TX IOM4-0 no kit de desenvolvimento. Em hardware com RDB MT3620, o TX IOM4-0 é o Cabeçalho 3, pino 6.

  3. Conecte o adaptador USB para serial a uma porta USB livre em seu computador de desenvolvimento e determine a qual porta o dispositivo serial está conectado.

    • No Windows, inicie o Gerenciador de dispositivos, selecione Exibir>dispositivos por contêiner e procure por 'USB UART'. Por exemplo, FT232R USB UART indica o adaptador FTDI Friend.

    • No Linux, digite o seguinte comando:

      dmesg | grep ttyUSB
      

      A porta deve ter o nome ttyUSBn, em que n indica o número da porta. Se o dmesg comando listar várias portas USB, aquela que está conectada à normalmente é a última relatada como anexada. Por exemplo, no seguinte, você usaria ttyUSB4:

    ~$ dmesg | grep ttyUSB
    [  144.564350] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB0
    [  144.564768] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB1
    [  144.565118] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2
    [  144.565593] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB3
    [  144.570429] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB4
    [  254.171871] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
    
  4. Inicie um programa emulador de terminal e abra um terminal 115200-8-N-1 para a porta COM usada pelo adaptador. Consulte a documentação do emulador de terminal para descobrir como especificar a porta e a velocidade.

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.

Baixar o aplicativo de exemplo

Você pode baixar os aplicativos InterCore Communications da seguinte forma:

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

Compilar e executar os aplicativos de parceiros

  1. Inicie o Visual Studio. Selecione Abrir uma pasta local e navegue até a pasta onde você extraiu os aplicativos IntercoreComms.

    Importante

    Se você estiver usando o Visual Studio 2022 versão 17.1 ou posterior e tiver extraído o exemplo de IntercoreComms antes da versão 22.02 do Azure Sphere, deverá adicionar um arquivo CMakeWorkspaceSettings.json à pasta do projeto de nível superior.

  2. Se você não estiver usando um RDB MT3620, atualize os arquivos de app_manifest.json para ambos os aplicativos e o arquivo de definição de hardware e CMakeLists.txt arquivo para o aplicativo de alto nível para corresponder ao seu hardware.

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

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

  5. Selecione Compilar>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 dos aplicativos RT IntercoreComms_HL & IntercoreComms aparece na janela Saída .

  6. Selecione Selecionar item>de inicialização IntercoreComms (todos os núcleos).

  7. Selecione Depurar>Depuração ou pressione F5 para implantar e depurar os aplicativos.

  8. Na janela Saída, selecione a saída no menu, selecione Saída do dispositivo. A janela Saída deve mostrar a saída do aplicativo de alto nível:

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  9. O emulador de terminal conectado deve exibir a saída do programa com capacidade em tempo real:

    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
    Text: hl-app-to-rt-app-00
    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:31
    Text: hl-app-to-rt-app-01
    
  10. Use o depurador para definir pontos de interrupção e inspecionar variáveis e experimente outras tarefas de depuração.

  1. No Visual Studio Code, abra a pasta em que você extraiu os aplicativos IntercoreComms. O Visual Studio Code detecta o arquivo intercore.code-workspace e pergunta se você deseja abrir o workspace. Selecione Abrir espaço de trabalho para abrir o aplicativo em tempo real e o aplicativo de alto nível de uma só vez.

  2. Se você não estiver usando um RDB MT3620, atualize os arquivos de app_manifest.json para ambos os aplicativos e o arquivo de definição de hardware e CMakeLists.txt arquivo para o aplicativo de alto nível para corresponder ao seu hardware.

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

  4. A janela de saída do Azure Sphere deve mostrar a mensagem "Implantando imagem..." seguida pelos caminhos para o SDK e o compilador.

  5. A janela de saída deve mostrar a saída do aplicativo de alto nível:

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  6. O emulador de terminal conectado deve exibir a saída do programa com capacidade em tempo real:

    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
    Text: hl-app-to-rt-app-00
    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:31
    Text: hl-app-to-rt-app-01
    
  7. Use os recursos de depuração do Visual Studio Code para definir pontos de interrupção, inspecionar variáveis e experimentar outras tarefas de depuração.

Solução de problemas

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.

    static _Noreturn void RTCoreMain(void)
    {
      .
      .
      .
     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. Percorra o código como de costume.

Ao criar com a CLI, você primeiro cria e implanta o aplicativo com capacidade em tempo real e, em seguida, cria e implanta o aplicativo de alto nível.

Crie e implante o aplicativo com capacidade de tempo real

  1. Navegue até a pasta onde você extraiu os aplicativos IntercoreComms e selecione a pasta IntercoreComms/IntercoreComms_RTApp_MT3620_BareMetal.

  2. Abra o arquivo app_manifest.json e verifique se a ID do componente do aplicativo de alto nível é mostrada na funcionalidade AllowedApplicationConnections.

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

  4. 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 RTApp IntercoreComms:

    Prompt de Comando 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, no prompt de comando, 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.

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

    azsphere device sideload delete
    
  7. No diretório de compilação do projeto, no prompt de comando, carregue o pacote de imagens que o ninja criou:

    azsphere device sideload deploy --image-package <path-to-imagepackage>
    

    O aplicativo começará a ser executado logo após ser carregado.

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

Compilar e implantar o aplicativo de alto nível

  1. Navegue até a pasta onde você extraiu os aplicativos IntercoreComms e selecione a pasta IntercoreComms/IntercoreComms_HighLevelApp.

  2. Abra o arquivo app_manifest.json e verifique se o ID do componente do RTApp é mostrado no recurso AllowedApplicationConnections.

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

  4. 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 IntercoreComms.

    Prompt de Comando 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, no prompt de comando, 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.

  6. No diretório de compilação do projeto, no prompt de comando, carregue o pacote de imagens que o ninja criou:

    azsphere device sideload deploy --image-package <package-name>
    

    O aplicativo começará a ser executado logo após ser carregado.

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

Executar os aplicativos parceiros com a depuração habilitada

  1. Pare o aplicativo em tempo real se ele estiver em execução.

    azsphere device app stop --component-id <component id>
    
  2. Reinicie o aplicativo para depuração.

    azsphere device app start --component-id <component id>
    

    Este comando retorna o núcleo no qual o aplicativo está em execução.

      <component id>
      App state: running
      Core        : Real-time 0
    
  3. Navegue até a pasta Openocd para o sysroot com o qual o aplicativo foi compilado. Os sysroots são instalados na pasta de instalação do SDK do Azure Sphere. Por exemplo, no Windows, a pasta é instalada por padrão em C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd e no Linux, em /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Execute openocd como mostra o exemplo a seguir. O exemplo pressupõe que o aplicativo está em execução no núcleo 0. Se o aplicativo estiver em execução no núcleo 1, substitua "targets io0" por "targets io1".

       openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Abra um novo prompt de comando do Azure Sphere (CLI clássica do Windows Azure Sphere), prompt de comando padrão ou PowerShell (CLI do Windows Azure Sphere) ou janela de terminal (Linux).

  6. Navegue até a pasta que contém o arquivo .out do aplicativo compatível em tempo real e inicie arm-none-eabi-gdbo , que faz parte do GNU Arm Embedded Toolchain:

    Prompt de Comando do Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

     & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  7. O servidor de OpenOCD fornece uma interface de servidor do GDB em: 4444. Defina o destino para a depuração.

    target remote :4444

  8. Agora você pode executar comandos gdb para o aplicativo com capacidade de tempo real. Adicione um ponto de interrupção na função HandleSendTimerDeferred:

    break HandleSendTimerDeferred
    
  9. O emulador de terminal conectado deve exibir a saída do aplicativo com capacidade em tempo real.

  10. Abra um novo prompt de comando do Azure Sphere (CLI clássica do Windows Azure Sphere), prompt de comando padrão ou PowerShell (CLI do Windows Azure Sphere) ou janela de terminal (Linux).

  11. Navegue até a pasta que contém o arquivo .imagepackage do aplicativo de alto nível.

  12. Pare o aplicativo de alto nível se ele estiver em execução.

    azsphere device app stop --component-id <component id>
    
  13. Reinicie o aplicativo de alto nível com depuração.

    azsphere device app start --component-id <component id> --debug-mode
    
  14. Abra um emulador de terminal e estabeleça uma conexão Telnet ou TCP com 192.168.35.2 na porta 2342 para exibir a saída do aplicativo de alto nível.

  15. Inicie o gdb com o seguinte comando:

    Prompt de Comando do Windows

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

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_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.

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

  17. Adicione um ponto de interrupção na função SendMessageToRTApp:

    break SendMessageToRTApp

  18. Digite c para continuar, observe a saída em seu terminal Telnet/TCP e, em seguida, alterne para o prompt de comando ou janela de terminal que contém sua sessão de depuração de aplicativos em tempo real.

  19. Digite c para continuar e observar a saída em sua sessão serial conectada.

Você pode trabalhar entre as sessões de depuração, alternando entre o aplicativo com capacidade para tempo real e o aplicativo de alto nível. Você deve ver uma saída semelhante à seguinte nas duas janelas de saída:

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

Para encerrar cada sessão de depuração, digite q no prompt gdb.

Próximas etapas