Compartilhar via


Depure um aplicativo com capacidade para 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).

Os RTApps são depurados usando o OpenOCD, que é instalado com o SDK do Azure Sphere, e a versão do GDB instalada como parte da cadeia de ferramentas do ARM GNU Embedded.

Depurar o RTApp com o Visual Studio

  1. Verifique se seu dispositivo está conectado ao seu PC por USB. No menu Definir item de inicialização, selecione Aplicativo do Azure Sphere (RT Core), em que o Aplicativo do Azure Sphere é o nome do aplicativo atual com capacidade para tempo real, ou pressione F5.

    Botão do depurador GDB remoto

  2. Caso precise compilar o projeto, selecione Sim. O Visual Studio compila o aplicativo com capacidade em tempo real, cria um pacote de imagem, faz o sideload na placa e o 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.

    Observe a ID da imagem do pacote de imagens na saída de exibição>>Mostrar saída de: Saída de build Quando estiver pronto para criar uma implantação, você precisará saber o caminho para o pacote de imagens.

  3. Por padrão, a janela 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.

O Visual Studio configura conexões entre o servidor do GDB e OpenOCD para que você possa usar a interface de depuração padrão do Visual Studio (F5, F6, F9 para pontos de interrupção e assim por diante) em um RTApp, da mesma forma como em um aplicativo de alto nível.

Enquanto estiver parado em um ponto de interrupção no código-fonte C, você pode abrir uma janela Desmontagem que mostra o endereço atual, o mnemônico do assembler para o comando atual e informações como os registros envolvidos ou o comando do código-fonte que está sendo executado.

Para abrir a janela Desmontagem :

  1. Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto no Visual Studio.
  2. Selecione Depurar>desmontagem do Windows>ou pressione Alt+8.

Depurar o RTApp com o Visual Studio Code

O Visual Studio Code é depurado pressionando F5 ou executando o comando debug no modo de exibição de depuração na barra esquerda. Nos exemplos, o .vscode/launch.json já existe, portanto, a depuração será iniciada imediatamente. Em um novo aplicativo, a depuração primeiro perguntará se este é um HLApp ou RTApp e criará um .vscode/launch.json com base em sua resposta. A depuração então será habilitada.

Enquanto estiver parado em um ponto de interrupção no código-fonte C, você pode abrir uma exibição de desmontagem que mostra o endereço atual, os dados hexadecimais brutos, o mnemônico do assembler para o comando atual e informações como os registros envolvidos ou o comando do código-fonte que está sendo executado.

Para abrir a vista Desmontagem:

  1. Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto em um editor do Visual Studio Code.
  2. Clique com o botão direito do mouse na janela do editor e selecione Abrir vista de desmontagem ou selecione Exibir>paleta>de comandos Abrir vista de desmontagem.

Depurar RTApp usando a CLI

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

  2. Navegue até a pasta Openocd para o sysroot com o qual o aplicativo foi compilado. Neste Início Rápido, o sysroot é 5+Beta2004. 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\5+Beta2004\tools\openocd e no Linux, em /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. 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"
    
  4. Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux.

  5. Navegue até a pasta que contém o arquivo. out do aplicativo e iniciar arm-none-eabi-gdb, que faz parte da cadeia de ferramentas ARM GNU inserido:

    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
    
  6. O servidor de OpenOCD fornece uma interface de servidor do GDB em: 4444. Defina o destino para a depuração.

    target remote :4444

  7. Execute qualquer comando gdb que você escolher.

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.