Mündəricat:

ESP32 - Circruit Debug üçün ucuz həll: 5 addım
ESP32 - Circruit Debug üçün ucuz həll: 5 addım

Video: ESP32 - Circruit Debug üçün ucuz həll: 5 addım

Video: ESP32 - Circruit Debug üçün ucuz həll: 5 addım
Video: Proyecto de heliostato Templastat / Templastat Heliostat Project: improvements, updates and test 2024, Iyul
Anonim
ESP32 - Circruit Debug üçün ucuz bir həll
ESP32 - Circruit Debug üçün ucuz bir həll

Salam, bu təlimatda FTDI 2232HL çipi əsasında vizual kod və arduino addon ilə ucuz JTAG adapterinin necə qurulacağı təsvir edilmişdir.

- eBay -da 8 dollardan başlayan USB konnektoru olan FTDI 2232HL modulu və heç bir ödənişli proqram tələb olunmur. Bu, bütün JTAG adapterinə 50 $+ xərcləmək istəməyən həvəskarlar üçün əla bir həlldir.

- Bu adapter ESP8266, ARM, AVR və digərləri kimi digər platformaların ayıklanması üçün istifadə edilə bilər. Bəzi konfiqurasiya hədəf platformadan asılıdır, bu təlimat yalnız ESP32 üçün qurulmanı əhatə edir.

- Əgər artıq bir neçə JTAG adapteriniz varsa, openOCD tərəfindən dəstəklənəndə istifadə edə bilərsiniz, sadəcə jtag adapterinizin növündən asılı olaraq fərqli konfiqurasiya faylı olan openocd proqramına başlayın.

- platform.io quraşdırmanı sizin üçün asanlaşdıra bilər, ancaq debug yalnız ödənişli peşəkar versiyada dəstəklənir.

- ESP32 modullarının çoxu ilə işləyir. (məsələn ucuz wemos lolin 32)

- bu jtag adapteri linux ilə də işləməlidir, amma şəxsən mən bunu sınamamışam.

Addım 1: Proqram təminatı

Arduino IDE versiyası 1.8 və ya daha yeni. Windows mağaza versiyası dəstəklənmir. Rəsmi Arduino səhifəsindən yükləyə biləcəyiniz klassik quraşdırıcı versiyasını istifadə etməlisiniz

Microsoft vizual studiya kodu

Vizual studiya kodu üçün bu əlavələr məcburidir

  • Arduino
  • Yerli ayıklama

C/C ++ üçün intelisense imkan verən bu addonun quraşdırılmasını da məsləhət görürəm

C/C ++

Bu təlimatda 2 iş qovluğundan istifadə edəcəyəm:

D: / devel / ESP32 / tools / - burada bütün alətləri yerləşdirmişəm

C: / Users / xxxxx / Documents / Arduino / YourProject / - bu eskizli qovluqdur

İstəsəniz sənədlərinizi başqa yerə yerləşdirə bilərsiniz, zəhmət olmasa bütün referansları faktiki yolunuzla yeniləməyi unutmayın.

Addım 2: Sürücü Quraşdırma və Konfiqurasiya

Sürücü Quraşdırma və Konfiqurasiya
Sürücü Quraşdırma və Konfiqurasiya
Sürücü Quraşdırma və Konfiqurasiya
Sürücü Quraşdırma və Konfiqurasiya
Sürücü Quraşdırma və Konfiqurasiya
Sürücü Quraşdırma və Konfiqurasiya

Windows standart olaraq FT2232 -ni avtomatik olaraq aşkar etsə də, Windows standart sürücüləri bütün qabaqcıl xüsusiyyətlər üçün kifayət deyil və sürücünü FTDI saytından yükləmək və yükləmək lazımdır

Düzgün sürücü quraşdırıldıqda, FT2232 modulunuzu cihaz menecerində yalnız 2 seriyalı port olaraq deyil, həm də "USB serial çevirici A" və "USB serial çeviricisi B" olaraq görməlisiniz.

İkinci addım, çeviricimizin bir kanalının sürücüsünü dəyişdirməkdir. Zadig alətini https://zadig.akeo.ie/ saytından yükləyin. Düzgün başa düşürəmsə, bu alət winUSB sürücüsünü openOCD və USB cihazı arasında aşağı səviyyəli əlaqə qurmağa imkan verən FTDI cihazına bağlayır.

Zadig alətində "Seçimlər" menyusunda "Bütün Cihazları Göstər" işarəsini yoxlayın, sonra mövcud cihazların siyahısında adapterinizi görməlisiniz. "Dual RS232-HS (Interface 0)" seçin və sonra "WinUSB v6.1.xxxx" əvəz sürücüsünü seçin və son olaraq sürücünü dəyişdir düyməsini basın.

Adaptörünüzü kompüterinizin fərqli bir USB portuna bağladığınızda, zadig vasitəsi ilə sürücü parametrlərini yenidən dəyişdirmək lazımdır, əks halda openOCD adapterinizi tapa bilməz.

Addım 3: OpenOCD, Toolchain və Gdb

OpenOCD, Alət Zənciri və Gdb
OpenOCD, Alət Zənciri və Gdb

1. Açıq OKB, dövrə ayıklama üçün bir vasitədir, bir tərəfdən çiplə danışır, digər tərəfdən ayıklayıcının (müştəri) qoşula biləcəyi gdb serveri təmin edir. Https://github.com/espressif/openocd-esp32/releases saytından ESP32 üçün openOCD yükləyin və D: / devel / ESP32 / tools / qovluğuna açın.

2. openOCD konfiqurasiya fayllarını redaktə edin:

esp-wroom-32.cfg

Bu fayla tam yol:

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

Bu faylda "adapter_khz" parametrini dəyişərək ünsiyyət sürətini təyin edə bilərsiniz. Məsələn, "adapter_khz 8000" 8Mhz deməkdir.

Varsayılan 20 MHz -dir və daha uzun tullanan tellər və ya çörək taxtası istifadə edirsinizsə çox yüksək ola bilər. 1Mhz -də başlamağı məsləhət görürəm və hər şey qaydasındadırsa, daha yüksək sürətə keçin, mənim üçün 8Mhz etibarlı işləyir.

minimodule.cfg

Bu fayla tam yol: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Düzgün başa düşsəm, orijinal minimodul FTDI tərəfindən istehsal olunan FT 2232 ilə həddindən artıq qiymətli əyləc lövhəsidir və orijinal minimodul ilə ucuz modul və ya çipdəki fərq yalnız standart USB təsviridir. açıq OKB, cihazın təsvirinə əsaslanan jtag adapteri axtarır, həmçinin nizamın təşkili də tənzimlənməlidir.

Ucuz modulda "İkili RS232-HS" təsviri var. Cihazınızın təsvirindən əmin deyilsinizsə, onu cihaz menecerində yoxlaya bilərsiniz -> cihaz xüsusiyyətləri -> nişan təfərrüatları -> əmlakın dəyəri "Avtobus bildirilən cihaz təsviri"

Minimodule.cfg məzmunu aşağıdakı nümunəyə bənzəməlidir, # ilə başlayan sətirlər silinə bilər.

interfeysi 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 0x00s -0x000b ft

esp32.cfg

Bu fayla tam yol:

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

Esp32.cfg -nin sonuna aşağıdakı 2 sətri əlavə edin. Bu dəyişiklik olmadan əyləc nöqtələri əlavə etmək işləməyəcəkdir.

#Hw fasilə nöqtələrini zorla. Yaddaş xəritəsinə sahib olduqdan sonra bps.gdb_breakpoint_override proqramına da sərt icazə verə bilərik

3. Xtensa-esp32-elf alət zəncirini yükləyin və quraşdırın-bu alət zəncirində hər hansı bir qrafik IDE-dən işləmə düzəlişinin olması üçün vacib olan əmr satırı düzəldicisi (gdb müştəri) var. Çılpaq alət zəncirini espressif saytının "Alternativ quraşdırma" bölməsindən yükləyə bilərsiniz

Addım 4: Kablolama və İlk Test

Kablolama və ilk sınaq
Kablolama və ilk sınaq
Kablolama və ilk sınaq
Kablolama və ilk sınaq

FT2322 modulunu ESP ilə birləşdirin. Mümkün olduğunca qısa tel istifadə etməyi məsləhət görürəm. JTAG -da yenisinizsə, unutmayın ki, adapterin TDI -si çipin TDI -nə, həmçinin adapterin TDO -u da çipin TDO -na gedəcək. JTAG məlumat xətləri Uart -da Rx/Tx kimi kəsişməmişdir!

Növbəti test üçün, yanıb -sönən bir nümunə eskizi və ya başqa bir eskiz yükləməyi məsləhət görürəm ki, bu da CPU -nun işlədiyini və ya yanıb -sönmədiyini, LED -in yanıb -sönməsini və ya serial konsoluna yazılmasını göstərə bilər.

Aşağıdakı əmri yerinə yetirərək openOCD başladın

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 lövhəsi /esp-wroom-32.cfg

Bu openOCD başlayacaq və əgər hər şey qaydasındadırsa, əmr satırı çıxışında aşağıdakı sətirləri görmək lazımdır:

Məlumat: saat sürəti 8000 kHz Məlumat: JTAG tap: esp32.cpu0 tap/cihaz tapıldı: 0x120034e5 (mfg: 0x272 (Tensilica), hissə: 0x2003, ver: 0x1) Məlumat: JTAG tap: esp32.cpu1 tap/cihaz tapıldı: 0x120034e5 (mfg: 0x272 (Tensilica), hissə: 0x2003, ver: 0x1)

Openocd prosesi TCP 3333 portunda da dinləniləcək

Yeni bir terminal açın və komanda izləyərək gdb müştəri satırını başladın

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

Bir saniyə gözləyin və gdb terminalı hazır olduqda aşağıdakı əmrləri bir -bir yazın

hədəf uzaqdan: 3333mon sıfırlama dayandırma davam edir

birinci komanda openocd ayıklama serverinə bağlantı açır, ikincisi ESP -də proqramın icrasını dayandıracaq və LED yanıb sönməyi dayandırmalı, proqramın icrasını bərpa etməyə davam etməli və LED yenidən yanıb sönməyə başlamalıdır.

Addım 5: Visual Studio Koduna Debug Konfiqurasiyasını əlavə edin

Visual Studio Koduna Debug Konfiqurasiyasını əlavə edin
Visual Studio Koduna Debug Konfiqurasiyasını əlavə edin

Vizual studiya kodunu və arduino addonunu düzgün qurduğunuzu düşünürəm və eskizinizi lövhəyə yükləyə bilərsiniz. Əks təqdirdə, vizual studiya kodunu və arduino-nu necə konfiqurasiya etmək barədə bəzi təlimatları yoxlayın, məsələn bu səhifədə

Debug qurmaq üçün çıxış qovluğunu qurmaq lazımdır. Eskiz qovluğunun altında (gizli) qovluq var.vscode, burada arduino.json faylı var. aşağıdakı faylı bu fayla əlavə edin:

"output": "BuildOutput/"

yoxlayın və ya yükləyin və eskiz qovluğunuzu yenidən yoxlayın, yeni BuildOutput qovluğu olmalı və içərisində.elf uzantısı olan bir fayl olmalıdır. elf faylı ayıklama üçün vacibdir.

Hata ayıklayıcı ayarları launch.json faylındadır. Bu faylı aşağıdakı məzmunla yaradın və ya bu faylı əlavə edilmiş nümunə layihədən kopyalaya bilərsiniz. 26 -cı sətri tənzimləməyi və layihənizin.elf faylına doğru yolu təyin etməyi unutmayın.

{// Mümkün atributları öyrənmək üçün IntelliSense istifadə edin. // Mövcud atributların təsvirlərinə baxmaq üçün imlecə gedin. // Ətraflı məlumat üçün https://go.microsoft.com/fwlink/?linkid=830387 "versiya": "0.2.0", "konfiqurasiyalar": [{"ad": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" launch "," program ":" $ {file} "," cwd ":" $ {workspaceRoot}/BuildOutput/"," MIMode ":" gdb ", "targetArchitecture": "qol", "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 "// statik 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": "Məlumat \: [w / d \.]*: / hardware "," launchCompleteCommand ":" exec-Continue "," filterStderr ": true," args ": }]}

Ayıklamaya necə başlamaq olar:

  1. Qarşılaşın və eskizinizi lövhəyə yükləyin
  2. Parametrləri olan openOCD -yə başlayın
  3. İstədiyiniz yerdə kodda əyləc nöqtələrini təyin edin
  4. Bütün əyləc nöqtələrini təyin etdikdən sonra, layihənizin əsas.ino faylını açdığınızdan əmin olun. (və ya launch.json -da.elf faylının sərt kod yolu)
  5. Debug panelini vs kodunda açın (Ctrl + Shift + D)
  6. "Arduino-GDB-openOCD" ayıklayıcı seçin, yalnız mövcud olmalıdır.
  7. Ayıklamaya başlamaq üçün F5 düyməsini basın

Tövsiyə: