Depurar um aplicativo com capacidade em tempo real

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

Depurar o RTApp com o Visual Studio

  1. Verifique se o dispositivo está conectado ao computador 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 compatível em tempo real atual ou pressione F5.

    Botão Depurador de GDB remoto

  2. Se você for solicitado a criar o projeto, selecione Sim. O Visual Studio compila o aplicativo com capacidade em tempo real, cria um pacote de imagem, o carrega de lado no quadro e inicia-o no modo de depuração. Sideloading significa que o aplicativo é entregue diretamente do computador por meio de uma conexão com fio, em vez de entregue pela nuvem.

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

  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 mostrar saída de: menu suspenso. Você também pode inspecionar a desmontagem do programa, registros ou memória por meio do menu Depurar>Windows .

O Visual Studio configura conexões entre o servidor GDB e o 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 que 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 Desmontar que mostra o endereço atual, o mnemônico da montadora para o comando atual e informações como os registros envolvidos ou o comando de código-fonte que está sendo executado.

Para abrir a janela Desmontar :

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

Depurar RTApp com Visual Studio Code

Visual Studio Code é depurado pressionando F5 ou executando o comando de depuração da 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 isso é um HLApp ou RTApp e criará um .vscode/launch.json a partir de sua resposta. Em seguida, a depuraçã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, dados hex brutos, o mnemônico da montadora para o comando atual e informações como os registros envolvidos ou o comando de código-fonte sendo executado.

Para abrir a exibição Desmontar:

  1. Verifique se o arquivo de código-fonte C que contém o ponto de interrupção está aberto em um editor de Visual Studio Code.
  2. Clique com o botão direito do mouse na janela do editor e selecione Abrir Exibição desmontada ou selecione Exibir> Exibiçãode Desmontagem Abertada Paleta> de Comandos.

Depurar RTApp usando a CLI

  1. Inicie o aplicativo para depuração:

    az sphere device app start --component-id <component id>
    

    Esse 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 criado. 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 esteja sendo executado 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 inicie arm-none-eabi-gdb, que faz parte do Arm GNU 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
    
  6. O servidor OpenOCD fornece uma interface do servidor GDB em :4444. Defina o destino para depuração.

    target remote :4444

  7. Execute todos os comandos gdb escolhidos.

Desenvolver com aplicativos parceiros

Quando você carrega um aplicativo no dispositivo do Azure Sphere, as ferramentas de implantação do Azure Sphere, por padrão, excluem todos os aplicativos existentes. Para evitar que isso aconteça quando você desenvolve aplicativos que se comunicam entre si, você precisa 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.

Solucionando problemas

Se você encontrar problemas, consulte Solucionar problemas de aplicativos com capacidade em tempo real.