विषयसूची:

ESP32 - सर्किट डिबग के लिए सस्ता समाधान: 5 कदम
ESP32 - सर्किट डिबग के लिए सस्ता समाधान: 5 कदम
Anonim
ESP32 - सर्किट डिबग के लिए सस्ता समाधान
ESP32 - सर्किट डिबग के लिए सस्ता समाधान

नमस्कार, इस निर्देश में वर्णन किया गया है कि विज़ुअल कोड और आर्डिनो एडऑन के साथ FTDI 2232HL चिप पर आधारित सस्ते JTAG एडॉप्टर को कैसे सेट किया जाए।

- eBay पर 8$ से शुरू होने वाले USB कनेक्टर के साथ FTDI 2232HL मॉड्यूल और किसी भुगतान किए गए सॉफ़्टवेयर की आवश्यकता नहीं है। यह हॉबीस्ट के लिए बहुत अच्छा समाधान है जो पेशेवर सभी JTAG एडॉप्टर पर 50$+ खर्च नहीं करना चाहते हैं।

- इस एडॉप्टर का उपयोग अन्य प्लेटफॉर्म जैसे ESP8266, ARM, AVR और कई अन्य के डिबगिंग के लिए किया जा सकता है। कुछ कॉन्फ़िगरेशन लक्ष्य प्लेटफ़ॉर्म पर निर्भर करता है, यह निर्देश केवल ESP32 के लिए सेटअप को कवर करता है।

- यदि आपके पास पहले से ही कुछ JTAG एडॉप्टर है, तो आप इसका उपयोग तब कर सकते हैं जब यह openOCD द्वारा समर्थित हो, बस अपने jtag एडेप्टर के प्रकार के आधार पर विभिन्न कॉन्फ़िगरेशन फ़ाइल के साथ openocd प्रारंभ करें।

- platform.io आपके लिए सेटअप को आसान बना सकता है, लेकिन डिबग केवल सशुल्क पेशेवर संस्करण में समर्थित है।

- अधिकांश ESP32 मॉड्यूल के साथ काम करता है। (उदाहरण के लिए सस्ते वेमोस लोलिन 32)

- यह jtag एडेप्टर लिनक्स के साथ भी काम करना चाहिए, लेकिन मैंने व्यक्तिगत रूप से इसका परीक्षण नहीं किया।

चरण 1: सॉफ्टवेयर अनुलाभ

Arduino IDE संस्करण 1.8 या नया। विंडोज स्टोर संस्करण समर्थित नहीं है। आपको क्लासिक इंस्टॉलर संस्करण का उपयोग करना होगा जिसे आधिकारिक Arduino पेज https://www.arduino.cc. से डाउनलोड किया जा सकता है

माइक्रोसॉफ्ट विजुअल स्टूडियो कोड

विजुअल स्टूडियो कोड के लिए ये ऐडऑन अनिवार्य हैं

  • Arduino
  • नेटिव डिबग

मैं इस ऐडऑन को स्थापित करने की भी सिफारिश करता हूं जो सी/सी++ के लिए इंटेलिजेंस को सक्षम बनाता है

सी/सी++

इस मैनुअल में मैं 2 वर्किंग फोल्डर का उपयोग करूंगा:

D:\devel\ESP32\tools\ - यहां मैंने सभी टूल्स रखे हैं

C:\Users\xxxxx\Documents\Arduino\YourProject\ - यह स्केच वाला फोल्डर है

आप चाहें तो अपनी फाइलें कहीं और रख सकते हैं, बस कृपया अपने वास्तविक पथ के साथ सभी संदर्भों को अपडेट करना न भूलें।

चरण 2: ड्राइवर स्थापित और कॉन्फ़िगरेशन

ड्राइवर स्थापित करें और कॉन्फ़िगरेशन
ड्राइवर स्थापित करें और कॉन्फ़िगरेशन
ड्राइवर स्थापित करें और कॉन्फ़िगरेशन
ड्राइवर स्थापित करें और कॉन्फ़िगरेशन
ड्राइवर स्थापित करें और कॉन्फ़िगरेशन
ड्राइवर स्थापित करें और कॉन्फ़िगरेशन

भले ही विंडोज़ डिफ़ॉल्ट रूप से FT2232 का स्वचालित रूप से पता लगा लें, विंडोज़ डिफ़ॉल्ट ड्राइवर सभी अग्रिम सुविधाओं के लिए पर्याप्त नहीं हैं और FTDI साइट https://www.ftdichip.com/Drivers/VCP.htm से ड्राइवर को डाउनलोड और इंस्टॉल करना आवश्यक है।

जब सही ड्राइवर स्थापित होता है, तो आपको डिवाइस मैनेजर में अपना FT2232 मॉड्यूल न केवल 2 सीरियल पोर्ट के रूप में देखना चाहिए, बल्कि "USB सीरियल कन्वर्टर A" और "USB सीरियल कन्वर्टर B" के रूप में भी देखना चाहिए।

दूसरा चरण हमारे कनवर्टर के एक चैनल के लिए ड्राइवर बदलना है। zadig टूल को https://zadig.akeo.ie/ से डाउनलोड करें। अगर मैं सही ढंग से समझता हूं कि यह टूल winUSB ड्राइवर को FTDI डिवाइस से लिंक करता है जो ओपनओसीडी और यूएसबी डिवाइस के बीच निम्न स्तर के संचार को सक्षम बनाता है।

zadig टूल में, मेनू "विकल्प" में "सभी डिवाइस दिखाएं" चेक करें, फिर आपको उपलब्ध उपकरणों की सूची में अपना एडेप्टर देखना चाहिए। "डुअल RS232-HS (इंटरफ़ेस 0)" चुनें, फिर रिप्लेसमेंट ड्राइवर "WinUSB v6.1.xxxx" चुनें और फाइनली रिप्लेस ड्राइवर बटन पर क्लिक करें।

जब आप अपने एडॉप्टर को अपने कंप्यूटर के विभिन्न यूएसबी पोर्ट से कनेक्ट करते हैं, तो zadig टूल के माध्यम से ड्राइवर सेटिंग्स को फिर से बदलना आवश्यक है, अन्यथा ओपनओसीडी आपके एडेप्टर को नहीं ढूंढेगा।

चरण 3: ओपनओसीडी, टूलचैन और जीडीबी

ओपनओसीडी, टूलचैन और जीडीबी
ओपनओसीडी, टूलचैन और जीडीबी

1. ओपन ओसीडी सर्किट डिबगिंग के लिए उपकरण है, एक तरफ यह दूसरी तरफ चिप से बात करता है यह जीडीबी सर्वर प्रदान करता है जहां डीबगर (क्लाइंट) कनेक्ट हो सकता है। https://github.com/espressif/openocd-esp32/releases से ESP32 के लिए openOCD डाउनलोड करें और इसे फ़ोल्डर D:\devel\ESP32\tools\ में अनपैक करें

2. ओपनओसीडी विन्यास फाइल संपादित करें:

esp-wroom-32.cfg

इस फ़ाइल का पूरा पथ है:

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

इस फ़ाइल में आप परिवर्तन पैरामीटर "adapter_khz" द्वारा संचार की गति निर्धारित कर सकते हैं। उदाहरण के लिए "adapter_khz 8000" का अर्थ है 8Mhz।

डिफ़ॉल्ट 20 मेगाहर्ट्ज है और यदि आप लंबे जम्पर तारों या ब्रेडबोर्ड का उपयोग कर रहे हैं तो यह बहुत अधिक हो सकता है। मैं 1 मेगाहर्ट्ज से शुरू करने की सलाह देता हूं और अगर सब कुछ ठीक है, तो उच्च गति पर जाएं, मेरे लिए 8 मेगाहर्ट्ज मज़बूती से काम करता है।

मिनीमॉड्यूल.cfg

इस फ़ाइल का पूरा पथ है: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg

अगर मैं सही ढंग से समझूं, तो वास्तविक मिनीमॉड्यूल एफटीडीआई द्वारा निर्मित एफटी २२३२ के साथ अधिक कीमत वाला ब्रेकआउट बोर्ड है और वास्तविक मिनीमॉड्यूल और सस्ते मॉड्यूल या बाजार पर उपलब्ध नंगे चिप के बीच का अंतर डिफ़ॉल्ट यूएसबी विवरण है। ओपन ओसीडी डिवाइस विवरण के आधार पर jtag एडेप्टर की तलाश में है, लेआउट इनिट को भी समायोजित करने की आवश्यकता है।

सस्ते मॉड्यूल में "दोहरी RS232-HS" विवरण है। यदि आप अपने डिवाइस के विवरण के बारे में सुनिश्चित नहीं हैं, तो आप इसे डिवाइस मैनेजर -> डिवाइस गुण -> टैब विवरण -> संपत्ति का मूल्य "बस रिपोर्ट किए गए डिवाइस विवरण" में देख सकते हैं।

Minimodule.cfg की सामग्री नीचे दिए गए उदाहरण की तरह दिखनी चाहिए, # से शुरू होने वाली पंक्तियों को हटाया जा सकता है।

इंटरफ़ेस ftdi#ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "डुअल RS232-HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init20 0x0008 0x000b ftdi_layout_init 20 0x0008 0x000b ftdi_layout

esp32.cfg

इस फ़ाइल का पूरा पथ है:

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

Esp32.cfg के अंत में निम्नलिखित 2 पंक्तियाँ जोड़ें। इस संशोधन के बिना, ब्रेकप्वाइंट जोड़ने से काम नहीं चलेगा।

#Force hw ब्रेकप्वाइंट। एक बार हमारे पास मेमोरी मैप हो जाने के बाद, हम सॉफ्टवेयर bps.gdb_breakpoint_override हार्ड को भी अनुमति दे सकते हैं

3. डाउनलोड और इंस्टॉल करें xtensa-esp32-elf टूलचैन - इस टूलचेन में कमांड लाइन डीबगर (जीडीबी क्लाइंट) है जो किसी भी ग्राफिकल आईडीई से काम करने वाले डिबग के लिए महत्वपूर्ण है। बेयर टूलचेन को एस्प्रेसिफ साइट, अनुभाग "वैकल्पिक सेटअप" से डाउनलोड किया जा सकता है

चरण 4: वायरिंग और पहला टेस्ट

वायरिंग और पहला टेस्ट
वायरिंग और पहला टेस्ट
वायरिंग और पहला टेस्ट
वायरिंग और पहला टेस्ट

FT2322 मॉड्यूल को ESP से कनेक्ट करें। मैं यथासंभव छोटे तारों का उपयोग करने की अनुशंसा करता हूं। यदि आप JTAG के लिए नए हैं, तो यह न भूलें कि एडेप्टर का TDI चिप के TDI में जाएगा, साथ ही एडेप्टर का TDO चिप के TDO में जाएगा। JTAG डेटा लाइनों को uart पर Rx/Tx की तरह क्रॉस नहीं किया जाता है!

निम्नलिखित परीक्षण के लिए मैं अपलोड ब्लिंक उदाहरण स्केच या कुछ अन्य स्केच की सिफारिश करता हूं जो यह संकेत दे सकता है कि सीपीयू कब चल रहा है या नहीं एलईडी या बीपिंग या सीरियल कंसोल पर लिखकर।

कमांड का पालन करके ओपनओसीडी शुरू करें

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

यह ओपनओसीडी शुरू करेगा और यदि सब कुछ ठीक है तो आपको कमांड लाइन आउटपुट में निम्नलिखित पंक्तियां देखनी चाहिए:

जानकारी: घड़ी की गति 8000 kHz जानकारी: JTAG टैप: esp32.cpu0 टैप/डिवाइस मिला: 0x120034e5 (mfg: 0x272 (टेन्सिलिका), भाग: 0x2003, देखें: 0x1) जानकारी: JTAG टैप: esp32.cpu1 टैप/डिवाइस मिला: 0x120034e5 (एमएफजी: 0x272 (टेन्सिलिका), भाग: 0x2003, देखें: 0x1)

साथ ही TCP पोर्ट 3333 पर openocd प्रक्रिया सुनेगी

नया टर्मिनल खोलें और कमांड लाइन gdb क्लाइंट को कमांड का पालन करके शुरू करें

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

एक सेकंड प्रतीक्षा करें और जब जीडीबी टर्मिनल तैयार हो जाएगा तो निम्नलिखित कमांड एक-एक करके लिखें

लक्ष्य रिमोट:3333mon रीसेट पड़ाव जारी है

पहला कमांड openocd डिबग सर्वर से कनेक्शन खोलता है, दूसरा ESP पर प्रोग्राम के निष्पादन को रोक देगा और LED को ब्लिंक करना बंद कर देना चाहिए, प्रोग्राम निष्पादन को बहाल करना जारी रखना चाहिए और LED को फिर से ब्लिंक करना शुरू करना चाहिए।

चरण 5: विजुअल स्टूडियो कोड में डीबग कॉन्फ़िगरेशन जोड़ें

विजुअल स्टूडियो कोड में डीबग कॉन्फ़िगरेशन जोड़ें
विजुअल स्टूडियो कोड में डीबग कॉन्फ़िगरेशन जोड़ें

मुझे लगता है कि उस बिंदु पर आपने पहले से ही विजुअल स्टूडियो कोड और आर्डिनो एडऑन को ठीक से कॉन्फ़िगर कर लिया है और आप अपने स्केच को बोर्ड पर सत्यापित और अपलोड कर सकते हैं। यदि नहीं, तो कृपया कुछ निर्देश देखें कि विज़ुअल स्टूडियो कोड और आर्डिनो को कैसे कॉन्फ़िगर किया जाए, उदाहरण के लिए इस पृष्ठ पर

डिबग प्राप्त करने के लिए बिल्ड आउटपुट फोल्डर को निर्दिष्ट करना आवश्यक है। आपके स्केच फोल्डर के नीचे (हिडन) फोल्डर.vscode है, जहां फाइल arduino.json है। इस फ़ाइल में निम्न पंक्ति जोड़ें:

"आउटपुट": "बिल्डऑटपुट/"

सत्यापित करें या अपलोड करें और अपने स्केच फ़ोल्डर को फिर से जांचें, नया BuildOutput फ़ोल्डर होना चाहिए और इसके अंदर.elf एक्सटेंशन वाली फ़ाइल होनी चाहिए। elf फ़ाइल डिबग के लिए महत्वपूर्ण है।

डीबगर सेटिंग फ़ाइल launch.json में है। इस फ़ाइल को निम्न सामग्री के साथ बनाएँ, या आप इस फ़ाइल को संलग्न उदाहरण प्रोजेक्ट से कॉपी कर सकते हैं। लाइन 26 को समायोजित करना न भूलें और अपनी परियोजना.elf फ़ाइल के लिए सही पथ परिभाषित करें।

{// संभावित विशेषताओं के बारे में जानने के लिए IntelliSense का उपयोग करें। // मौजूदा विशेषताओं के विवरण देखने के लिए होवर करें। // अधिक जानकारी के लिए, देखें: https://go.microsoft.com/fwlink/?linkid=830387 "संस्करण": "0.2.0", "कॉन्फ़िगरेशन": [{ "नाम": "Arduino-GDB-openOCD ", "टाइप": "सीपीपीडीबीजी", "अनुरोध": "लॉन्च", "प्रोग्राम": "$ {फाइल}", "सीडब्ल्यूडी": "$ {वर्कस्पेस रूट}/बिल्डऑटपुट /", "एमआईमोड": "जीडीबी", "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 वेरिएंट //"text": "file c:/Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf" }, { "पाठ": "flushregs" }, { "पाठ": "thb app_main" }, { "पाठ": "सी", "अनदेखा विफलता": सच }], "stopAtEntry": सच, "serverStarted": "जानकारी \: [w\d\.]*:\ हार्डवेयर", "लॉन्चकंपलेट कमांड": "एक्ज़ीक-कंटिन्यू", "फ़िल्टरस्टडर": सच, "आर्ग्स": }] }

डिबगिंग कैसे शुरू करें:

  1. अनुपालन करें और अपना स्केच बोर्ड पर अपलोड करें
  2. मापदंडों के साथ ओपनओसीडी शुरू करें
  3. कोड में ब्रेकपॉइंट सेट करें जहां आप चाहते हैं
  4. सभी ब्रेकपॉइंट सेट करने के बाद, सुनिश्चित करें कि आपने अपना प्रोजेक्ट मेन.ino फ़ाइल खोल लिया है। (या launch.json में.elf फ़ाइल के लिए हार्डकोड पथ)
  5. बनाम कोड में डिबग पैनल खोलें (Ctrl + Shift + D)
  6. "Arduino-GDB-openOCD" डिबगर चुनें, केवल उपलब्ध होना चाहिए।
  7. डीबग शुरू करने के लिए F5 दबाएं

सिफारिश की: