สารบัญ:

วิธีใช้ดีบักเกอร์บน ESP32: 11 ขั้นตอน (พร้อมรูปภาพ)
วิธีใช้ดีบักเกอร์บน ESP32: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีใช้ดีบักเกอร์บน ESP32: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีใช้ดีบักเกอร์บน ESP32: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ตอนที่ 1 Basic ESP32 WiFi Development เล่าเรื่องราว GPIO รู้จักและเข้าใจ ใช้งานเป็น 2024, กรกฎาคม
Anonim
วิธีใช้ดีบักเกอร์บน ESP32
วิธีใช้ดีบักเกอร์บน ESP32

คุณเคยต้องการที่จะมองเข้าไปในโค้ดของคุณเพื่อดูว่าเหตุใดจึงทำงานในลักษณะที่เป็นอยู่? ตามเนื้อผ้าในโครงการ ESP32 คุณจะต้องเพิ่มคำสั่งการพิมพ์ไม่รู้จบเพื่อลองค้นหาว่าเกิดอะไรขึ้น แต่มีวิธีที่ดีกว่า!

ดีบักเกอร์เป็นวิธีหนึ่งในการดูว่าเกิดอะไรขึ้นในส่วนใดส่วนหนึ่งของโค้ดของคุณ และเพื่อลองใช้ค่าตัวแปรต่างๆ โดยไม่ต้องคอมไพล์โค้ดของคุณใหม่ โดยปกติแล้ว นี่ไม่ใช่สิ่งที่เราสามารถใช้ได้ในโปรเจ็กต์แบบฝัง แต่ในคู่มือนี้ ฉันจะแสดงให้คุณเห็น วิธีใช้งานบน ESP32

ในคู่มือนี้ ฉันจะแสดงให้คุณเห็นถึงการตั้งค่าฮาร์ดแวร์ ตั้งค่าซอฟต์แวร์ และแสดงตัวอย่างง่ายๆ ของการใช้ดีบักเกอร์

เสบียง

  • ESP-Prog - นี่คือบอร์ดที่จำเป็นสำหรับการดีบัก

    • อันเดียวที่ฉันซื้อ*
    • ถูกกว่า $ 5 แต่ฉันยังไม่ได้ทดสอบ *
  • ESP32 ที่แยกพิน 12, 13, 14, 15

    • Adafruit Feather Huzzah32
    • D1 มินิ ESP32*
  • [ไม่บังคับ] Debug Shield ที่ฉันขายใน Tindie

    • Feather Huzzah32
    • D1 มินิ ESP32

* = ลิงค์พันธมิตร

ขั้นตอนที่ 1: ดูวิดีโอ

Image
Image

ฉันมีวิดีโอเกี่ยวกับหัวข้อนี้หากคุณต้องการตรวจสอบ

ในช่องของฉัน ฉันมักจะสร้างวิดีโอที่ใช้ ESP8266 และ ESP32 ดังนั้น หากคุณสนใจในวิดีโอเหล่านั้น โปรดลองดู!

ขั้นตอนที่ 2: ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ

ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ

ในการใช้ดีบักเกอร์ คุณจะต้องใช้ ESP-Prog และบอร์ด ESP32 เกือบทั้งหมด (ลิงก์ไปยังสิ่งเหล่านี้ในขั้นตอนก่อนหน้า)

ESP-Prog:

ESP-Prog เป็นบอร์ดที่ออกแบบโดย espressif ซึ่งเป็นผู้ผลิตชิป ESP32 และ ESP8266 มันเชื่อมต่อกับหมุด JTAG ของ ESP32 เพื่อให้เราใช้ดีบักเกอร์ได้ นอกจากนี้ยังสามารถใช้สำหรับการเขียนโปรแกรมบอร์ด ESP32 ได้อีกด้วย แต่ฉันจะไม่กล่าวถึงที่นี่

บอร์ด ESP32:

โดยพื้นฐานแล้วคุณสามารถใช้บอร์ด ESP32 ใดก็ได้สำหรับสิ่งนี้เมื่อแยกหมุด JTAG ซึ่งก็คือ 12, 13, 14 และ 15 ฉันได้ทดสอบทั้ง Adafruit feather Huzzah32 และบอร์ด D1 Mini 32 แล้วและทั้งคู่ก็ทำงานได้ดี

โปรดทราบว่าคุณสามารถใช้หมุด JTAG ในแบบร่างของคุณกับดีบักเกอร์ได้ ตัวอย่างเช่น LED ในตัวของบอร์ด Huzzah32 อยู่ที่พิน 13 ดังนั้นคุณจึงไม่สามารถใช้งานได้ในขณะที่ทำการดีบั๊ก

การเดินสายไฟ:

ในการเชื่อมต่อ ESP-Prog กับ ESP32 เพียงใช้คู่มือการเดินสายตามที่ให้ไว้ในภาพด้านบน ตรวจสอบแผนภาพการเดินสายไฟของบอร์ด ESP32 หากคุณไม่เห็นหมุดที่เหมาะสมในทันที เนื่องจากบางครั้งหมุดใช้รูปแบบการตั้งชื่อที่ต่างออกไป

ดีบักโล่:

สิ่งเหล่านี้เป็นทางเลือก แต่ฉันขายเกราะป้องกันบน Tindie สำหรับ Huzzah32 และ D1 Mini 32 ที่ทำให้การเชื่อมต่อ ESP-Prog เป็นเรื่องง่ายมาก มันแยกพินที่เหมาะสมกับตัวเชื่อมต่อ IDC ซึ่งคุณสามารถใช้สายแพเพื่อเชื่อมต่อโดยตรงระหว่าง โล่และ ESP-Prog

ขั้นตอนที่ 3: ฮาร์ดแวร์ - การติดตั้งไดรเวอร์

ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
ฮาร์ดแวร์ - การติดตั้งไดรเวอร์

เพื่อที่จะใช้ ESP-prog สำหรับการดีบัก เราจำเป็นต้องติดตั้งไดรเวอร์ที่เหมาะสมสำหรับมัน PlatformIO มีขั้นตอนบางอย่างสำหรับเรื่องนี้ แต่ฉันจะทำตามขั้นตอนของ Windows ในคู่มือนี้

  1. ดาวน์โหลดและติดตั้งไดรเวอร์ FTDI สำหรับ ESP-Prog จากที่นี่ เลื่อนไปทางขวาเพื่อดาวน์โหลดเวอร์ชัน "ปฏิบัติการตั้งค่า" เพื่อให้ง่ายขึ้น
  2. ดาวน์โหลดและติดตั้งเครื่องมือ Zadig จากที่นี่ ซึ่งช่วยให้เราติดตั้งไดรเวอร์ทั่วไปที่จำเป็นสำหรับการดีบักได้
  3. เมื่อเสียบปลั๊ก ESP-Prog แล้ว ให้เปิด Zadig
  4. ในแอปพลิเคชัน Zadig ในส่วน "ตัวเลือก" ให้คลิก "แสดงรายการอุปกรณ์ทั้งหมด"
  5. เมนูแบบเลื่อนลงใน Zadig จะถูกเติม เลือกตัวเลือก "Dual RS232-HS (อินเทอร์เฟซ 0)" ตรวจสอบให้แน่ใจว่าเป็นอินเทอร์เฟซ 0 ที่คุณเลือก!
  6. ทางด้านขวาของลูกศรสีเขียว ควรเลือก "WinUSB" จากนั้นคลิก "แทนที่ไดรเวอร์"

เมื่อเสร็จแล้วไดรเวอร์ของคุณควรได้รับการตั้งค่าสำหรับการใช้งาน!

หมายเหตุ: หากคุณเปลี่ยนพอร์ต USB ที่คุณใช้สำหรับ ESP-Prog คุณอาจต้องทำซ้ำขั้นตอนที่ 3-6 อีกครั้ง หากคุณได้รับข้อผิดพลาดตามที่แสดงในภาพด้านบนเมื่อทำการดีบั๊ก คุณต้องทำตามขั้นตอนซ้ำ

ขั้นตอนที่ 4: ซอฟต์แวร์: การติดตั้ง PlatformIO

ซอฟต์แวร์: การติดตั้ง PlatformIO
ซอฟต์แวร์: การติดตั้ง PlatformIO
ซอฟต์แวร์: การติดตั้ง PlatformIO
ซอฟต์แวร์: การติดตั้ง PlatformIO
ซอฟต์แวร์: การติดตั้ง PlatformIO
ซอฟต์แวร์: การติดตั้ง PlatformIO

PlatformIO เป็น IDE สำหรับการพัฒนาด้วยเฟรมเวิร์กฝังตัวต่างๆ รวมถึงระบบนิเวศ Arduino การใช้งานมีความซับซ้อนมากกว่าบางอย่างเช่น Arduino IDE แต่มีประสิทธิภาพมากและมีคุณสมบัติบางอย่างที่ Arduino IDE พลาดอย่างมาก เช่น การเติมข้อความอัตโนมัติ

จำเป็นต้องใช้ PlatformIO เพื่อใช้ดีบักเกอร์ หากคุณคุ้นเคยกับ PlatformIO อยู่แล้ว ข้ามไปสองสามขั้นตอนได้เลย

  • ดาวน์โหลดและติดตั้ง Visual Studio Code (VS Code) จากลิงค์ที่ให้ไว้บนเว็บไซต์ PlatformIO.org
  • เปิด VS Code และเปิดเมนูส่วนขยาย ปุ่มจะถูกเน้นในภาพด้านบน
  • พิมพ์ "platformio" ในการค้นหา เลือกแล้วคลิกติดตั้ง

ขั้นตอนที่ 5: ซอฟต์แวร์: การใช้ PlatformIO

ซอฟต์แวร์: การใช้ PlatformIO
ซอฟต์แวร์: การใช้ PlatformIO
ซอฟต์แวร์: การใช้ PlatformIO
ซอฟต์แวร์: การใช้ PlatformIO
ซอฟต์แวร์: การใช้ PlatformIO
ซอฟต์แวร์: การใช้ PlatformIO

การใช้ PlatformIO นั้นแตกต่างจากการใช้ Arudino IDE เล็กน้อย ดังนั้นในขั้นตอนนี้ เราจะครอบคลุมถึงพื้นฐานของการเรียกใช้ตัวอย่างบนบอร์ด

การเปิดตัวอย่าง:

  1. คลิกปุ่มโฮมบนแถบเครื่องมือ PlatformIO (ดังแสดงในภาพ)
  2. คลิกปุ่ม "ตัวอย่างโครงการ"
  3. เลือกตัวอย่าง "Arduino-blink" ใต้ส่วน Espressif 32

ซึ่งจะเปิดตัวอย่างโครงการกะพริบตา เลย์เอาต์ของ PlatformIO ค่อนข้างแตกต่างเมื่อเทียบกับโปรเจ็กต์ Arduino ดังนั้นเรามาทำความเข้าใจพื้นฐานกัน

รหัสอยู่ที่ไหน

รหัสสำหรับโครงการของคุณจะถูกเก็บไว้ในโฟลเดอร์ "src" สำหรับตัวอย่างการกะพริบคุณจะเห็นไฟล์ "blink.cpp" ไฟล์นี้จะเหมือนกับไฟล์สเก็ตช์ของคุณ (.ino) ในโครงการ Arduino

ฉันจะกำหนดค่าบอร์ดของฉันได้อย่างไร?

การกำหนดค่าสำหรับโครงการของคุณจะถูกเก็บไว้ในไฟล์ "platformio.ini" ในโครงการของคุณ นี่เป็นหนึ่งในสิ่งที่ฉันโปรดปรานเกี่ยวกับ PlatformIO เมื่อเทียบกับ Arduino IDE ฉันไม่เคยคิดว่าการตั้งค่าบอร์ดไม่ได้ผูกติดอยู่กับการสเก็ตช์

ตัวอย่าง.ini มีคำจำกัดความสำหรับกระดานต่างๆ แต่เพื่อให้ง่ายขึ้น เรามาลบคำจำกัดความสองรายการด้านล่าง

ฉันจะตั้งค่าพอร์ต COM ได้ที่ไหน

PlatformIO จะพยายามค้นหาพอร์ต COM ที่ถูกต้องโดยอัตโนมัติเพื่อใช้งาน คุณจึงไม่ต้องตั้งค่าอะไรเลย แต่ถ้าคุณมีพอร์ต COM หลายพอร์ต ซึ่งคุณจะทำได้เมื่อใช้ดีบักเกอร์ ฉันคิดว่าควรตั้งค่าพอร์ตเฉพาะที่คุณต้องการ คุณสามารถดูอุปกรณ์ต่างๆ ที่คุณมีได้โดยคลิกส่วน "อุปกรณ์" ในแท็บหน้าแรก และ คุณสามารถตั้งค่าให้ ESP32 ของคุณอยู่ใน "platformio.ini" โดยเพิ่มการกำหนดค่า "upload_port"

ฉันจะอัปโหลดรหัสของฉันได้อย่างไร

คลิกที่ปุ่มอัปโหลด (ไอคอนเป็นลูกศรชี้ไปทางขวา) และควรรวบรวมและอัปโหลดโค้ด ตอนนี้คุณควรมีไฟ LED กะพริบบนบอร์ดของคุณ

ขั้นตอนที่ 6: การดีบัก: ผิวกล้วยที่มีศักยภาพ

การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!
การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!
การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!
การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!
การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!
การแก้จุดบกพร่อง: ผิวกล้วยที่มีศักยภาพ!

นี่คือสิ่งที่ดึงดูดใจฉันตอนที่ฉันกำลังเตรียมสิ่งนี้ และหวังว่าจะได้รับการแก้ไขเมื่อคุณลองทำ แต่ฉันคิดว่ามันสำคัญที่ต้องออกจากที่นี่

ในขณะที่จัดทำคู่มือนี้ PlatformIO เวอร์ชันล่าสุดคือ 4.3.0 และมีข้อบกพร่องที่เกี่ยวข้องกับความสามารถในการแก้ไขข้อบกพร่อง โชคดีที่เราสามารถอัปเดตเป็นเวอร์ชันการพัฒนาล่าสุดได้อย่างง่ายดายซึ่งช่วยแก้ปัญหาได้

ตรวจสอบโฮมเพจเวอร์ชันของ Core PlatformIO หากเป็น "4.3.0" ให้ทำตามขั้นตอนต่อไปนี้

  1. บนแถบเครื่องมือ PlatformIO คลิกไอคอนเทอร์มินัล
  2. ในประเภทเทอร์มินัล: pio upgrade --dev
  3. ควรอัปเดตโค้ด RestartVS และ PlatfromIO

ขั้นตอนที่ 7: การดีบัก: การกำหนดค่า

การดีบัก: การกำหนดค่า
การดีบัก: การกำหนดค่า

เราจำเป็นต้องแก้ไขไฟล์ "PlatofrmIO.ini" เพื่อเปิดใช้งานการดีบัก เราจำเป็นต้องเพิ่มสองสิ่งเข้าไปเท่านั้น

debug_tool = esp-prog

นี่เป็นชุดเครื่องมือดีบั๊กที่เรากำลังใช้

debug_init_break = ตั้งค่า tbreak

นี่เป็นเคล็ดลับที่เราได้เรียนรู้จากวิดีโอของ Andress Spiess เกี่ยวกับการดีบักบน ESP32 มันบอกให้ดีบักเกอร์หยุดในการตั้งค่าแอปพลิเคชันของเรา

ขั้นตอนที่ 8: การดีบัก: การเริ่มต้นการดีบัก

การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก
การดีบัก: การเริ่มต้นการดีบัก

ก่อนที่เราจะพูดถึงเรื่องนี้ เราจะทำการเปลี่ยนแปลงเล็กน้อยกับภาพสเก็ตช์ ซึ่งจะทำให้ง่ายต่อการสาธิตว่าคุณสามารถทำอะไรกับการดีบักได้บ้าง

  1. สร้างตัวแปรใหม่ "int delayTime = 1000;" นอกเหนือจากวิธีการใด ๆ สิ่งนี้จะทำให้เป็นตัวแปรส่วนกลาง
  2. แทนที่ตัวเลขภายในการเรียกล่าช้าในลูปด้วยตัวแปรใหม่นี้: delay(delayTime);

อัปโหลดโค้ดไปที่บอร์ดอีกครั้ง จากนั้นเพื่อเริ่มการดีบัก ในแถบเครื่องมือ คลิก "เรียกใช้" จากนั้น "เริ่มการดีบัก"

คุณจะเห็นสิ่งต่าง ๆ เคลื่อนไหวในหน้าต่างเทอร์มินัล แต่ถึงแม้จะระบุว่าสำเร็จแล้ว หากคุณคลิกที่ "คอนโซลดีบัก" คุณจะเห็นว่ามันยังคงทำงานอยู่ จะใช้เวลาสองสามวินาทีในการดำเนินการให้เสร็จสิ้น

หากทุกอย่างเป็นไปตามที่คาดไว้ คุณจะเห็นดีบักเกอร์หยุดทำงานเมื่อเริ่มต้นการตั้งค่า

ขั้นตอนที่ 9: การดีบัก: การใช้งานพื้นฐาน

การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน
การดีบัก: การใช้งานพื้นฐาน

มาพูดถึงพื้นฐานบางอย่างของสิ่งที่คุณสามารถทำได้ด้วยดีบักเกอร์กัน

การสร้างเบรกพอยต์:

เบรกพอยต์เป็นจุดของรหัสที่คุณต้องการให้ดีบักเกอร์หยุด หากต้องการสร้างเบรกพอยต์ ให้คลิกที่ด้านซ้ายของหมายเลขบรรทัด ในการสาธิต ให้เพิ่มเบรกพอยต์ที่บรรทัดแรกในวิธีวนซ้ำ

การนำทางเบรกพอยต์:

หากต้องการย้ายไปมาระหว่างจุดพักหรือย้ายไปยังบรรทัดถัดไปของโค้ด คุณสามารถใช้เครื่องมือที่จะปรากฏที่ด้านบนของหน้าจอได้ กดปุ่ม "ดำเนินการต่อ" (ดูเหมือนปุ่มเล่น) เพื่อย้ายจุดพักที่เราเพิ่งสร้างขึ้นภายในลูป

นาฬิกาตัวแปร:

นาฬิกาตัวแปรช่วยให้คุณตรวจสอบค่าของตัวแปรได้เมื่อดีบักเกอร์หยุดที่จุดพัก หากต้องการเพิ่มนาฬิกาตัวแปรใหม่ คุณสามารถคลิกที่ไอคอน + จากนั้นพิมพ์ชื่อของตัวแปร ในการสาธิต ให้พิมพ์ตัวแปรที่เราเพิ่มในขั้นตอนก่อนหน้า "delayTime"

โปรแกรมดูตัวแปร:

คุณยังสามารถดูตัวแปรทั้งหมดและค่าของตัวแปรที่มีอยู่ที่เบรกพอยต์ปัจจุบันของคุณได้ หากต้องการสาธิตสิ่งนี้ หากคุณดูในส่วน "สากล" คุณจะพบตัวแปร "delayTime"

การแก้ไขค่าของตัวแปร:

คุณยังสามารถแก้ไขค่าของตัวแปรได้ และจะมีผลกับพฤติกรรมโค้ดของคุณทันที เพื่อแสดงสิ่งนี้ ให้คลิกที่ตัวแปร delayTime ในส่วน Variable Viewer และเปลี่ยนค่าเป็น "100" หากต้องการแสดงการทำงานนี้ ให้ปิดใช้งานเบรกพอยต์ภายในลูปโดยคลิกทางด้านซ้ายของหมายเลขบรรทัดอีกครั้ง กดปุ่มดำเนินการต่อบนแถบนำทางของเบรกพอยต์ ไฟ LED บน ESP32 ของคุณควรกะพริบเร็วกว่าเมื่อก่อนมาก

ขั้นตอนที่ 10: การแก้ไขปัญหา

การแก้ไขปัญหา
การแก้ไขปัญหา

ฉันพบว่าระหว่างการทดสอบ บางครั้งฉันไม่สามารถอัปโหลดไปยัง ESP32 ในขณะที่เชื่อมต่อกับ ESP-prog และฉันไม่สามารถหารูปแบบที่ว่าทำไมสิ่งนี้ถึงเกิดขึ้น เพราะโดยส่วนใหญ่แล้วฉันสามารถอัปโหลดได้โดยไม่ต้อง ปัญหาใดๆ ฉันพบว่าฉันสามารถยกเลิกการเชื่อมต่อ ESP32 และ ESP-Prog ได้ อัปโหลดรหัสไปยัง ESP32 แล้วเชื่อมต่อใหม่อีกครั้ง และมันจะทำงานได้ดี

ขั้นตอนที่ 11: บทสรุป

ฉันคิดว่านี่เป็นเครื่องมือที่ยอดเยี่ยมมากที่จะเพิ่มลงในกล่องเครื่องมือเพื่อช่วยในการค้นหาว่าเกิดอะไรขึ้นในโครงการของคุณ

ฉันชอบที่จะได้ยินถ้าคุณพบว่ามีประโยชน์! โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง หรือเข้าร่วมกับฉันและผู้ผลิตรายอื่นๆ บนเซิร์ฟเวอร์ Discord ของฉัน ที่ซึ่งเราสามารถพูดคุยเกี่ยวกับหัวข้อนี้หรือผู้ผลิตรายอื่นๆ ที่เกี่ยวข้องกับสิ่งที่คุณมี ผู้คนช่วยเหลือดีที่นั่น จึงเป็นที่ที่ดี ออก.

ฉันยังอยากจะขอบคุณมากสำหรับผู้สนับสนุน Github ของฉันที่ช่วยสนับสนุนสิ่งที่ฉันทำ ฉันรู้สึกซาบซึ้งจริงๆ หากคุณไม่ทราบ Github กำลังจับคู่การสนับสนุนสำหรับปีแรก ดังนั้นหากคุณเป็นผู้สนับสนุน พวกเขาจะจับคู่ 100% ในอีกไม่กี่เดือนข้างหน้า ขอบคุณที่อ่าน!

แนะนำ: