Taula de continguts:

ESP32 - Solució barata per a la depuració de Circruit: 5 passos
ESP32 - Solució barata per a la depuració de Circruit: 5 passos

Vídeo: ESP32 - Solució barata per a la depuració de Circruit: 5 passos

Vídeo: ESP32 - Solució barata per a la depuració de Circruit: 5 passos
Vídeo: HLW8012 Модуль измерения энергии переменного тока: Обзор || Работаю || Соединения 2024, Desembre
Anonim
ESP32 - Solució barata per a la depuració de Circruit
ESP32 - Solució barata per a la depuració de Circruit

Hola, en aquest instructiu es descriu com configurar un adaptador JTAG barat basat en el xip FTDI 2232HL, amb codi visual i complement d'arduino.

- Mòdul FTDI 2232HL amb connector USB a partir de 8 $ a ebay i no cal programari de pagament. Aquesta és una gran solució per als aficionats que no volen gastar més de 50 $ en un adaptador JTAG professional.

- Aquest adaptador es podria utilitzar per depurar altres plataformes com ESP8266, ARM, AVR i moltes altres. Alguna configuració depèn de la plataforma de destinació, aquesta instrucció només cobreix la configuració per a ESP32.

- Si ja teniu algun adaptador JTAG, podeu utilitzar-lo quan el suport sigui openOCD, només cal iniciar openocd amb un fitxer de configuració diferent en funció del tipus de l'adaptador jtag.

- platform.io us pot facilitar la configuració, però la depuració només és compatible amb la versió professional de pagament.

- Funciona amb la majoria dels mòduls ESP32. (per exemple, wemos lolin 32 barat)

- Aquest adaptador jtag també hauria de funcionar amb Linux, però personalment no el vaig provar.

Pas 1: requisits previs del programari

Arduino IDE versió 1.8 o posterior. La versió de Windows Store no és compatible. Heu d’utilitzar la versió d’instal·lació clàssica que es pot descarregar des de la pàgina oficial d’Arduino

Codi d’estudi visual de Microsoft

Aquests complements per al codi d'estudi visual són obligatoris

  • Arduino
  • Depuració nativa

També recomano instal·lar aquest complement que habilita intelisense per a C / C ++

C / C ++

En aquest manual faré servir dues carpetes de treball:

D: / devel / ESP32 / tools / - aquí he posat totes les eines

C: / Users / xxxxx / Documents / Arduino / YourProject \: és una carpeta amb esbós

Podeu col·locar els vostres fitxers en qualsevol altre lloc si voleu, simplement no us oblideu d'actualitzar totes les referències amb el vostre camí real.

Pas 2: Instal·lació i configuració del controlador

Instal·lació i configuració del controlador
Instal·lació i configuració del controlador
Instal·lació i configuració del controlador
Instal·lació i configuració del controlador
Instal·lació i configuració del controlador
Instal·lació i configuració del controlador

Fins i tot si Windows detecta automàticament FT2232 per defecte, els controladors predeterminats de Windows no són suficients per a totes les funcions avançades i cal descarregar i instal·lar el controlador des del lloc FTDI

Quan estigui instal·lat el controlador correcte, hauríeu de veure el mòdul FT2232 al gestor de dispositius no només com a 2 ports sèrie, sinó també com a "convertidor de sèrie USB A" i "convertidor de sèrie USB B".

El segon pas és canviar de controlador per un canal del nostre convertidor. Descarregueu l'eina zadig des de https://zadig.akeo.ie/. Si entenc correctament aquesta eina enllaça el controlador winUSB amb el dispositiu FTDI que permet una comunicació de baix nivell entre el dispositiu openOCD i USB.

A l'eina zadig, al menú "Opcions" marqueu "Mostra tots els dispositius" i, a continuació, hauríeu de veure l'adaptador a la llista de dispositius disponibles. Seleccioneu "Dual RS232-HS (Interfície 0)" i seleccioneu el controlador de substitució "WinUSB v6.1.xxxx" i, finalment, feu clic al botó de substitució del controlador.

Quan connecteu l'adaptador a diferents ports USB de l'ordinador, és necessari tornar a canviar la configuració del controlador mitjançant l'eina zadig; en cas contrari, openOCD no trobarà l'adaptador.

Pas 3: OpenOCD, Toolchain i Gdb

OpenOCD, Toolchain i Gdb
OpenOCD, Toolchain i Gdb

1. Open OCD és una eina per a la depuració de circruit, per una banda parla amb xip a l'altra banda proporciona un servidor gdb on es pot connectar el depurador (client). Descarregueu openOCD per ESP32 des de https://github.com/espressif/openocd-esp32/releases i descomprimiu-lo a la carpeta D: / devel / ESP32 / tools

2. editeu fitxers de configuració openOCD:

esp-wroom-32.cfg

El camí d'accés complet a aquest fitxer és:

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

En aquest fitxer podeu establir la velocitat de comunicació canviant el paràmetre "adapter_khz". Per exemple, "adapter_khz 8000" significa 8Mhz.

El valor per defecte és de 20 MHz i pot ser massa alt si utilitzeu cables de pont més llargs o taulers de suport. Us recomano començar a 1 MHz i, si tot està bé, aneu a velocitat més alta, per a mi els 8 MHz funcionen de manera fiable.

minimodule.cfg

El camí d'accés complet a aquest fitxer és: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Si ho entenc correctament, el mínim mòdul genuí és un tauler de frenada car amb el FT 2232 fabricat per FTDI i l'única diferència entre el mòdul mínim genuí i el mòdul econòmic o el xip nu disponible al mercat és la descripció USB per defecte. open OCD està buscant un adaptador jtag basat en la descripció del dispositiu, també cal ajustar l'inici de disseny.

El mòdul barat té la descripció "Dual RS232-HS". Si no esteu segur de la descripció del vostre dispositiu, podeu consultar-la al gestor de dispositius -> propietats del dispositiu -> detalls de la pestanya -> valor de la propietat "Descripció del dispositiu notificada per bus"

El contingut de minimodule.cfg hauria de ser l'exemple següent, les línies que comencen per # es poden suprimir.

interfície 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 0x000b ftdi_layout_s

esp32.cfg

El camí d'accés complet a aquest fitxer és:

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

Afegiu 2 línies següents al final d'esp32.cfg. Sense aquesta modificació, l’addició de punts de fre no funcionarà.

#Force hw breakpoints. Un cop tenim un mapa de memòria, també podem permetre que el programari bps.gdb_breakpoint_override sigui dur

3. Descarregueu i instal·leu la cadena d'eines xtensa-esp32-elf: aquesta cadena d'eines conté un depurador de línia d'ordres (client gdb), que és vital perquè la depuració funcioni des de qualsevol IDE gràfic. La cadena d'eines Bare es pot descarregar des del lloc espressif, secció "Configuració alternativa"

Pas 4: cablejat i primera prova

Cablatge i primera prova
Cablatge i primera prova
Cablatge i primera prova
Cablatge i primera prova

Connecteu el mòdul FT2322 amb ESP. Us recomano que utilitzeu cables tan curts com sigui possible. Si sou nou a JTAG, no oblideu que TDI de l'adaptador passarà a TDI de xip, també TDO de l'adaptador passarà a TDO de xip. Les línies de dades JTAG NO ES CREUEN com Rx / Tx a uart.

Per a la següent prova, recomano penjar un esbós d’exemple de parpelleig o algun altre esbós que pugui indicar quan la CPU s’executa o no fent parpellejar el LED o emetent un so o escrivint a la consola sèrie.

Inicieu openOCD seguint l'ordre

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

Això iniciarà openOCD i, si tot és correcte, hauríeu de veure a la sortida de la línia d'ordres que conté les línies següents:

Informació: velocitat de rellotge 8000 kHz Informació: toc JTAG: toc esp32.cpu0 / dispositiu trobat: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Informació: toc JTAG: esp32.cpu1 toc / dispositiu trobat: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

També el procés openocd escoltarà al port TCP 3333

Obriu el terminal nou i inicieu el client gdb de la línia d’ordres seguint l’ordre

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

Espereu un segon i quan el terminal gdb estigui a punt escriviu les ordres següents una per una

remot de destinació: 3333mon reset reset stop

la primera ordre obre la connexió al servidor de depuració openocd, la segona aturarà l'execució del programa a ESP i el LED hauria de deixar de parpellejar, continuar la restauració de l'execució del programa i el LED hauria de tornar a parpellejar.

Pas 5: afegiu la configuració de depuració al codi Visual Studio

Afegiu la configuració de depuració al codi Visual Studio
Afegiu la configuració de depuració al codi Visual Studio

Suposo que en aquest moment ja heu configurat correctament el codi d'estudi visual i l'addon arduino i podeu verificar i penjar el vostre esbós al tauler. Si no, consulteu algunes instruccions sobre com configurar el codi d’estudi visual i l’arduino, per exemple en aquesta pàgina

Per aconseguir que la depuració funcioni, és necessari especificar la carpeta de sortida de compilació. Sota la vostra carpeta d'esbós hi ha la carpeta.vscode (oculta), on hi ha el fitxer arduino.json. afegir a aquest fitxer la següent línia:

"output": "BuildOutput /"

executeu la verificació o la càrrega i torneu a comprovar la carpeta d'esbossos, hi hauria d'haver una nova carpeta BuildOutput i dins del fitxer amb l'extensió.elf. l'arxiu elf és vital per a la depuració.

La configuració del depurador es troba al fitxer launch.json. Creeu aquest fitxer amb el contingut següent o podeu copiar-lo de l'exemple de projecte adjunt. No oblideu ajustar la línia 26 i definiu la ruta correcta al fitxer.elf del vostre projecte.

{// Utilitzeu IntelliSense per obtenir informació sobre possibles atributs. // Passeu el cursor per veure les descripcions dels atributs existents. // Per obtenir més informació, visiteu: 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 remot: 3333 "}, {" text ":" mon reset stop "}, {// variant dinàmica" text ":" fitxer c: / Usuaris / xxxxx / Documents / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// variant estàtica //" text ":" fitxer c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Informació \: [w / d \.] *: / hardware "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Com començar la depuració:

  1. Completeu i pengeu el vostre esbós al tauler
  2. Inicieu openOCD amb paràmetres
  3. Establiu els punts de fre al codi on vulgueu
  4. Després de configurar tots els punts de fre, assegureu-vos que heu obert el fitxer.ino principal del projecte. (o camí d'accés del codi dur al fitxer.elf a launch.json)
  5. Obriu el tauler de depuració al codi vs (Ctrl + Maj + D)
  6. Seleccioneu el depurador "Arduino-GDB-openOCD", només hauria d'estar disponible.
  7. Prem F5 per iniciar la depuració

Recomanat: