İçindekiler:
- 1. Adım: Yazılım Avantajları
- Adım 2: Sürücü Yükleme ve Yapılandırma
- 3. Adım: OpenOCD, Toolchain ve Gdb
- Adım 4: Kablolama ve İlk Test
- Adım 5: Visual Studio Koduna Hata Ayıklama Yapılandırması Ekleyin
Video: ESP32 - Devre İçi Hata Ayıklama için Ucuz Çözüm: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
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
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
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
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:
- Çiziminizi onaylayın ve panoya yükleyin
- Parametrelerle openOCD'yi başlatın
- Koddaki fren noktalarını istediğiniz yere ayarlayın
- 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)
- Hata ayıklama panelini vs kodunda açın (Ctrl + Shift + D)
- "Arduino-GDB-openOCD" hata ayıklayıcısını seçin, yalnızca kullanılabilir olmalıdır.
- Hata ayıklamayı başlatmak için F5'e basın
Önerilen:
GİZLİ BİR DÜNYA Nasıl Gidilir !!!!!! (Hata Ayıklama Modu): 3 Adım
GİZLİ BİR DÜNYA Nasıl Gidilir !!!!!! (Hata Ayıklama Modu): Bu talimatta size Minecraft'ta gizli bir dünya moduna geçmenizi göstereceğim
HackerBox 0049: Hata Ayıklama: 8 Adım
HackerBox 0049: Hata Ayıklama: Dünyadaki HackerBox Hacker'larına selamlar! HackerBox 0049 için, dijital mikrodenetleyici sistemlerinde hata ayıklama, Arduino IDE içinde LOLIN32 ESP-32 WiFi Bluetooth platformunu yapılandırma, FastLED Animation L
Temel Java Hata Ayıklama: 9 Adım
Temel Java Hata Ayıklama: Bu talimat kılavuzu, Java hata işleme için adım adım temel bir kontrolü kapsar. Bu kılavuz, java programlama yazılımının kurulumunda herhangi bir yardım sağlamaz ve bu görevi önceden tamamlamış olmanızı bekler. En iyisi için
CloudX ile Seri Hata Ayıklama: 3 Adım
CloudX ile Seri Hata Ayıklama: Bu projede seri terminal üzerinden hata ayıklama kavramını açıklamayı hedefliyorum. Ama önce bir başlangıç olarak, kavramını anlamlarıyla açıklayalım.1. seri iletişim seri iletişim, CloudX bo
Otoparksız Bölgeler için Çözüm: 5 Adım
Otoparksız Alanlar için Çözüm: Bu proje, ekibimin bir gazete makalesinden aldığı ilhamın bir sonucudur. Makale, araçlarını park yeri olmayan yerlere park eden insanlardan bahsediyordu. Bu, trafik sıkışıklığına ve başkaları için rahatsızlıklara neden olan büyük bir sorun haline geldi