Talaan ng mga Nilalaman:

ESP32 - Murang Solusyon para sa Circruit Debug: 5 Hakbang
ESP32 - Murang Solusyon para sa Circruit Debug: 5 Hakbang

Video: ESP32 - Murang Solusyon para sa Circruit Debug: 5 Hakbang

Video: ESP32 - Murang Solusyon para sa Circruit Debug: 5 Hakbang
Video: PWM DC Motor control with Arduino and L298N Module with library - Robojax 2024, Nobyembre
Anonim
ESP32 - Murang Solusyon para sa Circruit Debug
ESP32 - Murang Solusyon para sa Circruit Debug

Kumusta, Sa itinuturo na ito ay inilarawan kung paano mag-set up ng murang JTAG adapter batay sa FTDI 2232HL chip, na may visual code at arduino addon.

- FTDI 2232HL module na may USB konektor na nagsisimula sa 8 $ sa ebay at walang kinakailangang bayad na software. Mahusay na solusyon ito para sa hobbyist na ayaw gumastos ng 50 $ + sa profesionall JTAG adapter.

- Maaaring gamitin ang adapter na ito para sa pag-debug ng iba pang mga platform tulad ng ESP8266, ARM, AVR at marami pang iba. Ang ilang pagsasaayos ay nakasalalay sa target na platform, ang tagubilin na ito ay sumasaklaw lamang sa pag-set up para sa ESP32.

- Kung nagmamay-ari ka na ng ilang JTAG adapter, maaari mo itong magamit kapag sinusuportahan ito ng openOCD, simulan lamang ang openocd na may iba't ibang mga file ng pagsasaayos batay sa uri ng iyong jtag adapter.

- Ang platform.io ay maaaring gawing mas madali ang pag-setup para sa iyo, ngunit ang debug ay sinusuportahan lamang sa bayad na propesyonal na bersyon.

- Gumagana sa karamihan ng mga module ng ESP32. (halimbawa murang wemos lolin 32)

- Ang jtag adapter na ito ay dapat na gumana sa linux din, ngunit personal kong hindi ito sinubukan.

Hakbang 1: Mga Perquisite ng Software

Ang bersyon ng Arduino IDE 1.8 o mas bago. Ang bersyon ng store ng Windows ay hindi suportado. Kailangan mong gumamit ng klasikong bersyon ng installer na maaaring ma-download mula sa opisyal na pahina ng Arduino

Microsoft visual studio code

Ang mga addon na ito para sa visual studio code ay sapilitan

  • Arduino
  • Katutubong pag-debug

Inirerekumenda ko ring i-install ang addon na ito na nagbibigay-daan sa intelisense para sa C / C ++

C / C ++

Sa manu-manong ito ay gagamit ako ng 2 mga gumaganang folder:

D: / devel / ESP32 / tool / - narito ko inilagay ang lahat ng mga tool

C: / Users / xxxxx / Documents / Arduino / YourProject / - ito ang folder na may sketch

maaari mong ilagay ang iyong mga file saanman kung nais mo, mangyaring huwag kalimutang i-update ang lahat ng mga sanggunian sa iyong tunay na landas.

Hakbang 2: Pag-install at Pag-configure ng Driver

Pag-install at Pag-configure ng Driver
Pag-install at Pag-configure ng Driver
Pag-install at Pag-configure ng Driver
Pag-install at Pag-configure ng Driver
Pag-install at Pag-configure ng Driver
Pag-install at Pag-configure ng Driver

Kahit na awtomatikong makita ng mga bintana ang FT2232 bilang default, ang mga default na driver ng windows ay hindi sapat para sa lahat ng mga advanced na tampok at kinakailangan na mag-download at mag-install ng driver mula sa FTDI site

Kapag na-install ang tamang driver, dapat mong makita ang iyong module na FT2232 sa manager ng aparato hindi lamang bilang 2 serial port kundi pati na rin bilang "USB serial converter A" at "USB serial converter B"

Pangalawang hakbang ay ang driver ng pagbabago para sa isang channel ng aming converter. Mag-download ng tool ng zadig mula sa https://zadig.akeo.ie/. Kung naiintindihan ko nang wasto ang link ng tool na ito WinUSB driver sa FTDI aparato na nagbibigay-daan sa mababang antas ng comunication sa pagitan ng openOCD at USB device.

Sa tool ng zadig, sa menu na "Mga Pagpipilian" suriin ang "Ipakita ang lahat ng Mga Device", pagkatapos ay dapat mong makita ang iyong adapter sa listahan ng mga magagamit na aparato. Piliin ang "Dual RS232-HS (Interface 0)" pagkatapos ay piliin ang kapalit na driver "WinUSB v6.1.xxxx" at panghuli mag-click sa palitan ang pindutan ng driver.

Kapag ikinonekta mo ang iyong adapter sa iba't ibang USB port ng iyong computer, kinakailangang baguhin ulit ang mga setting ng driver sa pamamagitan ng tool ng zadig, hindi makikita ng openOCD ang iyong adapter.

Hakbang 3: OpenOCD, Toolchain at Gdb

OpenOCD, Toolchain at Gdb
OpenOCD, Toolchain at Gdb

1. Buksan ang OCD ay tool para sa pag-debug ng circruit, sa isang tabi ay nagsasalita ito sa chip sa kabilang panig nagbibigay ito ng gdb server kung saan maaaring kumonekta ang debugger (client). I-download ang openOCD para sa ESP32 mula sa https://github.com/espressif/openocd-esp32/releases at i-unpack ito sa folder D: / devel / ESP32 / tool

2. i-edit ang mga file ng pagsasaayos ng openOCD:

esp-wroom-32.cfg

Ang buong landas sa file na ito ay:

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

Sa file na ito maaari mong itakda ang bilis ng komunikasyon sa pamamagitan ng pagbabago ng parameter na "adapter_khz". Halimbawa, ang "adapter_khz 8000" ay nangangahulugang 8Mhz.

Ang default ay 20MHz at maaaring ito ay masyadong mataas kung gumagamit ka ng mas matagal na mga jumper wires o breadboard. Inirerekumenda kong magsimula sa 1Mhz at kung ang lahat ay OK, pumunta sa mas mataas na bilis, para sa akin ang 8Mhz ay gumagana nang maaasahan.

minimodule.cfg

Ang buong landas sa file na ito ay: D: / devel / ESP32 / tool / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Kung naiintindihan ko nang tama, ang tunay na minimodule ay sobrang presyo ng board ng preno sa FT 2232 na ginawa ng FTDI at ang pagkakaiba lamang sa pagitan ng tunay na minimodule at murang module o hubad na chip na magagamit sa merkado ay default na paglalarawan ng USB. ang bukas na OCD ay naghahanap ng jtag adapter batay sa paglalarawan ng aparato, kailangan ding ayusin ang layout ng init.

Ang murang module ay may paglalarawan na "Dual RS232-HS". Kung hindi ka sigurado tungkol sa paglalarawan ng iyong aparato, maaari mo itong suriin sa manager ng aparato -> mga pag-aari ng aparato -> mga detalye ng tab -> halaga ng pag-aari

Ang nilalaman ng minimodule.cfg ay dapat magmukhang halimbawa sa ibaba, ang mga linya ay nagsisimula sa # maaaring matanggal.

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 0x000b ftdi_layoutss

esp32.cfg

Ang buong landas sa file na ito ay:

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

Idagdag ang sumusunod na 2 linya sa pagtatapos ng esp32.cfg. Nang walang pagbabago na ito, hindi gagana ang pagdaragdag ng mga preno.

# Force hw breakpoints. Kapag mayroon kaming isang mapa ng memorya, maaari rin naming payagan ang software bps.gdb_breakpoint_override nang husto

3. Mag-download at mag-install ng xtensa-esp32-elf toolchain - naglalaman ang toolchain na ito ng command line debugger (gdb client) na mahalaga na magkaroon ng gumaganang debug mula sa anumang graphic na IDE. Maaaring mai-download ang bare toolchain mula sa espressif site, seksyon na "Alternatibong pag-setup"

Hakbang 4: Mga Kable at Unang Pagsubok

Mga Kable at Unang Pagsubok
Mga Kable at Unang Pagsubok
Mga Kable at Unang Pagsubok
Mga Kable at Unang Pagsubok

Ikonekta ang module na FT2322 sa ESP. Inirerekumenda ko na gamitin bilang maikling mga wire hangga't maaari. Kung bago ka sa JTAG, huwag kalimutan na ang TDI ng adapter ay pupunta sa TDI ng chip, din ang TDO ng adapter ay pupunta sa TDO ng maliit na tilad. Ang mga linya ng data ng JTAG ay HINDI naka-CROSS tulad ng Rx / Tx sa uart!

Para sa sumusunod na pagsubok inirerekumenda ko ang pag-upload ng blink halimbawa ng sketch o ilang iba pang sketch na maaaring magpahiwatig kung tumatakbo ang CPU o hindi sa pamamagitan ng pagpikit ng LED o pag-beep o pagsusulat sa serial console.

Simulan ang openOCD sa pamamagitan ng pagsunod sa utos

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

Magsisimula ito sa openOCD at kung ang lahat ay tama dapat mong makita sa output ng linya ng utos na naglalaman ng mga sumusunod na linya:

Impormasyon: bilis ng orasan 8000 kHzInfo: JTAG tap: esp32.cpu0 tap / aparato na nahanap: 0x120034e5 (mfg: 0x272 (Tensilica), bahagi: 0x2003, ver: 0x1) Impormasyon: JTAG tap: esp32.cpu1 tap / aparato na nakita: 0x120034e5 (mfg: 0x272 (Tensilica), bahagi: 0x2003, ver: 0x1)

Gayundin ang proseso ng openocd ay makikinig sa TCP port 3333

Buksan ang bagong terminal at simulan ang command line gdb client sa pamamagitan ng pagsunod sa comand

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

Maghintay ng isang segundo at kung kailan magiging handa ang terminal ng gdb isulat ang mga sumusunod na mga utos nang paisa-isa

target na remote: 3333mon reset itigil itigil

Ang unang utos ay magbubukas ng koneksyon sa openocd debug server, ang pangalawa ay titigil sa pagpapatupad ng programa sa ESP at dapat huminto ang LED sa pagpikit, ipagpatuloy na ibalik ang pagpapatupad ng programa at humantong muli ang LED.

Hakbang 5: Magdagdag ng Pag-configure ng Debug sa Visual Studio Code

Magdagdag ng Pag-configure ng Debug sa Visual Studio Code
Magdagdag ng Pag-configure ng Debug sa Visual Studio Code

Inaasahan ko sa puntong iyon na naka-configure mo na ang visual studio code at arduino addon nang wasto at maaari mong i-verify at i-upload ang iyong sketch sa board. Kung hindi, mangyaring suriin ang ilang mga tagubilin kung paano i-configure ang visual studio code at arduino, halimbawa sa pahinang ito

Upang makuha ang pag-debug na kinakailangan upang tukuyin ang build output folder. Sa ilalim ng iyong sketch folder mayroong (nakatago) folder.vscode, kung saan ang file arduino.json. idagdag sa sumusunod na file na linya:

"output": "BuildOutput /"

patakbuhin ang i-verify o i-upload at suriin muli ang iyong sketch folder, dapat mayroong bagong BuildOutput folder at sa loob nito ay mag-file gamit ang. extensition. Mahalaga ang elf file para sa pag-debug.

Ang mga setting ng debugger ay nasa file launch.json. Lumikha ng file na ito kasama ang sumusunod na nilalaman, o maaari mong kopyahin ang file na ito mula sa nakalakip na halimbawang proyekto. Huwag kalimutan na ayusin ang linya 26 at tukuyin ang tamang landas sa iyong proyekto.elf file.

{// Gumamit ng IntelliSense upang malaman ang tungkol sa mga posibleng katangian. // Mag-hover upang matingnan ang mga paglalarawan ng mga mayroon nang mga katangian. // Para sa karagdagang impormasyon, bisitahin ang: https://go.microsoft.com/fwlink/?linkid=830387 "bersyon": "0.2.0", "mga pagsasaayos": [{"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 "// static variant //" 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 ": }]}

Paano simulan ang pag-debug:

  1. Pag-komplie at i-upload ang iyong sketch upang makasakay
  2. Simulan ang openOCD na may mga parameter
  3. Itakda ang mga pointpoint sa code kung saan mo gusto
  4. Matapos itakda ang lahat ng mga prenopoint, tiyaking nabuksan mo ang iyong pangunahing proyekto.ino file. (o landas ng hardcode sa.elf file sa launch.json)
  5. Buksan ang panel ng pag-debug sa vs code (Ctrl + Shift + D)
  6. Piliin ang "Arduino-GDB-openOCD" debugger, dapat ay magagamit lamang.
  7. Pindutin ang F5 upang simulan ang pag-debug

Inirerekumendang: