Índice:

ESP32 - Solução barata para depuração em Circruit: 5 etapas
ESP32 - Solução barata para depuração em Circruit: 5 etapas

Vídeo: ESP32 - Solução barata para depuração em Circruit: 5 etapas

Vídeo: ESP32 - Solução barata para depuração em Circruit: 5 etapas
Vídeo: ESP32 - FILESYSTEMS with ESP-IDF // How to use Files and Folders 2024, Novembro
Anonim
ESP32 - Solução Barata para Debug em Circruit
ESP32 - Solução Barata para Debug em Circruit

Olá, Neste instrutível é descrito como configurar um adaptador JTAG barato baseado no chip FTDI 2232HL, com código visual e addon arduino.

- Módulo FTDI 2232HL com conector USB a partir de 8 $ no ebay e nenhum software pago é necessário. Esta é uma ótima solução para amadores que não querem gastar 50 $ + no adaptador JTAG profissional.

- Este adaptador pode ser usado para depuração de outras plataformas como ESP8266, ARM, AVR e muitos outros. Algumas configurações dependem da plataforma de destino, esta instrução cobre apenas a configuração para ESP32.

- Se você já possui algum adaptador JTAG, pode usá-lo quando for suportado pelo openOCD, basta iniciar o openocd com um arquivo de configuração diferente com base no tipo de seu adaptador jtag.

- platform.io pode tornar a configuração mais fácil para você, mas a depuração é suportada apenas na versão profissional paga.

- Funciona com a maioria dos módulos ESP32. (por exemplo, wemos baratos lolin 32)

- este adaptador jtag deve funcionar com o Linux também, mas eu pessoalmente não o testei.

Etapa 1: requisitos de software

Arduino IDE versão 1.8 ou mais recente. A versão da loja do Windows não é compatível. Você deve usar a versão do instalador clássico, que pode ser baixada da página oficial do Arduino

Código do Microsoft Visual Studio

Esses complementos para o código do Visual Studio são obrigatórios

  • Arduino
  • Depuração nativa

Também recomendo instalar este addon que permite intelisense para C / C ++

C / C ++

Neste manual, usarei 2 pastas de trabalho:

D: / devel / ESP32 / tools / - aqui coloquei todas as ferramentas

C: / Users / xxxxx / Documents / Arduino / YourProject / - esta é a pasta com esboço

você pode colocar seus arquivos em qualquer outro lugar se desejar, mas não se esqueça de atualizar todas as referências com seu caminho atual.

Etapa 2: Instalação e configuração do driver

Instalação e configuração do driver
Instalação e configuração do driver
Instalação e configuração do driver
Instalação e configuração do driver
Instalação e configuração do driver
Instalação e configuração do driver

Mesmo que o Windows detecte automaticamente o FT2232 por padrão, os drivers padrão do Windows não são suficientes para todos os recursos avançados e é necessário baixar e instalar o driver do site da FTDI

Quando o driver correto é instalado, você deve ver seu módulo FT2232 no gerenciador de dispositivos não apenas como 2 portas seriais, mas também como "conversor serial USB A" e "conversor serial USB B"

O segundo passo é mudar o driver de um canal de nosso conversor. Baixe a ferramenta zadig em https://zadig.akeo.ie/. Se bem entendi esta ferramenta vincule o driver winUSB ao dispositivo FTDI que permite a comunicação de baixo nível entre o openOCD e o dispositivo USB.

Na ferramenta zadig, no menu "Opções" marque "Mostrar todos os dispositivos", então você deverá ver o seu adaptador na lista de dispositivos disponíveis. Selecione "Dual RS232-HS (Interface 0)" e, em seguida, selecione o driver de substituição "WinUSB v6.1.xxxx" e, por fim, clique no botão substituir driver.

Quando você conecta seu adaptador a uma porta USB diferente de seu computador, é necessário alterar as configurações do driver por meio da ferramenta zadig novamente, caso contrário o openOCD não encontrará seu adaptador.

Etapa 3: OpenOCD, Toolchain e Gdb

OpenOCD, Toolchain e Gdb
OpenOCD, Toolchain e Gdb

1. Open OCD é uma ferramenta para a depuração de circruit, por um lado ele fala com o chip do outro lado fornece o servidor gdb onde o depurador (cliente) pode se conectar. Baixe openOCD para ESP32 em https://github.com/espressif/openocd-esp32/releases e descompacte-o na pasta D: / devel / ESP32 / tools

2. edite os arquivos de configuração openOCD:

esp-wroom-32.cfg

O caminho completo para este arquivo é:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / board / esp-wroom-32.cfg

Neste arquivo você pode definir a velocidade de comunicação alterando o parâmetro "adapter_khz". Por exemplo, "adapter_khz 8000" significa 8Mhz.

O padrão é 20 MHz e pode ser muito alto se você estiver usando fios de jumper mais longos ou placa de ensaio. Recomendo começar em 1Mhz e se estiver tudo bem, vá para uma velocidade maior, para mim 8Mhz funciona de forma confiável.

minimodule.cfg

O caminho completo para este arquivo é: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Se bem entendi, o minimodule genuíno é uma placa de freio superfaturada com FT 2232 fabricado pela FTDI e a única diferença entre o minimodule genuíno e o módulo barato ou chip básico disponível no mercado é a descrição USB padrão. open OCD está procurando por um adaptador jtag baseado na descrição do dispositivo, também o layout init precisa ser ajustado.

O módulo barato tem a descrição "Dual RS232-HS". Se você não tiver certeza sobre a descrição do seu dispositivo, você pode verificá-lo no gerenciador de dispositivos -> propriedades do dispositivo -> detalhes da guia -> valor da propriedade "Descrição do dispositivo relatado pelo barramento"

O conteúdo de minimodule.cfg deve ser semelhante ao exemplo abaixo, as linhas que começam com # podem ser excluídas.

interface ftdi # ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "Dual RS232-HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init 0x0008 0x000_layout-ftdi_00 0x000 nlayout 0x000-ftdi_00_data_data_data 0x000-0x000

esp32.cfg

O caminho completo para este arquivo é:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / target / esp32.cfg

Acrescente as 2 linhas seguintes ao final de esp32.cfg. Sem esta modificação, adicionar pontos de freio não funcionará.

#Force hw breakpoints. Assim que tivermos um mapa de memória, também podemos permitir que o software bps.gdb_breakpoint_override rígido

3. Baixe e instale o conjunto de ferramentas xtensa-esp32-elf - este conjunto de ferramentas contém o depurador de linha de comando (cliente gdb) que é vital para ter a depuração funcionando a partir de qualquer IDE gráfico. O conjunto de ferramentas simples pode ser baixado do site espressif, seção "Configuração alternativa"

Etapa 4: Fiação e primeiro teste

Fiação e primeiro teste
Fiação e primeiro teste
Fiação e primeiro teste
Fiação e primeiro teste

Conecte o módulo FT2322 ao ESP. Eu recomendo usar fios tão curtos quanto possível. Se você é novo no JTAG, não se esqueça que o TDI do adaptador irá para o TDI do chip, também o TDO do adaptador irá para o TDO do chip. As linhas de dados JTAG NÃO SÃO CRUZADAS como Rx / Tx no uart!

Para o teste seguinte, recomendo fazer upload de um esboço de exemplo intermitente ou algum outro esboço que possa indicar quando a CPU está funcionando ou não, piscando o LED ou emitindo um bipe ou escrevendo no console serial.

Inicie o openOCD seguindo o comando

D: / devel / ESP32 / tools / openocd-esp32 / bin / openocd.exe-s D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts -f interface / ftdi / minimodule.cfg -f board /esp-wroom-32.cfg

Isso iniciará o openOCD e se tudo estiver certo, você verá na saída da linha de comando que contém as seguintes linhas:

Informações: velocidade do relógio 8000 kHzInfo: JTAG tap: esp32.cpu0 tap / dispositivo encontrado: 0x120034e5 (mfg: 0x272 (Tensilica), parte: 0x2003, ver: 0x1) Informações: JTAG tap: esp32.cpu1 tap / dispositivo encontrado: 0x120034e5 (mfg: 0x272 (Tensilica), parte: 0x2003, ver: 0x1)

Além disso, o processo openocd ouvirá na porta TCP 3333

Abra o novo terminal e inicie o cliente gdb da linha de comando seguindo o comando

D: / devel / ESP32 / tools / xtensa-esp32-elf / bin / xtensa-esp32-elf-gdb.exe

Espere um segundo e quando o terminal gdb estiver pronto escreva os seguintes comandos um por um

alvo remoto: 3333 parada de reinicialização do monon continuar

O primeiro comando abre a conexão com o servidor de depuração openocd, o segundo interrompe a execução do programa no ESP e o LED deve parar de piscar, continua a restaurar a execução do programa e o LED deve começar a piscar novamente.

Etapa 5: adicionar configuração de depuração ao código do Visual Studio

Adicionar configuração de depuração ao código do Visual Studio
Adicionar configuração de depuração ao código do Visual Studio

Eu suponho que você já tenha configurado o código do Visual Studio e o addon Arduino corretamente e você pode verificar e fazer o upload do seu esboço para a placa. Caso contrário, verifique algumas instruções sobre como configurar o código do visual studio e o arduino, por exemplo nesta página

Para fazer a depuração funcionar, é necessário especificar a pasta de saída do build. Abaixo da pasta de esboço, há a pasta (oculta).vscode, onde está o arquivo arduino.json. adicione a este arquivo a seguinte linha:

"output": "BuildOutput /"

execute verificar ou carregue e verifique sua pasta de esboço novamente, deve haver uma nova pasta BuildOutput e dentro dela um arquivo com extensão.elf. O arquivo elf é vital para depuração.

As configurações do depurador estão no arquivo launch.json. Crie este arquivo com o conteúdo a seguir ou você pode copiar este arquivo do projeto de exemplo anexado. Não se esqueça de ajustar a linha 26 e definir o caminho correto para o arquivo.elf do seu projeto.

{// Use o IntelliSense para aprender sobre os possíveis atributos. // Passe o mouse para ver as descrições dos atributos existentes. // Para obter mais informações, visite: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" launch "," program ":" $ {file} "," cwd ":" $ {workspaceRoot} / BuildOutput / "," MIMode ":" gdb ", "targetArchitecture": "arm", "miDebuggerPath": "D: /devel/ESP32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb.exe", "debugServerArgs": "", " customLaunchSetupCommands ": [{" text ":" target remote: 3333 "}, {" text ":" mon reset halt "}, {// dynamic variant" text ":" file c: / Users / xxxxx / Documents / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// variante estática //" text ":" file c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Info \: [w / d \.] *: / hardware "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Como iniciar a depuração:

  1. Complete e carregue seu esboço para bordo
  2. Inicie o openOCD com parâmetros
  3. Defina pontos de freio no código onde você quiser
  4. Depois de definir todos os pontos de freio, certifique-se de ter aberto o arquivo.ino principal do projeto. (ou caminho de código para o arquivo.elf em launch.json)
  5. Abra o painel de depuração em vs código (Ctrl + Shift + D)
  6. Selecione o depurador "Arduino-GDB-openOCD", só deve estar disponível.
  7. Pressione F5 para iniciar a depuração

Recomendado: