Depurar uma aplicação com capacidade em tempo real

As RTApps são depuradas com o OpenOCD, que é instalado com o SDK do Azure Sphere e a versão do GDB que é instalada como parte da Cadeia de Ferramentas Incorporada do ARM GNU.

Depurar o RTApp com o Visual Studio

  1. Certifique-se de que o dispositivo está ligado ao PC por USB. No menu Definir item de arranque , selecione Aplicação do Azure Sphere (RT Core), em que Aplicação do Azure Sphere é o nome da sua aplicação atual com capacidade em tempo real ou prima F5.

    Botão Depurador de GDB Remoto

  2. Se lhe for pedido para criar o projeto, selecione Sim. O Visual Studio compila a aplicação com capacidade em tempo real, cria um pacote de imagem, faz sideloads no quadro e inicia-o no modo de depuração. O sideload significa que a aplicação é fornecida diretamente a partir do PC através de uma ligação com fios, em vez de ser fornecida através da cloud.

    Tenha em atenção o ID da imagem do pacote de imagem na saída Ver>Apresentação deSaída> de: Resultado da compilação Quando estiver pronto para criar uma implementação, terá de saber o caminho para o pacote de imagem.

  3. Por predefinição , a janela Saída mostra o resultado da Saída do Dispositivo. Para ver mensagens do depurador, selecione Depurar no menu pendente Mostrar saída de: . Também pode inspecionar a desmontagem, registos ou memória do programa através do menu Depurar>o Windows .

O Visual Studio configura ligações entre o servidor GDB e o OpenOCD para que possa utilizar a interface de depuração padrão do Visual Studio (F5, F6, F9 para pontos de interrupção e assim sucessivamente) numa RTApp, da mesma forma que numa aplicação de alto nível.

Enquanto está parado num ponto de interrupção no código fonte C, pode abrir uma janela Desmontar que mostra o endereço atual, o assembler mnemonic para o comando atual e informações como os registos envolvidos ou o comando de código fonte a ser executado.

Para abrir a janela Desmontar :

  1. Certifique-se de que o ficheiro de origem do código C que contém o ponto de interrupção está aberto no Visual Studio.
  2. Selecione Depurar>o Windows>Desmontar ou prima Alt+8.

Depurar o RTApp com o Visual Studio Code

O Visual Studio Code é depurado ao premir F5 ou ao executar o comando de depuração a partir da vista de depuração na barra esquerda. Nos exemplos, o .vscode/launch.json já existe, pelo que a depuração será iniciada imediatamente. Numa nova aplicação, a depuração perguntará primeiro se se trata de um HLApp ou RTApp e criará um .vscode/launch.json a partir da sua resposta. A depuração será ativada.

Enquanto está parado num ponto de interrupção no código fonte C, pode abrir uma vista Desmontagem que mostra o endereço atual, os dados hexadecimais não processados, o assembler mnemonic para o comando atual e informações como os registos envolvidos ou o comando de código fonte a ser executado.

Para abrir a vista Desmontar:

  1. Certifique-se de que o ficheiro de origem do código C que contém o ponto de interrupção está aberto num editor do Visual Studio Code.
  2. Clique com o botão direito do rato na janela do editor e selecione Abrir Vista Desmontada ou selecione Ver> Paleta > deComandosAbrir Vista Desmontada.

Depurar o RTApp com a CLI

  1. Inicie a aplicação para depuração:

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

    Este comando devolve o núcleo no qual a aplicação está em execução.

  2. Navegue para a pasta Openocd para obter o sysroot com o qual a aplicação foi criada. 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 predefiniçã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 seguinte exemplo. O exemplo pressupõe que a aplicação está em execução no núcleo 0. Se a aplicação 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 comandos com o PowerShell, a Linha de Comandos do Windows ou a shell de comandos do Linux.

  5. Navegue para a pasta que contém o ficheiro .out da aplicação e inicie arm-none-eabi-gdb, que faz parte da Cadeia de Ferramentas Incorporada do ARM GNU:

    Linha de Comandos 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 de servidor GDB em :4444. Defina o destino para depuração.

    target remote :4444

  7. Execute os comandos gdb que escolher.

Desenvolver com aplicações de parceiros

Quando carrega uma aplicação para o dispositivo do Azure Sphere, as ferramentas de implementação do Azure Sphere eliminam todas as aplicações existentes por predefinição. Para impedir que isto aconteça quando desenvolve aplicações que comunicam entre si, tem de marcar as aplicações como parceiros. Quando implementa uma das aplicações, os respetivos parceiros não serão eliminados. Veja Marcar aplicações como parceiros para obter detalhes.

Resolução de problemas

Se tiver problemas, veja Resolução de problemas de aplicações com capacidade em tempo real.