İçindekiler:

ESP32 - Devre İçi Hata Ayıklama için Ucuz Çözüm: 5 Adım
ESP32 - Devre İçi Hata Ayıklama için Ucuz Çözüm: 5 Adım

Video: ESP32 - Devre İçi Hata Ayıklama için Ucuz Çözüm: 5 Adım

Video: ESP32 - Devre İçi Hata Ayıklama için Ucuz Çözüm: 5 Adım
Video: ESP32 CAM İLE 100 TL YE IP KAMERA YAPMAK|IOT'A GİRİŞ|ESP32 CAM KULLANIMI 2024, Kasım
Anonim
ESP32 - Devre Hata Ayıklama için Ucuz Çözüm
ESP32 - Devre Hata Ayıklama için Ucuz Çözüm

Merhaba, Bu talimatta, görsel kod ve arduino eklentisi ile FTDI 2232HL çipine dayalı ucuz JTAG adaptörünün nasıl kurulacağı anlatılmaktadır.

- ebay'de 8$'dan başlayan USB konektörlü FTDI 2232HL modülü ve ücretli yazılım gerekmez. Bu, profesyonel JTAG adaptörüne 50$+ harcamak istemeyen amatörler için harika bir çözüm.

- Bu adaptör, ESP8266, ARM, AVR ve diğerleri gibi diğer platformların hatalarını ayıklamak için kullanılabilir. Bazı konfigürasyonlar hedef platforma bağlıdır, bu talimat sadece ESP32 kurulumunu kapsar.

- Halihazırda bir JTAG bağdaştırıcınız varsa, bunu openOCD tarafından desteklendiğinde kullanabilirsiniz, jtag bağdaştırıcınızın türüne göre farklı yapılandırma dosyasıyla openocd'yi başlatmanız yeterlidir.

- platform.io kurulumu sizin için kolaylaştırabilir, ancak hata ayıklama yalnızca ücretli profesyonel sürümde desteklenir.

- ESP32 modüllerinin çoğuyla çalışır. (örneğin ucuz wemos lolin 32)

- bu jtag bağdaştırıcısı linux ile de çalışmalıdır, ancak şahsen test etmedim.

1. Adım: Yazılım Avantajları

Arduino IDE sürüm 1.8 veya daha yenisi. Windows mağaza sürümü desteklenmiyor. Resmi Arduino sayfasından indirilebilen klasik yükleyici sürümünü kullanmanız gerekir

Microsoft görsel stüdyo kodu

Görsel stüdyo kodu için bu eklentiler zorunludur

  • Arduino
  • Yerel hata ayıklama

C/C++ için intelisense sağlayan bu eklentiyi de yüklemenizi tavsiye ederim.

C/C++

Bu kılavuzda 2 çalışma klasörü kullanacağım:

D:\devel\ESP32\tools\ - buraya tüm araçları yerleştirdim

C:\Users\xxxx\Documents\Arduino\YourProject\ - bu eskizli klasördür

dosyalarınızı isterseniz başka bir yere yerleştirebilirsiniz, lütfen tüm referansları gerçek yolunuzla güncellemeyi unutmayın.

Adım 2: Sürücü Yükleme ve Yapılandırma

Sürücü Yükleme ve Yapılandırma
Sürücü Yükleme ve Yapılandırma
Sürücü Yükleme ve Yapılandırma
Sürücü Yükleme ve Yapılandırma
Sürücü Yükleme ve Yapılandırma
Sürücü Yükleme ve Yapılandırma

Windows varsayılan olarak FT2232'yi otomatik olarak algılasa bile, Windows varsayılan sürücüleri tüm gelişmiş özellikler için yeterli değildir ve sürücüyü FTDI sitesinden indirip yüklemek gerekir

Doğru sürücü kurulduğunda FT2232 modülünüzü aygıt yöneticisinde sadece 2 seri port olarak değil aynı zamanda "USB seri dönüştürücü A" ve "USB seri dönüştürücü B" olarak görmelisiniz.

İkinci adım, dönüştürücümüzün bir kanalı için sürücüyü değiştirmektir. Zadig aracını https://zadig.akeo.ie/ adresinden indirin. Doğru anlarsam, bu araç winUSB sürücüsünü openOCD ve USB cihazı arasında düşük seviyeli iletişim sağlayan FTDI cihazına bağlar.

Zadig aracında, "Seçenekler" menüsünde "Tüm Cihazları Göster" seçeneğini işaretleyin, ardından adaptörünüzü mevcut cihazlar listesinde görmelisiniz. "Çift RS232-HS (Arayüz 0)" seçeneğini seçin, ardından "WinUSB v6.1.xxxx" yedek sürücüsünü seçin ve son olarak sürücüyü değiştir düğmesine tıklayın.

Adaptörünüzü bilgisayarınızın farklı bir USB portuna bağladığınızda tekrar zadig aracı ile sürücü ayarlarını değiştirmeniz gerekir, aksi halde openOCD adaptörünüzü bulamaz.

3. Adım: OpenOCD, Toolchain ve Gdb

OpenOCD, Toolchain ve Gdb
OpenOCD, Toolchain ve Gdb

1. Açık OCD devrede hata ayıklama aracıdır, bir tarafta chip ile konuşur, diğer tarafta hata ayıklayıcının(istemci) bağlanabileceği gdb sunucusu sağlar. https://github.com/espressif/openocd-esp32/releases adresinden ESP32 için openOCD'yi indirin ve paketini D:\devel\ESP32\tools\ klasörüne açın

2. openOCD yapılandırma dosyalarını düzenleyin:

esp-wroom-32.cfg

Bu dosyanın tam yolu:

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

Bu dosyada "adapter_khz" parametresini değiştirerek iletişim hızını ayarlayabilirsiniz. Örneğin "adapter_khz 8000", 8Mhz anlamına gelir.

Varsayılan 20MHz'dir ve daha uzun atlama kabloları veya devre tahtası kullanıyorsanız çok yüksek olabilir. 1Mhz'den başlamanızı ve her şey yolundaysa daha yüksek hıza geçmenizi öneririm, benim için 8Mhz güvenilir bir şekilde çalışıyor.

minimodule.cfg

Bu dosyanın tam yolu: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg

Doğru anlarsam, orijinal minimodül, FTDI tarafından üretilen FT 2232'ye sahip overpriced frenleme kartıdır ve orijinal minimodül ile piyasada bulunan ucuz modül veya çıplak çip arasındaki tek fark, varsayılan USB açıklamasıdır. open OCD, cihaz açıklamasına göre jtag adaptörü arıyor, ayrıca layout init'in ayarlanması gerekiyor.

Ucuz modül "Çift RS232-HS" açıklamasına sahiptir. Cihazınızın tanımından emin değilseniz, cihaz yöneticisi -> cihaz özellikleri -> sekme ayrıntıları -> "Veriyolu raporlanan cihaz açıklaması" özelliğinin değerini kontrol edebilirsiniz.

minimodule.cfg'nin içeriği aşağıdaki örnekteki gibi görünmelidir, # ile başlayan satırlar silinebilir.

arabirim ftdi#ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "Çift RS232-HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init 0x0008 0x000b ftdi_layout_signal

esp32.cfg

Bu dosyanın tam yolu:

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

esp32.cfg dosyasının sonuna aşağıdaki 2 satırı ekleyin. Bu değişiklik olmadan, fren noktaları eklemek işe yaramaz.

#Hw kesme noktalarını zorla. Bir hafıza haritamız olduğunda, bps.gdb_breakpoint_override hard yazılımına da izin verebiliriz.

3. xtensa-esp32-elf araç zincirini indirin ve kurun - bu araç zinciri, herhangi bir grafik IDE'den çalışan hata ayıklaması için hayati önem taşıyan komut satırı hata ayıklayıcısını (gdb istemcisi) içerir. Çıplak alet zinciri espressif sitesinde, "Alternatif kurulum" bölümünden indirilebilir

Adım 4: Kablolama ve İlk Test

Kablolama ve İlk Test
Kablolama ve İlk Test
Kablolama ve İlk Test
Kablolama ve İlk Test

FT2322 modülünü ESP ile bağlayın. Mümkün olduğunca kısa kablo kullanmanızı tavsiye ederim. JTAG'da yeniyseniz, adaptörün TDI'sinin chip'in TDI'sine, ayrıca adaptörün TDO'sunun chip'in TDO'suna gideceğini unutmayın. JTAG veri hatları, uart'taki Rx/Tx gibi KAÇIŞI DEĞİLDİR!

Aşağıdaki test için, yanıp sönen LED veya bip sesi veya seri konsola yazarak CPU'nun ne zaman çalışıp çalışmadığını gösterebilen yanıp sönme örneği çizimi veya başka bir çizim yüklemenizi tavsiye ederim.

Aşağıdaki komutu izleyerek openOCD'yi başlatı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 kartı /esp-wroom-32.cfg

Bu, openOCD'yi başlatacak ve her şey yolundaysa, komut satırı çıktısında aşağıdaki satırları görmelisiniz:

Bilgi: saat hızı 8000 kHzBilgi: JTAG tap: esp32.cpu0 tap/cihaz bulundu: 0x120034e5 (mfg: 0x272 (Tensilica), bölüm: 0x2003, ver: 0x1) Bilgi: JTAG tap: esp32.cpu1 tap/cihaz bulundu: 0x120034e5 (MFG: 0x272 (Tensilika), bölüm: 0x2003, sürüm: 0x1)

Ayrıca openocd işlemi 3333 numaralı TCP bağlantı noktasını dinleyecektir.

Yeni terminal açın ve komutu takip ederek komut satırı gdb istemcisini başlatın

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

Bir saniye bekleyin gdb terminali hazır olduğunda aşağıdaki komutları tek tek yazın

hedef uzak:3333mon reset dur devam et

ilk komut openocd hata ayıklama sunucusuna bağlantıyı açar, ikincisi ESP'de program yürütmeyi durdurur ve LED'in yanıp sönmesi durmalı, program yürütmeyi geri yüklemeye devam etmeli ve LED yeniden yanıp sönmeye başlamalıdır.

Adım 5: Visual Studio Koduna Hata Ayıklama Yapılandırması Ekleyin

Visual Studio Koduna Hata Ayıklama Yapılandırması Ekleme
Visual Studio Koduna Hata Ayıklama Yapılandırması Ekleme

Bu noktada görsel stüdyo kodunu ve arduino eklentisini doğru bir şekilde yapılandırdığınızı ve taslağınızı tahtaya doğrulayıp yükleyebileceğinizi varsayıyorum. Değilse, lütfen görsel stüdyo kodunun ve arduino'nun nasıl yapılandırılacağına ilişkin bazı talimatları kontrol edin, örneğin bu sayfada

Hata ayıklamanın çalışmasını sağlamak için derleme çıktı klasörünü belirtmek gerekir. Çizim klasörünüzün altında (gizli).vscode klasörü vardır, burada arduino.json dosyası bulunur. bu dosyaya aşağıdaki satırı ekleyin:

"output": "BuildOutput/"

doğrulamayı veya yüklemeyi çalıştırın ve çizim klasörünüzü tekrar kontrol edin, yeni BuildOutput klasörü ve içinde.elf uzantılı dosya olmalıdır. elf dosyası hata ayıklama için hayati önem taşır.

Hata ayıklayıcı ayarları, launch.json dosyasındadır. Bu dosyayı aşağıdaki içerikle oluşturun veya bu dosyayı ekteki örnek projeden kopyalayabilirsiniz. 26. satırı ayarlamayı ve proje.elf dosyanız için doğru yolu tanımlamayı unutmayın.

{ // Olası öznitelikler hakkında bilgi edinmek için IntelliSense kullanın. // Varolan özniteliklerin açıklamalarını görüntülemek için fareyle üzerine gelin. // Daha fazla bilgi için şu adresi ziyaret edin: https://go.microsoft.com/fwlink/?linkid=830387 "sürüm": "0.2.0", "yapılandırmalar": [{ "ad": "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": "hedef uzak:3333" }, { "metin": "mon reset durma" }, { //dinamik değişken "metin": "file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf" //statik değişken //"text": "dosya c:/Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf" }, { "text": "flushregs" }, { "text": "thb app_main" }, { "text": "c", "ignoreFailures": true }], "stopAtEntry": true, "serverStarted": "Bilgi \: [w\d\.]*:\ donanım", "launchCompleteCommand": "exec-devam", "filterStderr": true, "args": }] }

Hata ayıklamaya nasıl başlanır:

  1. Çiziminizi onaylayın ve panoya yükleyin
  2. Parametrelerle openOCD'yi başlatın
  3. Koddaki fren noktalarını istediğiniz yere ayarlayın
  4. Tüm fren noktalarını ayarladıktan sonra projenizin ana.ino dosyasını açtığınızdan emin olun. (veya launch.json'daki.elf dosyasının sabit kod yolu)
  5. Hata ayıklama panelini vs kodunda açın (Ctrl + Shift + D)
  6. "Arduino-GDB-openOCD" hata ayıklayıcısını seçin, yalnızca kullanılabilir olmalıdır.
  7. Hata ayıklamayı başlatmak için F5'e basın

Önerilen: