Índice:

Como usar um depurador em um ESP32: 11 etapas (com imagens)
Como usar um depurador em um ESP32: 11 etapas (com imagens)

Vídeo: Como usar um depurador em um ESP32: 11 etapas (com imagens)

Vídeo: Como usar um depurador em um ESP32: 11 etapas (com imagens)
Vídeo: #381 How to work with a Real Time Operating System and is it any good? (FreeRTOS, ESP32) 2024, Novembro
Anonim
Como usar um depurador em um ESP32
Como usar um depurador em um ESP32

Você já quis dar uma espiada no seu código para ver por que ele está se comportando dessa maneira? Tradicionalmente, em projetos ESP32, você teria que adicionar uma instrução de impressão infinita para tentar descobrir o que estava acontecendo, mas há uma maneira melhor!

Um depurador é uma maneira de ver o que está acontecendo em seções específicas de seu código e de experimentar diferentes valores de variáveis sem recompilar seu código, geralmente isso não é algo disponível para nós em projetos incorporados, mas neste guia irei mostrar a você como usá-lo em um ESP32.

Neste guia, mostrarei como configurar o hardware, o software e um exemplo simples de uso do depurador.

Suprimentos

  • ESP-Prog - Esta é a placa necessária para depuração

    • Exatamente um que comprei *
    • US $ 5 mais barato, mas não testei *
  • Um ESP32 que quebra os pinos 12, 13, 14, 15

    • Adafruit Feather Huzzah32
    • D1 Mini ESP32 *
  • [OPCIONAL] Debug Shield que vendo no Tindie

    • Pena Huzzah32
    • D1 Mini ESP32

* = Link de afiliado

Etapa 1: Confira o vídeo

Image
Image

Eu tenho um vídeo sobre esse assunto, se você quiser dar uma olhada.

No meu canal eu costumo fazer vídeos baseados em ESP8266 e ESP32, então se você estiver interessado neles, dê uma olhada!

Etapa 2: Hardware - Peças e Fiação

Hardware - peças e fiação
Hardware - peças e fiação
Hardware - peças e fiação
Hardware - peças e fiação
Hardware - peças e fiação
Hardware - peças e fiação

Para usar o depurador, você só precisa de um ESP-Prog e quase qualquer placa ESP32 (links para estes em uma etapa anterior)

ESP-Prog:

O ESP-Prog é uma placa desenhada pela espressif, os fabricantes dos chips ESP32 e ESP8266. Ele se conecta aos pinos JTAG do ESP32 para nos permitir usar o depurador. Ele também pode ser usado para programar placas ESP32, mas não vou cobrir isso aqui.

Placa ESP32:

Você pode usar basicamente qualquer placa ESP32 para isso, uma vez que ele solte os pinos JTAG, que são 12, 13, 14 e 15. Eu testei uma placa de pena Adafruit Huzzah32 e uma placa D1 Mini 32 e ambas funcionaram bem.

Observe que você pode usar os pinos JTAG em seu esboço com o depurador, por exemplo, o LED embutido da placa Huzzah32 está no pino 13, portanto, você não pode usá-lo durante a depuração.

Fiação:

Para conectar o ESP-Prog ao ESP32, basta usar o guia de fiação conforme fornecido na imagem acima. Verifique com o diagrama de fiação de sua placa ESP32 se você não vir imediatamente os pinos apropriados, pois às vezes eles usam um esquema de nomenclatura diferente.

Debug Shields:

Eles são opcionais, mas eu vendo alguns shields em Tindie para o Huzzah32 e o D1 Mini 32 que tornam a conexão do ESP-Prog realmente simples, ele quebra os pinos apropriados para um conector IDC que você pode usar um cabo de fita para conectar diretamente entre o escudo e o ESP-Prog

Etapa 3: Hardware - Configuração do driver

Hardware - configuração do driver
Hardware - configuração do driver
Hardware - configuração do driver
Hardware - configuração do driver
Hardware - configuração do driver
Hardware - configuração do driver

Para usar o ESP-prog para depuração, precisamos instalar os drivers apropriados para ele. PlatformIO fornece algumas etapas para isso aqui, mas irei seguir as etapas do Windows neste guia.

  1. Baixe e instale os drivers FTDI para o ESP-Prog aqui, vá para a direita para baixar a versão "setup executável" para facilitar.
  2. Baixe e instale a ferramenta Zadig aqui, isso nos permite instalar um driver genérico necessário para a depuração.
  3. Com o ESP-Prog conectado, abra o Zadig
  4. No aplicativo Zadig, em "Opções", clique em "Listar todos os dispositivos"
  5. A lista suspensa no Zadig agora será preenchida, selecione a opção "Dual RS232-HS (Interface 0)". Certifique-se de que é a interface 0 que você selecionou!
  6. À direita da seta verde, "WinUSB" deve ser selecionado e, a seguir, clique em "Substituir driver"

Quando terminar, seus drivers devem ser configurados para uso!

Nota: Se você alterar a porta USB que está usando para o ESP-Prog, pode ser necessário repetir as etapas 3-6 novamente. Se você obtiver um erro conforme mostrado na imagem acima durante a depuração, será necessário repetir as etapas.

Etapa 4: Software: Instalando PlatformIO

Software: Instalando PlatformIO
Software: Instalando PlatformIO
Software: Instalando PlatformIO
Software: Instalando PlatformIO
Software: Instalando PlatformIO
Software: Instalando PlatformIO

PlatformIO é um IDE para desenvolvimento com várias estruturas embarcadas diferentes, incluindo o ecossistema Arduino. É mais complicado de usar do que algo como o IDE do Arduino, mas é muito poderoso e possui alguns recursos que o IDE do Arduino sente falta, como o preenchimento automático.

É necessário que o PlatformIO use o depurador. Se você já estiver familiarizado com PlatformIO, fique à vontade para pular algumas etapas.

  • Baixe e instale o Visual Studio Code (VS Code) do link fornecido no site PlatformIO.org
  • Abra o VS Code, e abra o menu de extensões, o botão é destacado na imagem acima
  • Digite "platformio" na pesquisa, selecione-o e clique em instalar.

Etapa 5: Software: Usando PlatformIO

Software: Usando PlatformIO
Software: Usando PlatformIO
Software: Usando PlatformIO
Software: Usando PlatformIO
Software: Usando PlatformIO
Software: Usando PlatformIO

Usar PlatformIO é um pouco diferente do que usar Arudino IDE, portanto, nesta etapa, cobriremos apenas o básico para obter um exemplo em execução em uma placa.

Abrindo um exemplo:

  1. Clique no botão Home na barra de ferramentas PlatformIO (conforme mostrado na imagem)
  2. Clique no botão "Exemplos de projeto"
  3. Selecione o exemplo "Arduino-blink" na seção Espressif 32

Isso abrirá um projeto de amostra de piscar. O layout de um PlatformIO é bem diferente em comparação com um projeto Arduino, então vamos passar pelo básico.

Onde está o código?

O código do seu projeto será armazenado na pasta "src", para o exemplo blink você verá um arquivo "blink.cpp", este arquivo é o mesmo que seu arquivo de esboço (.ino) em um projeto Arduino.

Como configuro minha placa?

As configurações do seu projeto são mantidas dentro de um arquivo "platformio.ini" no seu projeto. Esta é realmente uma das minhas coisas favoritas sobre PlatformIO em comparação com o IDE do Arduino, nunca fez sentido para mim que as configurações da placa não estivessem vinculadas a esboços.

O exemplo.ini contém definições para várias placas diferentes, mas para manter as coisas simples, vamos deletar as duas últimas definições.

Onde eu defino minha porta COM?

O PlatformIO tentará encontrar automaticamente a porta COM correta para usar, de modo que você pode se safar sem configurar nada para isso. Mas se você tiver várias portas COM, que você terá ao usar o depurador, acho que faz sentido definir a porta específica de que você precisa. Você pode ver os diferentes dispositivos que possui clicando na seção "Dispositivos" na guia inicial e você pode definir qual é o seu ESP32 em "platformio.ini" adicionando uma configuração "upload_port".

Como faço o upload do meu código?

Clique no botão Upload (o ícone é uma seta apontando para a direita) e ele deve compilar e fazer upload do código. Agora você deve ter um LED piscando em sua placa.

Etapa 6: Depuração: potencial casca de banana

Depuração: Potencial Pele de Banana!
Depuração: Potencial Pele de Banana!
Depuração: Potencial Pele de Banana!
Depuração: Potencial Pele de Banana!
Depuração: Potencial Pele de Banana!
Depuração: Potencial Pele de Banana!

Isso é algo que me chamou a atenção quando eu estava preparando isso e espero que seja corrigido quando você tentar, mas achei importante sair daqui.

No momento de fazer este guia, a versão mais recente do PlatformIO é 4.3.0 e tem um bug relacionado à capacidade de depurar. Felizmente, podemos atualizar para a versão de desenvolvimento mais recente com bastante facilidade, o que resolve o problema.

Verifique na página inicial a versão do núcleo PlatformIO, se for "4.3.0", execute as seguintes etapas.

  1. Na barra de ferramentas PlatformIO, clique no ícone do terminal
  2. No tipo de terminal: pio upgrade --dev
  3. O código RestartVS e PlatfromIO devem ser atualizados

Etapa 7: Depuração: Configuração

Depuração: Configuração
Depuração: Configuração

Precisamos editar o arquivo "PlatofrmIO.ini" para habilitar a depuração, só precisamos adicionar duas coisas a ele.

debug_tool = esp-prog

Isso define a ferramenta de depuração que estamos usando.

debug_init_break = configuração tbreak

Este é um truque que aprendemos no vídeo de Andress Spiess sobre depuração no ESP32. Diz ao depurador para parar na configuração do nosso aplicativo.

Etapa 8: Depuração: Iniciando a depuração

Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração
Depuração: Iniciando a Depuração

Antes de entrarmos nisso, faremos uma pequena alteração no esboço que tornará mais fácil demonstrar o que você pode fazer com a depuração.

  1. Crie uma nova variável, "int delayTime = 1000;" fora de quaisquer métodos, isso o tornará uma variável global.
  2. Substitua o número dentro das chamadas de atraso no loop por esta nova variável: delay (delayTime);

Faça upload do código mais uma vez no quadro e, para iniciar a depuração, na barra de ferramentas, clique em "Executar" e em "Iniciar depuração"

Você verá as coisas se movendo na janela do terminal, mas mesmo quando isso indica que foi bem-sucedido, se você clicar em "Console de depuração", verá que ainda está funcionando, demorará alguns segundos para terminar.

Se tudo correr conforme o esperado, você verá o depurador parar no início da configuração.

Etapa 9: Depuração: uso básico

Depuração: uso básico
Depuração: uso básico
Depuração: Uso Básico
Depuração: Uso Básico
Depuração: Uso Básico
Depuração: Uso Básico
Depuração: Uso Básico
Depuração: Uso Básico

Vamos cobrir alguns dos princípios básicos do que você pode fazer com o depurador

Criação de pontos de interrupção:

Um ponto de interrupção é um ponto de seu código onde você deseja que o depurador pare. Para criar um ponto de interrupção, clique à esquerda do número da linha. Como demonstração, adicione o ponto de interrupção à primeira linha do método de loop.

Navegação no ponto de interrupção:

Para mover entre o ponto de interrupção ou mover para a próxima linha de código, você pode usar as ferramentas que aparecerão na parte superior da tela. Pressione o botão "continuar" (parece um botão de reprodução) para mover o ponto de interrupção que acabamos de criar dentro do loop.

Relógios variáveis:

Observações de variáveis permitem monitorar o valor das variáveis quando o depurador é interrompido em um ponto de interrupção. Para adicionar uma nova observação de variável, você pode clicar no ícone + e, em seguida, digitar o nome da variável. Como uma demonstração, digite a variável que adicionamos na etapa anterior "delayTime"

Visualizador de variável:

Você também pode ver todas as variáveis e seus valores que estão disponíveis em seu ponto de interrupção atual. Para demonstrar isso, se você olhar na seção "Global", deverá encontrar a variável "delayTime".

Editando o valor das variáveis:

Você também pode editar os valores das variáveis e isso terá efeito imediato no comportamento dos seus códigos. Para demonstrar isso, clique na variável delayTime na seção Visualizador de variáveis e altere o valor para "100". Para mostrar que isso está funcionando, desative o ponto de interrupção dentro do loop clicando novamente à esquerda do número da linha. Pressione o botão continuar na barra de navegação do ponto de interrupção. O LED em seu ESP32 agora deve estar piscando muito mais rápido do que antes.

Etapa 10: Solução de problemas

Solução de problemas
Solução de problemas

Descobri durante meu teste que algumas vezes não conseguia fazer upload para o ESP32 enquanto ele estava conectado ao ESP-prog e não conseguia descobrir um padrão de por que isso acontecia, porque na maioria das vezes eu conseguia fazer upload sem Quaisquer problemas. Descobri que poderia simplesmente desconectar o ESP32 e o ESP-Prog, fazer o upload do código para o ESP32 e reconectá-los e funcionaria bem.

Etapa 11: Conclusão

Eu acho que esta é uma ferramenta muito legal para adicionar à caixa de ferramentas para ajudar a descobrir o que está acontecendo dentro do seu projeto.

Eu adoraria saber se você acha isso útil !. Por favor, deixe-me saber nos comentários abaixo, ou junte-se a mim e a um monte de outros criadores no meu servidor Discord, onde podemos discutir este tópico ou qualquer outro relacionado ao criador que você tenha. As pessoas são realmente úteis lá, então é um ótimo lugar para conversar Fora.

Eu também gostaria de agradecer muito aos meus patrocinadores do Github que ajudam a apoiar o que eu faço. Eu realmente aprecio isso. Se você não sabe, o Github está combinando patrocínios para o primeiro ano, então, se você fizer um patrocínio, eles irão combiná-lo 100% nos próximos meses. Obrigado por ler!

Recomendado: