สารบัญ:
- ขั้นตอนที่ 1: ข้อกำหนดเฉพาะของซอฟต์แวร์
- ขั้นตอนที่ 2: การติดตั้งไดรเวอร์และการกำหนดค่า
- ขั้นตอนที่ 3: OpenOCD, Toolchain และ Gdb
- ขั้นตอนที่ 4: การเดินสายไฟและการทดสอบครั้งแรก
- ขั้นตอนที่ 5: เพิ่มการกำหนดค่าการดีบักให้กับ Visual Studio Code
วีดีโอ: ESP32 - โซลูชันราคาถูกสำหรับการดีบักวงจร: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
สวัสดี ในคำแนะนำนี้อธิบายวิธีการตั้งค่าอะแดปเตอร์ JTAG ราคาถูกโดยใช้ชิป FTDI 2232HL พร้อมรหัสภาพและส่วนเสริม Arduino
- โมดูล FTDI 2232HL พร้อมขั้วต่อ USB เริ่มต้นที่ 8$ บน ebay และไม่มีซอฟต์แวร์ที่ต้องชำระเงิน นี่เป็นทางออกที่ยอดเยี่ยมสำหรับผู้ที่ชื่นชอบงานอดิเรกที่ไม่ต้องการจ่าย 50$+ กับอแดปเตอร์ JTAG แบบมืออาชีพ
- อะแดปเตอร์นี้สามารถใช้สำหรับการดีบักของแพลตฟอร์มอื่น ๆ เช่น ESP8266, ARM, AVR และอื่น ๆ อีกมากมาย การกำหนดค่าบางอย่างขึ้นอยู่กับแพลตฟอร์มเป้าหมาย คำแนะนำนี้ครอบคลุมเฉพาะการตั้งค่าสำหรับ ESP32
- หากคุณเป็นเจ้าของอแด็ปเตอร์ JTAG อยู่แล้ว คุณสามารถใช้มันเมื่อได้รับการสนับสนุนโดย openOCD เพียงแค่เริ่ม openocd ด้วยไฟล์คอนฟิกูเรชันที่แตกต่างกันตามประเภทของอแดปเตอร์ jtag ของคุณ
- platform.io สามารถทำให้การตั้งค่าของคุณง่ายขึ้น แต่การดีบักได้รับการสนับสนุนในเวอร์ชันมืออาชีพที่ต้องชำระเงินเท่านั้น
- ทำงานร่วมกับโมดูล ESP32 ส่วนใหญ่ (เช่น wemos ราคาถูก lolin 32)
- อะแดปเตอร์ jtag นี้ควรใช้งานได้กับ linux เช่นกัน แต่โดยส่วนตัวแล้วฉันไม่ได้ทดสอบ
ขั้นตอนที่ 1: ข้อกำหนดเฉพาะของซอฟต์แวร์
Arduino IDE เวอร์ชัน 1.8 หรือใหม่กว่า ไม่รองรับเวอร์ชันร้านค้า Windows คุณต้องใช้ตัวติดตั้งแบบคลาสสิกซึ่งสามารถดาวน์โหลดได้จากหน้า Arduino อย่างเป็นทางการ
โค้ด Microsoft Visual Studio
ส่วนเสริมเหล่านี้สำหรับรหัส Visual Studio เป็นข้อบังคับ
- Arduino
- ดีบักเนทีฟ
ฉันยังแนะนำให้ติดตั้งส่วนเสริมนี้ซึ่งเปิดใช้งาน Intelisense สำหรับ C/C++
C/C++
ในคู่มือนี้ ฉันจะใช้ 2 โฟลเดอร์การทำงาน:
D:\devel\ESP32\tools\ - ที่นี่ฉันได้วางเครื่องมือทั้งหมดแล้ว
C:\Users\xxxx\Documents\Arduino\YourProject\ - นี่คือโฟลเดอร์ที่มีภาพร่าง
คุณสามารถวางไฟล์ของคุณไว้ที่อื่นได้หากต้องการ โปรดอย่าลืมอัปเดตข้อมูลอ้างอิงทั้งหมดด้วยเส้นทางจริงของคุณ
ขั้นตอนที่ 2: การติดตั้งไดรเวอร์และการกำหนดค่า
แม้ว่า windows จะตรวจหา FT2232 โดยอัตโนมัติตามค่าเริ่มต้น ไดรเวอร์เริ่มต้นของ Windows ก็ไม่เพียงพอสำหรับคุณลักษณะขั้นสูงทั้งหมด และจำเป็นต้องดาวน์โหลดและติดตั้งไดรเวอร์จากเว็บไซต์ FTDI
เมื่อติดตั้งไดรเวอร์ที่ถูกต้องแล้ว คุณจะเห็นโมดูล FT2232 ของคุณในตัวจัดการอุปกรณ์ ไม่เพียงแต่เป็นพอร์ตอนุกรม 2 พอร์ต แต่ยังเป็น "ตัวแปลงอนุกรม USB A" และ "ตัวแปลงอนุกรม USB B"
ขั้นตอนที่สองคือเปลี่ยนไดรเวอร์สำหรับหนึ่งช่องสัญญาณของตัวแปลงของเรา ดาวน์โหลดเครื่องมือ zadig จาก https://zadig.akeo.ie/ ถ้าฉันเข้าใจถูกต้องว่าเครื่องมือนี้เชื่อมโยงไดรเวอร์ winUSB กับอุปกรณ์ FTDI ซึ่งเปิดใช้งานการสื่อสารระดับต่ำระหว่างอุปกรณ์ openOCD และ USB
ในเครื่องมือ zadig ในเมนู "ตัวเลือก" ให้เลือก "แสดงอุปกรณ์ทั้งหมด" จากนั้นคุณจะเห็นอะแดปเตอร์ของคุณในรายการอุปกรณ์ที่พร้อมใช้งาน เลือก "Dual RS232-HS (Interface 0)" จากนั้นเลือกไดรเวอร์สำรอง "WinUSB v6.1.xxxx" และคลิกปุ่มแทนที่ไดรเวอร์สุดท้าย
เมื่อคุณเชื่อมต่ออะแดปเตอร์เข้ากับพอร์ต USB อื่นของคอมพิวเตอร์ จำเป็นต้องเปลี่ยนการตั้งค่าไดรเวอร์ผ่านเครื่องมือ zadig อีกครั้ง เนื่องจาก openOCD จะไม่พบอะแดปเตอร์ของคุณ
ขั้นตอนที่ 3: OpenOCD, Toolchain และ Gdb
1. Open OCD เป็นเครื่องมือสำหรับการดีบักวงจร โดยด้านหนึ่งจะพูดถึงชิปในอีกด้านหนึ่ง ซึ่งมีเซิร์ฟเวอร์ gdb ที่ตัวดีบั๊ก (ไคลเอ็นต์) สามารถเชื่อมต่อได้ ดาวน์โหลด openOCD สำหรับ ESP32 จาก https://github.com/espressif/openocd-esp32/releases และแตกไฟล์ลงในโฟลเดอร์ D:\devel\ESP32\tools
2. แก้ไขไฟล์การกำหนดค่า openOCD:
esp-wroom-32.cfg
เส้นทางแบบเต็มไปยังไฟล์นี้คือ:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg
ในไฟล์นี้ คุณสามารถตั้งค่าความเร็วในการสื่อสารโดยเปลี่ยนพารามิเตอร์ "adapter_khz" ตัวอย่างเช่น "adapter_khz 8000" หมายถึง 8Mhz
ค่าเริ่มต้นคือ 20MHz และอาจสูงเกินไปหากคุณใช้สายจัมเปอร์หรือเขียงหั่นขนมที่ยาวกว่า ฉันแนะนำให้เริ่มต้นที่ 1Mhz และหากทุกอย่างเรียบร้อย ให้ไปที่ความเร็วที่สูงขึ้น สำหรับฉัน 8Mhz ทำงานได้อย่างน่าเชื่อถือ
minimodule.cfg
เส้นทางแบบเต็มไปยังไฟล์นี้คือ: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg
ถ้าฉันเข้าใจถูกต้อง minimodule ของแท้คือบอร์ดเบรกเกินราคาด้วย FT 2232 ที่ผลิตโดย FTDI และความแตกต่างระหว่างโมดูลขนาดเล็กของแท้กับโมดูลราคาถูกหรือชิปเปล่าที่มีจำหน่ายในท้องตลาดคือคำอธิบาย USB เริ่มต้น open OCD กำลังมองหาอะแดปเตอร์ jtag ตามคำอธิบายอุปกรณ์และจำเป็นต้องปรับเลย์เอาต์ของ init ด้วย
โมดูลราคาถูกมีคำอธิบาย "Dual RS232-HS" หากคุณไม่แน่ใจเกี่ยวกับรายละเอียดของอุปกรณ์ของคุณ คุณสามารถตรวจสอบได้ในตัวจัดการอุปกรณ์ -> คุณสมบัติของอุปกรณ์ -> รายละเอียดแท็บ -> ค่าของคุณสมบัติ "Bus รายงานรายละเอียดอุปกรณ์"
เนื้อหาของ minimodule.cfg ควรมีลักษณะเหมือนตัวอย่างด้านล่าง บรรทัดที่ขึ้นต้นด้วย # สามารถลบได้
อินเทอร์เฟซ 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 0x000bsignal ftdi_n0020ST
esp32.cfg
เส้นทางแบบเต็มไปยังไฟล์นี้คือ:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\target\esp32.cfg
ต่อท้าย 2 บรรทัดต่อท้าย esp32.cfg หากไม่มีการปรับเปลี่ยนนี้ การเพิ่มจุดเบรกจะไม่ทำงาน
#แรงเบรกพอยท์ เมื่อเรามีแผนที่หน่วยความจำแล้ว เรายังสามารถอนุญาตซอฟต์แวร์ bps.gdb_breakpoint_override hard
3. ดาวน์โหลดและติดตั้ง xtensa-esp32-elf toolchain - toolchain นี้มีดีบักเกอร์บรรทัดคำสั่ง (ไคลเอนต์ gdb) ซึ่งมีความสำคัญต่อการดีบักการทำงานจาก IDE แบบกราฟิกใดๆ Bare toolchain สามารถดาวน์โหลดได้จากเว็บไซต์ espressif ส่วน "การตั้งค่าทางเลือก"
ขั้นตอนที่ 4: การเดินสายไฟและการทดสอบครั้งแรก
เชื่อมต่อโมดูล FT2322 กับ ESP ฉันขอแนะนำให้ใช้สายไฟที่สั้นที่สุด หากคุณยังใหม่กับ JTAG อย่าลืมว่า TDI ของอะแดปเตอร์จะไปที่ TDI ของชิป และ TDO ของอะแดปเตอร์จะไปที่ TDO ของชิปด้วย สายข้อมูล JTAG ไม่ถูกข้ามเหมือน Rx/Tx บน uart!
สำหรับการทดสอบต่อไปนี้ ผมขอแนะนำให้อัปโหลดภาพตัวอย่างการกะพริบตาหรือภาพร่างอื่นๆ ซึ่งสามารถระบุได้ว่า CPU ทำงานอยู่หรือไม่โดยไฟ LED กะพริบหรือส่งเสียงบี๊บหรือเขียนไปยังคอนโซลซีเรียล
เริ่ม openOCD โดยทำตามคำสั่ง
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 บอร์ด /esp-wroom-32.cfg
สิ่งนี้จะเริ่มต้น openOCD และหากทุกอย่างเรียบร้อย คุณจะเห็นในเอาต์พุตบรรทัดคำสั่งประกอบด้วยบรรทัดต่อไปนี้:
ข้อมูล: clock speed 8000 kHzInfo: JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003 ver: 0x1) Info: JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica) ส่วน: 0x2003 เวอร์ชั่น: 0x1)
กระบวนการ openocd จะฟังบนพอร์ต TCP 3333. ด้วย
เปิดเทอร์มินัลใหม่และเริ่มต้นไคลเอนต์บรรทัดคำสั่ง gdb โดยทำตามcomand
D:\devel\ESP32\tools\xtensa-esp32-elf\bin\xtensa-esp32-elf-gdb.exe
รอสักครู่และเมื่อเทอร์มินัล gdb พร้อมเขียนคำสั่งต่อไปนี้ทีละตัว
เป้าหมายระยะไกล:3333mon หยุดรีเซ็ต ดำเนินการต่อ
คำสั่งแรกเปิดการเชื่อมต่อกับเซิร์ฟเวอร์ดีบัก openocd คำสั่งที่สองจะหยุดการทำงานของโปรแกรมบน ESP และ LED ควรหยุดกะพริบ เรียกคืนการทำงานของโปรแกรมต่อไป และ LED ควรเริ่มกะพริบอีกครั้ง
ขั้นตอนที่ 5: เพิ่มการกำหนดค่าการดีบักให้กับ Visual Studio Code
ฉันถือว่า ณ จุดนั้นคุณได้กำหนดค่ารหัส visual studio และ arduino addon อย่างถูกต้องแล้ว และคุณสามารถตรวจสอบและอัปโหลดภาพร่างของคุณไปยังบอร์ดได้ หากไม่เป็นเช่นนั้น โปรดตรวจสอบคำแนะนำวิธีกำหนดค่ารหัส visual studio และ arduino เช่นในหน้านี้
ในการรับการดีบักจำเป็นต้องระบุโฟลเดอร์เอาต์พุตของบิลด์ ใต้โฟลเดอร์สเก็ตช์ของคุณจะมีโฟลเดอร์ (ซ่อนอยู่).vscode โดยที่ไฟล์คือ arduino.json เพิ่มในไฟล์นี้บรรทัดต่อไปนี้:
"output": "บิลด์เอาท์พุต/"
เรียกใช้การตรวจสอบหรืออัปโหลดและตรวจสอบโฟลเดอร์สเก็ตช์ของคุณอีกครั้ง ควรมีโฟลเดอร์ BuildOutput ใหม่และภายในไฟล์ที่มีนามสกุล.elf ไฟล์เอลฟ์มีความสำคัญต่อการดีบัก
การตั้งค่าดีบักเกอร์อยู่ในไฟล์ launch.json สร้างไฟล์นี้ด้วยเนื้อหาต่อไปนี้ หรือคุณสามารถคัดลอกไฟล์นี้จากโครงการตัวอย่างที่แนบมา อย่าลืมปรับบรรทัดที่ 26 และกำหนดเส้นทางที่ถูกต้องไปยังไฟล์.elf ของโครงการ
{ // ใช้ IntelliSense เพื่อเรียนรู้เกี่ยวกับแอตทริบิวต์ที่เป็นไปได้ // โฮเวอร์เพื่อดูคำอธิบายของแอตทริบิวต์ที่มีอยู่ // สำหรับข้อมูลเพิ่มเติม โปรดไปที่: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.20", "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" }, { //ตัวแปรไดนามิก "text": "file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf" //static Variable //"text": "file c:/Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf" }, { "text": "flushregs" }, { "text": "thb app_main" }, { "text": "c", "ignoreFailures": true }], "stopAtEntry": true, "serverStarted": "Info \: [w\d\.]*:\ hardware", "launchCompleteCommand": "exec-continue", "filterStderr": true, "args": }] }
วิธีเริ่มการดีบัก:
- ปฏิบัติตามและอัปโหลดภาพร่างของคุณไปยังบอร์ด
- เริ่ม openOCD ด้วยพารามิเตอร์
- ตั้งเบรกพอยต์ในรหัสที่คุณต้องการ
- หลังจากตั้งค่าเบรกพอยต์ทั้งหมดแล้ว ตรวจสอบให้แน่ใจว่าคุณได้เปิดไฟล์.ino หลักของโปรเจ็กต์แล้ว (หรือเส้นทางฮาร์ดโค้ดไปยังไฟล์.elf ใน launch.json)
- เปิดแผงดีบักในโค้ด vs (Ctrl + Shift + D)
- เลือกดีบักเกอร์ "Arduino-GDB-openOCD" ควรใช้งานได้เท่านั้น
- กด F5 เพื่อเริ่มการดีบัก
แนะนำ:
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: 9 ขั้นตอน (พร้อมรูปภาพ)
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: LineaMeteoStazione เป็นสถานีตรวจอากาศที่สมบูรณ์แบบซึ่งสามารถเชื่อมต่อกับเซ็นเซอร์ระดับมืออาชีพจาก Sensirion รวมถึงส่วนประกอบ Davis Instrument (Rain Gauge, เครื่องวัดความเร็วลม) โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อเป็นสถานีตรวจอากาศแบบ DIY แต่ต้องใช้
ความแรงของสัญญาณ ESP32 TTGO WiFi: 8 ขั้นตอน (พร้อมรูปภาพ)
ความแรงของสัญญาณ WiFi ESP32 TTGO: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีแสดงความแรงของสัญญาณเครือข่าย WiFi โดยใช้บอร์ด ESP32 TTGO ดูวิดีโอ
ESP32 Bluetooth Tutorial - วิธีใช้ Bluetooth ในตัวของ ESP32: 5 ขั้นตอน
ESP32 Bluetooth Tutorial | วิธีใช้ Bluetooth ในตัวของ ESP32: สวัสดีทุกคน เนื่องจากบอร์ด ESP32 มาพร้อมกับ WiFi & บลูทูธทั้งคู่ แต่สำหรับโปรเจ็กต์ส่วนใหญ่ เรามักจะใช้แค่ Wifi เราไม่ได้ใช้บลูทูธ ดังนั้นในคำแนะนำนี้ ฉันจะแสดงให้เห็นว่าการใช้บลูทูธของ ESP32 & สำหรับโครงการพื้นฐานของคุณ
เริ่มต้นใช้งาน ESP32 CAM - สตรีมวิดีโอโดยใช้ ESP CAM ผ่าน Wifi - โครงการกล้องรักษาความปลอดภัย ESP32: 8 ขั้นตอน
เริ่มต้นใช้งาน ESP32 CAM | สตรีมวิดีโอโดยใช้ ESP CAM ผ่าน Wifi | โครงการกล้องรักษาความปลอดภัย ESP32: วันนี้เราจะเรียนรู้วิธีใช้บอร์ด ESP32 CAM ใหม่นี้ และวิธีที่เราสามารถเข้ารหัสและใช้เป็นกล้องรักษาความปลอดภัยและรับการสตรีมวิดีโอผ่าน wifi
เริ่มต้นใช้งาน ESP32 - การติดตั้งบอร์ด ESP32 ใน Arduino IDE - ESP32 Blink Code: 3 ขั้นตอน
เริ่มต้นใช้งาน ESP32 | การติดตั้งบอร์ด ESP32 ใน Arduino IDE | รหัสการกะพริบของ ESP32: ในคำแนะนำนี้ เราจะดูวิธีการเริ่มทำงานกับ esp32 และวิธีการติดตั้งบอร์ด esp32 ลงใน Arduino IDE และเราจะตั้งโปรแกรม esp 32 เพื่อเรียกใช้โค้ดกะพริบโดยใช้ arduino ide