Isi kandungan:

Cara Menggunakan Debugger pada Langkah ESP32: 11 (dengan Gambar)
Cara Menggunakan Debugger pada Langkah ESP32: 11 (dengan Gambar)

Video: Cara Menggunakan Debugger pada Langkah ESP32: 11 (dengan Gambar)

Video: Cara Menggunakan Debugger pada Langkah ESP32: 11 (dengan Gambar)
Video: Rahasia ESP32 !! Kendali LED dengan WebServer dan Cara Menggunakan ESP32 dengan Arduino IDE 2024, November
Anonim
Cara Menggunakan Debugger pada ESP32
Cara Menggunakan Debugger pada ESP32

Adakah anda pernah mahu melihat-lihat kod anda untuk mengetahui mengapa ia berkelakuan seperti itu? Secara tradisinya dalam projek ESP32, anda perlu menambahkan pernyataan cetak tanpa henti untuk mengetahui apa yang sedang berlaku, tetapi ada cara yang lebih baik!

Penyahpepijat adalah cara untuk melihat apa yang berlaku di bahagian tertentu kod anda dan untuk mencuba nilai pemboleh ubah yang berbeza tanpa menyusun semula kod anda, biasanya ini bukan sesuatu yang tersedia untuk kami pada projek terbenam, tetapi dalam panduan ini saya akan menunjukkan kepada anda bagaimana menggunakannya pada ESP32.

Dalam panduan ini saya akan menunjukkan kepada anda untuk mengatur perkakasan, menyiapkan perisian dan menunjukkan contoh mudah menggunakan penyahpepijat.

Bekalan

  • ESP-Prog - Ini adalah papan yang diperlukan untuk penyahpepijatan

    • Tepat yang saya beli *
    • $ 5 Lebih murah, tetapi saya belum mengujinya *
  • ESP32 yang melepaskan pin 12, 13, 14, 15

    • Adafruit Feather Huzzah32
    • D1 Mini ESP32 *
  • [OPTIONAL] Debug Shield yang saya jual di Tindie

    • Bulu Huzzah32
    • D1 Mini ESP32

* = Pautan Gabungan

Langkah 1: Lihat Video

Image
Image

Saya mempunyai video mengenai topik ini jika anda ingin melihatnya.

Di saluran saya biasanya membuat video berasaskan ESP8266 dan ESP32, jadi jika anda berminat dengan video tersebut, sila lihat!

Langkah 2: Perkakasan - Bahagian & Pendawaian

Perkakasan - Bahagian & Pendawaian
Perkakasan - Bahagian & Pendawaian
Perkakasan - Bahagian & Pendawaian
Perkakasan - Bahagian & Pendawaian
Perkakasan - Bahagian & Pendawaian
Perkakasan - Bahagian & Pendawaian

Untuk menggunakan debugger, anda hanya memerlukan ESP-Prog dan hampir semua papan ESP32 (pautan ke ini pada langkah sebelumnya)

ESP-Prog:

ESP-Prog adalah papan yang direka oleh espressif, pembuat cip ESP32 dan ESP8266. Ia menghubungkan ke pin JTAG ESP32 untuk membolehkan kita menggunakan debugger. Ia juga boleh digunakan untuk memprogram papan ESP32, tetapi saya tidak akan membahasnya di sini.

Papan ESP32:

Anda pada asasnya boleh menggunakan papan ESP32 mana pun setelah pin JTAG pecah, iaitu 12, 13, 14 & 15. Saya telah menguji kedua-dua bulu Adafruit Huzzah32 dan papan D1 Mini 32 dan mereka berdua berfungsi dengan baik.

Harap maklum bahawa anda boleh menggunakan pin JTAG dalam lakaran anda dengan penyahpepijat, contohnya LED bawaan papan Huzzah32 ada pada pin 13, jadi anda tidak dapat menggunakannya semasa melakukan debug.

Pendawaian:

Untuk menyambungkan ESP-Prog ke ESP32, gunakan panduan pendawaian seperti yang terdapat dalam gambar di atas. Periksa dengan gambarajah pendawaian papan ESP32 anda jika anda tidak segera melihat pin yang sesuai kerana kadang-kadang mereka menggunakan skema penamaan yang berbeza.

Perisai Debug:

Ini adalah pilihan, tetapi saya menjual beberapa perisai pada Tindie untuk Huzzah32 dan D1 Mini 32 yang menjadikan penyambungan ESP-Prog sangat mudah, ia melepaskan pin yang sesuai ke penyambung IDC yang anda boleh gunakan kabel pita untuk menyambung terus di antara perisai dan ESP-Prog

Langkah 3: Perkakasan - Persediaan Pemacu

Perkakasan - Persediaan Pemacu
Perkakasan - Persediaan Pemacu
Perkakasan - Persediaan Pemacu
Perkakasan - Persediaan Pemacu
Perkakasan - Persediaan Pemacu
Perkakasan - Persediaan Pemacu

Untuk menggunakan ESP-prog untuk penyahpepijatan, kita perlu memasang pemacu yang sesuai untuknya. PlatformIO menyediakan beberapa langkah untuk itu di sini, tetapi saya akan melalui langkah Windows dalam panduan ini.

  1. Muat turun dan pasang pemacu FTDI untuk ESP-Prog dari sini, tatal ke kanan untuk memuat turun versi "persediaan yang boleh dilaksanakan" untuk memudahkannya.
  2. Muat turun dan pasang alat Zadig dari sini, ini membolehkan kita memasang pemacu generik yang diperlukan untuk penyahpepijatan.
  3. Dengan ESP-Prog terpasang, buka Zadig
  4. Dalam aplikasi Zadig, di bawah "Pilihan", klik "Senaraikan Semua Peranti"
  5. Drop-down di Zadig sekarang akan diisi, pilih pilihan "Dual RS232-HS (Interface 0)". Pastikan antara muka yang anda pilih!
  6. Di sebelah kanan anak panah hijau, "WinUSB" harus dipilih, kemudian klik "Ganti Pemacu"

Apabila selesai, pemandu anda harus disediakan untuk digunakan!

Catatan: Sekiranya anda menukar port USB yang anda gunakan untuk ESP-Prog, anda mungkin perlu mengulangi langkah 3-6 sekali lagi. Sekiranya anda mendapat ralat seperti yang ditunjukkan pada gambar di atas semasa melakukan debug, anda perlu mengulangi langkahnya.

Langkah 4: Perisian: Memasang PlatformIO

Perisian: Memasang PlatformIO
Perisian: Memasang PlatformIO
Perisian: Memasang PlatformIO
Perisian: Memasang PlatformIO
Perisian: Memasang PlatformIO
Perisian: Memasang PlatformIO

PlatformIO adalah IDE untuk dikembangkan dengan berbagai kerangka tertanam yang berbeza, termasuk eko-sistem Arduino. Ia lebih rumit untuk digunakan daripada sesuatu seperti Arduino IDE, tetapi sangat kuat dan mempunyai beberapa ciri yang sangat hilang oleh Arduino IDE, seperti auto-complete.

Diperlukan untuk PlatformIO menggunakan debugger. Sekiranya anda sudah biasa dengan PlatformIO, jangan ragu untuk meneruskan beberapa langkah.

  • Muat turun dan pasang Visual Studio Code (VS Code) dari pautan yang disediakan di laman web PlatformIO.org
  • Buka Kod VS, dan buka menu sambungan, butang diserlahkan pada gambar di atas
  • Ketik "platformio" ke dalam carian, pilih dan klik pasang.

Langkah 5: Perisian: Menggunakan PlatformIO

Perisian: Menggunakan PlatformIO
Perisian: Menggunakan PlatformIO
Perisian: Menggunakan PlatformIO
Perisian: Menggunakan PlatformIO
Perisian: Menggunakan PlatformIO
Perisian: Menggunakan PlatformIO

Menggunakan PlatformIO sedikit berbeza daripada menggunakan Arudino IDE, jadi dalam langkah ini kita akan membahas asas-asas mendapatkan contoh yang berjalan di papan tulis.

Membuka Contoh:

  1. Klik butang Laman Utama pada bar alat PlatformIO (Seperti yang ditunjukkan dalam gambar)
  2. Klik butang "Contoh Projek"
  3. Pilih contoh "Arduino-blink" di bawah bahagian Espressif 32

Ini akan membuka projek sekelip mata. Susun atur PlatformIO sangat berbeza berbanding dengan projek Arduino, jadi mari kita teliti asasnya.

Di mana kodnya?

Kod untuk projek anda akan disimpan di folder "src", untuk contoh sekelip mata anda akan melihat fail "blink.cpp", fail ini sama dengan fail lakaran anda (.ino) dalam projek Arduino.

Bagaimana cara mengkonfigurasi papan saya?

Konfigurasi untuk projek anda disimpan di dalam fail "platformio.ini" dalam projek anda. Ini sebenarnya adalah salah satu perkara kegemaran saya tentang PlatformIO berbanding dengan Arduino IDE, tidak pernah masuk akal bagi saya bahawa tetapan papan tidak terikat dengan lakaran.

Contoh.ini mengandungi definisi untuk pelbagai papan yang berbeza, tetapi untuk memudahkan semuanya mari kita hapuskan dua definisi bawah.

Di mana saya menetapkan port COM saya?

PlatformIO sebenarnya akan secara automatik berusaha mencari port COM yang betul untuk digunakan, jadi anda benar-benar dapat melepaskan diri dengan tidak menetapkan apa-apa untuk ini. Tetapi jika anda mempunyai banyak port COM, yang anda mahukan semasa menggunakan debugger, saya rasa masuk akal untuk menetapkan yang tertentu yang anda perlukan. Anda dapat melihat pelbagai peranti yang anda miliki dengan mengklik bahagian "Peranti" di tab beranda, dan anda boleh menetapkan yang mana ESP32 anda di "platformio.ini" dengan menambahkan konfigurasi "upload_port".

Bagaimana saya memuat naik kod saya?

Klik pada butang Upload (ikon adalah anak panah yang menunjuk ke kanan) dan ia harus menyusun dan memuat naik kodnya. Anda sekarang mesti mempunyai LED yang berkedip di papan anda.

Langkah 6: Menyahpepijat: Potensi Kulit Pisang

Penyahpepijatan: Potensi Kulit Pisang!
Penyahpepijatan: Potensi Kulit Pisang!
Penyahpepijatan: Potensi Kulit Pisang!
Penyahpepijatan: Potensi Kulit Pisang!
Penyahpepijatan: Kulit Pisang Berpotensi!
Penyahpepijatan: Kulit Pisang Berpotensi!

Ini adalah sesuatu yang menarik perhatian saya semasa saya menyiapkannya dan semoga dapat diperbaiki pada masa anda mencubanya, tetapi saya fikir penting untuk pergi dari sini.

Pada saat membuat panduan ini, versi terbaru PlatformIO adalah 4.3.0 dan ia mempunyai bug yang berkaitan dengan dapat melakukan debug. Syukurlah kita dapat mengemas kini ke versi pembangunan terkini dengan mudah yang dapat menyelesaikan masalahnya.

Periksa di laman Utama versi teras PlatformIO, jika "4.3.0", lakukan langkah-langkah berikut.

  1. Pada bar alat PlatformIO, klik ikon terminal
  2. Dalam jenis terminal: peningkatan pio --dev
  3. RestartVS code dan PlatfromIO harus dikemas kini

Langkah 7: Menyahpepijat: Konfigurasi

Penyahpepijatan: Konfigurasi
Penyahpepijatan: Konfigurasi

Kita perlu mengedit fail "PlatofrmIO.ini" untuk membolehkan penyahpepijatan, kita hanya perlu menambahkan dua perkara padanya.

debug_tool = esp-prog

Ini menetapkan alat debug yang kita gunakan.

debug_init_break = persediaan tbreak

Ini adalah muslihat yang kami pelajari dari video Andress Spiess mengenai penyahpepijatan pada ESP32. Ini memberitahu debugger untuk berhenti dalam penyediaan aplikasi kami.

Langkah 8: Menyahpepijat: Memulakan Penyahpepijatan

Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan
Penyahpepijatan: Memulakan Penyahpepijatan

Sebelum masuk ke dalamnya, kami akan membuat sedikit perubahan pada lakaran yang akan mempermudah untuk menunjukkan apa yang dapat anda lakukan dengan penyahpepijatan.

  1. Buat pemboleh ubah baru, "int delayTime = 1000;" di luar kaedah apa pun, ini akan menjadikannya pemboleh ubah global.
  2. Ganti nombor di dalam panggilan tunda dalam gelung dengan pemboleh ubah baru ini: delay (delayTime);

Muat naik kod ke papan sekali lagi, kemudian untuk memulakan penyahpepijatan, di bar alat, klik "Jalankan" kemudian "Mulakan Debug"

Anda akan melihat perkara-perkara bergerak di tetingkap terminal, tetapi walaupun ketika itu menyatakan bahawa ia berjaya, jika anda mengklik "Debug Console" anda akan melihatnya masih berfungsi, ia akan memerlukan beberapa saat untuk diselesaikan.

Sekiranya semuanya berjalan seperti yang diharapkan, anda akan melihat debugger berhenti pada permulaan persediaan.

Langkah 9: Menyahpepijat: Penggunaan Asas

Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas
Penyahpepijatan: Penggunaan Asas

Mari kita bahas beberapa asas perkara yang boleh anda lakukan dengan penyahpepijat

Membuat Breakpoints:

Titik putus adalah titik kod anda di mana anda mahu penyahpepijat berhenti. Untuk membuat breakpoint klik di sebelah kiri nombor garis. Sebagai demo, tambahkan breakpoint ke baris pertama dalam kaedah gelung.

Navigasi Breakpoint:

Untuk berpindah antara titik putus atau beralih ke baris kod seterusnya, anda boleh menggunakan alat yang akan muncul di bahagian atas skrin. Tekan butang "lanjutkan" (kelihatan seperti butang main) untuk memindahkan titik putus yang baru kita buat di dalam gelung.

Jam Tangan Berubah:

Jam tangan pemboleh ubah membolehkan anda memantau nilai pemboleh ubah semasa penyahpepijat dihentikan pada titik putus. Untuk menambah jam tangan pemboleh ubah baru, anda boleh mengklik ikon +, kemudian taipkan nama pemboleh ubah tersebut. Sebagai demo, ketik pemboleh ubah yang kami tambahkan pada langkah sebelumnya "delayTime"

Penonton Berubah:

Anda juga dapat melihat semua pemboleh ubah dan nilainya yang tersedia di titik putus semasa anda. Untuk menunjukkan ini, Sekiranya anda melihat di bahagian "Global" anda harus mencari pemboleh ubah "delayTime".

Mengedit Nilai Pemboleh ubah:

Anda juga boleh mengedit nilai pemboleh ubah dan ini akan memberi kesan langsung kepada tingkah laku kod anda. Untuk menunjukkan ini, klik pada pemboleh ubah delayTime di bahagian Variable Viewer, dan ubah nilainya menjadi "100". Untuk menunjukkan ini berfungsi, nonaktifkan titik putus di dalam gelung dengan mengklik sekali lagi di sebelah kiri nombor garis. Tekan butang terus pada bar navigasi breakpoint. LED pada ESP32 anda sekarang seharusnya berkelip lebih cepat daripada sebelumnya.

Langkah 10: Penyelesaian masalah

Penyelesaian masalah
Penyelesaian masalah

Saya mendapati semasa ujian saya, bahawa beberapa kali saya tidak dapat memuat naik ke ESP32 semasa ia disambungkan ke ESP-prog, dan saya tidak dapat mengetahui corak mengapa ini berlaku, kerana kebanyakan masa saya boleh memuat naik tanpa Ada apa apa masalah. Saya dapati saya memutuskan sambungan ESP32 dan ESP-Prog, memuat naik kod ke ESP32 dan kemudian menyambungkannya semula dan ia akan berfungsi dengan baik.

Langkah 11: Kesimpulan

Saya rasa ini adalah alat yang sangat hebat untuk ditambahkan ke kotak alat untuk membantu mengetahui apa yang berlaku di dalam projek anda.

Saya ingin mendengar jika anda menganggap ini berguna !. Tolong beritahu saya dalam komen di bawah, atau sertai saya dan sekumpulan pembuat lain di pelayan Discord saya, di mana kita boleh membincangkan topik ini atau mana-mana pembuat yang berkaitan dengan anda, orang-orang sangat membantu di sana jadi ini adalah tempat yang bagus untuk menggantung keluar.

Saya juga ingin mengucapkan terima kasih banyak kepada Penaja Github saya yang membantu menyokong apa yang saya lakukan, saya sangat menghargainya. Sekiranya anda tidak tahu, Github sepadan dengan penajaan untuk tahun pertama, jadi jika anda membuat penajaan, mereka akan sepadan dengan 100% untuk beberapa bulan akan datang. Terima kasih untuk membaca!

Disyorkan: