ESP32 - Penyelesaian Murah untuk dalam Circruit Debug: 5 Langkah
ESP32 - Penyelesaian Murah untuk dalam Circruit Debug: 5 Langkah
Anonim
ESP32 - Penyelesaian Murah untuk dalam Circruit Debug
ESP32 - Penyelesaian Murah untuk dalam Circruit Debug

Halo, Dalam petunjuk ini dijelaskan bagaimana untuk menyediakan penyesuai JTAG murah berdasarkan cip FTDI 2232HL, dengan kod visual dan addon arduino.

- Modul FTDI 2232HL dengan penyambung USB bermula dari $ 8 di ebay dan tidak diperlukan perisian berbayar. Ini adalah penyelesaian terbaik untuk penggemar yang tidak mahu mengeluarkan 50 $ + untuk penyesuai profesionall JTAG.

- Penyesuai ini boleh digunakan untuk debug platform lain seperti ESP8266, ARM, AVR dan banyak lagi. Sebilangan konfigurasi bergantung pada platform sasaran, arahan ini hanya merangkumi persediaan untuk ESP32.

- Sekiranya anda sudah memiliki beberapa penyesuai JTAG, anda boleh menggunakannya apabila disokong oleh openOCD, mulailah openocd dengan fail konfigurasi yang berbeza berdasarkan jenis penyesuai jtag anda.

- platform.io dapat membuat penyediaan lebih mudah untuk anda, tetapi debug hanya disokong dalam versi profesional berbayar.

- Berfungsi dengan sebahagian besar modul ESP32. (contohnya wemos lolin 32 murah)

- penyesuai jtag ini harus berfungsi dengan linux juga, tetapi saya secara peribadi tidak mengujinya.

Langkah 1: Keperluan Perisian

Arduino IDE versi 1.8 atau lebih baru. Versi kedai Windows tidak disokong. Anda mesti menggunakan versi pemasang klasik yang boleh dimuat turun dari laman rasmi Arduino

Kod studio visual Microsoft

Tambahan ini untuk kod studio visual adalah wajib

  • Arduino
  • Debug asli

Saya juga mengesyorkan untuk memasang addon ini yang membolehkan intelisense untuk C / C ++

C / C ++

Dalam manual ini saya akan menggunakan 2 folder berfungsi:

D: / devel / ESP32 / tools / - di sini saya telah meletakkan semua alat

C: / Users / xxxxx / Documents / Arduino / YourProject / - ini adalah folder dengan lakaran

anda boleh meletakkan fail anda di tempat lain jika anda mahu, jangan lupa untuk mengemas kini semua rujukan dengan jalan sebenar anda.

Langkah 2: Pemasangan dan Konfigurasi Pemacu

Pemasangan dan Konfigurasi Pemacu
Pemasangan dan Konfigurasi Pemacu
Pemasangan dan Konfigurasi Pemacu
Pemasangan dan Konfigurasi Pemacu
Pemasangan dan Konfigurasi Pemacu
Pemasangan dan Konfigurasi Pemacu

Walaupun tetingkap secara automatik mengesan FT2232 secara automatik, pemacu lalai tetingkap tidak mencukupi untuk semua ciri maju dan perlu memuat turun dan memasang pemacu dari laman FTDI

Apabila pemacu yang betul dipasang, anda akan melihat modul FT2232 anda dalam pengurus peranti bukan sahaja sebagai 2 port bersiri tetapi juga sebagai "penukar siri USB A" dan "penukar siri USB B"

Langkah kedua adalah pemacu perubahan untuk satu saluran penukar kami. Muat turun alat zadig dari https://zadig.akeo.ie/. Sekiranya saya memahami dengan betul alat ini, pautkan pemacu winUSB ke peranti FTDI yang membolehkan komunikasi tahap rendah antara openOCD dan peranti USB.

Dalam alat zadig, dalam menu "Pilihan" tandakan "Tunjukkan semua Peranti", maka anda akan melihat penyesuai anda dalam senarai peranti yang tersedia. Pilih "Dual RS232-HS (Interface 0)" kemudian pilih driver pengganti "WinUSB v6.1.xxxx" dan akhirnya klik pada butang pengganti driver.

Apabila anda menyambungkan penyesuai anda ke port USB yang berlainan di komputer anda, adalah perlu untuk menukar tetapan pemacu melalui alat zadig sekali lagi, jika tidak, OpenOCD tidak akan menemui penyesuai anda.

Langkah 3: OpenOCD, Toolchain dan Gdb

OpenOCD, Toolchain dan Gdb
OpenOCD, Toolchain dan Gdb

1. Open OCD adalah alat untuk melakukan debug Circruit, di satu sisi ia bercakap untuk membuat chip di sisi lain ia menyediakan pelayan gdb di mana debugger (klien) dapat berhubung. Muat turun openOCD untuk ESP32 dari https://github.com/espressif/openocd-esp32/releases dan bongkar ke folder D: / devel / ESP32 / tools

2. edit fail konfigurasi openOCD:

esp-wroom-32.cfg

Jalan penuh ke fail ini ialah:

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

Dalam fail ini anda dapat mengatur kecepatan komunikasi dengan mengubah parameter "adapter_khz". Contohnya "adapter_khz 8000" bermaksud 8Mhz.

Lalai adalah 20MHz dan mungkin terlalu tinggi jika anda menggunakan kabel jumper atau papan roti yang lebih panjang. Saya cadangkan untuk memulakan pada 1Mhz dan jika semuanya baik-baik saja, pergi ke kelajuan yang lebih tinggi, bagi saya 8Mhz berfungsi dengan pasti.

minimodule.cfg

Jalan penuh ke fail ini ialah: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Sekiranya saya faham dengan betul, minimodule asli adalah papan brek yang terlalu mahal dengan FT 2232 yang dihasilkan oleh FTDI dan hanya perbezaan antara modul minimum asli dan modul murah atau cip kosong yang terdapat di pasaran adalah keterangan USB lalai. open OCD mencari penyesuai jtag berdasarkan keterangan peranti, juga susun atur perlu disesuaikan.

Modul murah mempunyai keterangan "Dual RS232-HS". Sekiranya anda tidak pasti mengenai perihalan peranti anda, anda boleh menyemaknya di pengurus peranti -> sifat peranti -> butiran tab -> nilai harta benda "Penerangan peranti yang dilaporkan oleh bas"

Kandungan minimodule.cfg akan kelihatan seperti contoh di bawah, baris bermula dengan # dapat dihapuskan.

antara muka 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_signal nSRST -Data 0x0020

esp32.cfg

Jalan penuh ke fail ini ialah:

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

Lampirkan mengikuti 2 baris hingga akhir esp32.cfg. Tanpa pengubahsuaian ini, penambahan titik titik tidak akan berfungsi.

Titik putus #Force hw. Setelah kita mempunyai peta memori, kita juga dapat membiarkan perisian bps.gdb_breakpoint_override keras

3. Muat turun dan pasang rantai alat xtensa-esp32-elf - rantai alat ini mengandungi debugger baris arahan (klien gdb) yang sangat penting untuk melakukan debug berfungsi dari mana-mana IDE grafik. Rantai alat telanjang boleh dimuat turun dari laman espressif, bahagian "Persediaan alternatif"

Langkah 4: Pendawaian dan Ujian Pertama

Pendawaian dan Ujian Pertama
Pendawaian dan Ujian Pertama
Pendawaian dan Ujian Pertama
Pendawaian dan Ujian Pertama

Sambungkan modul FT2322 dengan ESP. Saya mengesyorkan untuk menggunakan wayar sesingkat mungkin. Sekiranya anda baru menggunakan JTAG, jangan lupa bahawa TDI penyesuai akan pergi ke TDI cip, juga TDO penyesuai akan pergi ke TDO cip. Talian data JTAG TIDAK DITULIS seperti Rx / Tx di uart!

Untuk ujian berikut, saya sarankan memuat naik lakaran contoh berkedip atau beberapa lakaran lain yang dapat menunjukkan ketika CPU sedang berjalan atau tidak dengan berkelip LED atau berbunyi bip atau menulis ke konsol bersiri.

Mulakan openOCD dengan mengikuti arahan

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

Ini akan mula openOCD dan jika semuanya baik-baik saja, anda harus melihat output baris arahan mengandungi baris berikut:

Maklumat: kelajuan jam 8000 kHzInfo: ketuk JTAG: esp32.cpu0 ketuk / peranti dijumpai: 0x120034e5 (mfg: 0x272 (Tensilica), bahagian: 0x2003, ver: 0x1) Maklumat: Ketuk JTAG: esp32.cpu1 ketukan / peranti dijumpai: 0x120034e5 (mfg: 0x272 (Tensilica), bahagian: 0x2003, ver: 0x1)

Proses openocd juga akan mendengar pada port TCP 3333

Buka terminal baru dan mulakan baris perintah gdb klien dengan mengikuti perintah

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

Tunggu sebentar dan bila terminal gdb akan siap menulis perintah berikut satu demi satu

jarak jauh sasaran: tetapan semula 3333mon berhenti terus

perintah pertama membuka sambungan ke pelayan debug openocd, yang kedua akan menghentikan pelaksanaan program pada ESP dan LED harus berhenti berkedip, terus memulihkan pelaksanaan program dan LED akan mula berkelip lagi.

Langkah 5: Tambahkan Konfigurasi Debug ke Visual Studio Code

Tambahkan Konfigurasi Debug ke Kod Visual Studio
Tambahkan Konfigurasi Debug ke Kod Visual Studio

Saya menganggap pada ketika itu anda sudah mengkonfigurasi kod studio visual dan arduino addon dengan betul dan anda boleh mengesahkan dan memuat naik lakaran anda ke papan. Sekiranya tidak, sila periksa beberapa arahan bagaimana mengkonfigurasi kod visual studio dan arduino, misalnya di halaman ini

Untuk mendapatkan debug berfungsi, perlu menentukan folder output binaan. Di bawah folder sketsa anda ada (tersembunyi) folder.vscode, di mana fail arduino.json. tambah ke fail ini baris berikut:

"output": "BuildOutput /"

jalankan verifikasi atau muat naik dan periksa folder lakaran anda sekali lagi, harus ada folder BuildOutput baru dan di dalamnya fail dengan ekstensi.elf. fail elf sangat penting untuk debug.

Tetapan debugger ada di file launch.json. Buat fail ini dengan kandungan berikut, atau anda boleh menyalin fail ini dari contoh projek yang dilampirkan. Jangan lupa sesuaikan baris 26 dan tentukan jalan yang betul ke fail.elf projek anda.

{// Gunakan IntelliSense untuk mengetahui tentang kemungkinan atribut. // Arahkan kursor untuk melihat keterangan atribut yang ada. // Untuk maklumat lebih lanjut, lawati: 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 remote: 3333 "}, {" text ":" mon reset halt "}, {// varian dinamik" teks ":" fail c: / Pengguna / xxxxx / Dokumen / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// varian statik //" teks ":" fail c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignFailures": true}], "stopAtEntry": true, "serverStarted": "Maklumat \: [w / d \.] *: / perkakasan "," launchCompleteCommand ":" exec-terus "," filterStderr ": true," args ": }]}

Cara memulakan penyahpepijatan:

  1. Selesaikan dan muat naik lakaran anda ke papan
  2. Mulakan openOCD dengan parameter
  3. Tetapkan titik tolak dalam kod di mana anda mahu
  4. Setelah menetapkan semua titik tolak, pastikan anda telah membuka fail.ino utama projek anda. (atau jalan keras ke fail.elf di launch.json)
  5. Buka panel debug dalam kod vs (Ctrl + Shift + D)
  6. Pilih debugger "Arduino-GDB-openOCD", seharusnya hanya tersedia.
  7. Tekan F5 untuk memulakan debug

Disyorkan: