תוכן עניינים:

ESP32 - פתרון זול עבור באגים בסירקרוט: 5 שלבים
ESP32 - פתרון זול עבור באגים בסירקרוט: 5 שלבים

וִידֵאוֹ: ESP32 - פתרון זול עבור באגים בסירקרוט: 5 שלבים

וִידֵאוֹ: ESP32 - פתרון זול עבור באגים בסירקרוט: 5 שלבים
וִידֵאוֹ: Zigbee Ethernet шлюз Zigstar Lilyzig с поддержкой Power over Ethernet, ставим второй zigbee2mqtt 2024, יולי
Anonim
ESP32 - פתרון זול עבור באגים בסירקרוט
ESP32 - פתרון זול עבור באגים בסירקרוט

שלום, במדריך זה מתואר כיצד להגדיר מתאם JTAG זול המבוסס על שבב FTDI 2232HL, עם קוד ויזואלי ותוסף ארדואינו.

- מודול FTDI 2232HL עם מחבר USB החל מ 8 $ ב- eBay ואין צורך בתוכנה בתשלום. זהו פתרון מצוין לחובבים שאינם רוצים להוציא 50 $+ על מתאם JTAG מקצועי.

- מתאם זה יכול לשמש לאיתור באגים של פלטפורמות אחרות כמו ESP8266, ARM, AVR ועוד רבות אחרות. תצורה מסוימת תלויה בפלטפורמת היעד, הוראה זו מכסה רק התקנה עבור ESP32.

- אם כבר יש לך מתאם JTAG כלשהו, תוכל להשתמש בו כאשר הוא נתמך על ידי openOCD, פשוט הפעל את openocd עם קובץ תצורה שונה בהתאם לסוג מתאם jtag שלך.

- platform.io יכול להקל עליך את ההתקנה, אך ניפוי באגים נתמך רק בגרסה מקצועית בתשלום.

- עובד עם רוב מודולי ESP32. (למשל wemos lolin 32 בזול)

- מתאם jtag זה אמור לעבוד גם עם לינוקס, אך אני אישית לא בדקתי אותו.

שלב 1: דרישות תוכנה

Arduino IDE גירסה 1.8 ואילך. אין תמיכה בגרסת חנות Windows. עליך להשתמש בגרסת ההתקנה הקלאסית הניתנת להורדה מדף Arduino הרשמי

קוד אולפן ויזואלי של מיקרוסופט

תוספות אלה לקוד אולפן ויזואלי הן חובה

  • Arduino
  • באגים מקוריים

אני ממליץ גם להתקין תוסף זה המאפשר אינטליסנס עבור C/C ++

C/C ++

במדריך זה אשתמש ב -2 תיקיות עבודה:

D: / devel / ESP32 / tools / - כאן הנחתי את כל הכלים

C: / Users / xxxxx / Documents / Arduino / YourProject / - זו תיקיה עם סקיצה

אתה יכול למקם את הקבצים שלך בכל מקום אחר אם אתה רוצה, רק אל תשכח לעדכן את כל ההפניות בנתיב שלך בפועל.

שלב 2: התקנת דרייבר ותצורה

התקנת דרייבר ותצורה
התקנת דרייבר ותצורה
התקנת דרייבר ותצורה
התקנת דרייבר ותצורה
התקנת דרייבר ותצורה
התקנת דרייבר ותצורה

גם אם חלונות מזהים אוטומטית את FT2232 כברירת מחדל, מנהלי התקני ברירת המחדל של Windows אינם מספיקים לכל התכונות המקדימות ויש צורך להוריד ולהתקין את מנהל ההתקן מאתר FTDI

כאשר מותקן מנהל ההתקן הנכון, אתה אמור לראות את מודול ה- FT2232 שלך במנהל ההתקנים לא רק כשתי יציאות טוריות, אלא גם כ"ממיר סידורי USB A "ו"ממיר סידורי USB B"

השלב השני הוא שינוי דרייבר לערוץ אחד של הממיר שלנו. הורד את הכלי zadig מ https://zadig.akeo.ie/. אם אני מבין נכון זה כלי קישור winUSB מנהל ההתקן למכשיר FTDI המאפשר תקשורת ברמה נמוכה בין openOCD והתקן USB.

בכלי zadig, בתפריט "אפשרויות" סמן "הצג את כל המכשירים", ואז אתה אמור לראות את המתאם שלך ברשימת המכשירים הזמינים. בחר "RS232-HS כפול (ממשק 0)" ולאחר מכן בחר מנהל התקן חלופי "WinUSB v6.1.xxxx" ולחץ על כפתור החלף מנהל ההתקן.

כאשר אתה מחבר את המתאם שלך ליציאת USB אחרת של המחשב שלך, יש צורך לשנות שוב את הגדרות הנהג באמצעות הכלי zadig, אחרת openOCD לא ימצא את המתאם שלך.

שלב 3: OpenOCD, שרשרת כלים ו- Gdb

OpenOCD, שרשרת כלים ו- Gdb
OpenOCD, שרשרת כלים ו- Gdb

1. 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.

ברירת המחדל היא 20 מגה -הרץ והיא עשויה להיות גבוהה מדי אם אתה משתמש בחוטי מגשר ארוכים יותר או לוח קרש. אני ממליץ להתחיל ב- 1Mhz ואם הכל בסדר, לך למהירות גבוהה יותר, בשבילי 8Mhz עובד בצורה אמינה.

minimodule.cfg

הנתיב המלא לקובץ זה הוא: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

אם אני מבין נכון, מינימודול מקורי הוא לוח בלימה במחיר מופקע עם FT 2232 המיוצר על ידי FTDI וההבדל היחיד בין מינימודוד אמיתי למודול זול או שבב חשוף הזמין בשוק הוא תיאור ברירת המחדל של USB. open OCD מחפש מתאם jtag המבוסס על תיאור המכשיר, גם את פריסת init צריך להתאים.

מודול זול כולל תיאור "כפול 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_init 0x0008 0x000b ftdat_lay

esp32.cfg

הנתיב המלא לקובץ זה הוא:

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

הוסף את שתי השורות לסוף esp32.cfg. ללא שינוי זה, הוספת נקודות בלם לא תעבוד.

נקודות שבירה של #Force. ברגע שיש לנו מפת זיכרון, נוכל גם לאפשר תוכנה bps.gdb_breakpoint_override קשה

3. הורד והתקן את xtensa-esp32-elf toolchain-שרשרת הכלים הזו מכילה באגים בשורת הפקודה (לקוח gdb) שהוא חיוני לניפוי באגים מכל IDE גרפי. ניתן להוריד את כלי העבודה החשוף מאתר espressif, סעיף "התקנה חלופית"

שלב 4: חיווט ובדיקה ראשונה

חיווט ומבחן ראשון
חיווט ומבחן ראשון
חיווט ומבחן ראשון
חיווט ומבחן ראשון

חבר מודול FT2322 עם ESP. אני ממליץ להשתמש בחוטים קצרים ככל האפשר. אם אתה חדש ב- JTAG, אל תשכח כי TDI של מתאם יעבור ל- TDI של שבב, גם TDO של מתאם יעבור ל- TDO של שבב. קווי נתונים של JTAG אינם חוצים כמו Rx/Tx ב- uart!

לבדיקה הבאה אני ממליץ להעלות סקיצה לדוגמא להבהב או סקיצה אחרת שיכולה להצביע כאשר המעבד פועל או לא על ידי מהבהב נורית או צפצוף או כתיבה לקונסולה הסדרתית.

הפעל את 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 ואם הכל בסדר אתה צריך לראות בפלט שורת הפקודה מכיל את השורות הבאות:

מידע: מהירות שעון 8000 קילוהרץ מידע: ברז JTAG: esp32.cpu0 ברז/מכשיר נמצא: 0x120034e5 (mfg: 0x272 (Tensilica), חלק: 0x2003, ver: 0x1) מידע: ברז JTAG: esp32.cpu1 ברז/מכשיר נמצא: 0x120034e5 (mfg: 0x272 (Tensilica), חלק: 0x2003, ver: 0x1)

גם תהליך openocd יקשיב ביציאת TCP 3333

פתח מסוף חדש והפעל את לקוח gdb שורת הפקודה על ידי ביצוע הפקודה הבאה

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

המתן שנייה וכאשר מסוף gdb יהיה מוכן כתוב את הפקודות אחת אחת

יעד מרחוק: איפוס 3333mon ממשיך להמשיך

הפקודה הראשונה פותחת את החיבור לשרת איתור באגים ב- openocd, השנייה תפסיק את ביצוע התוכנית ב- ESP וה- LED אמור להפסיק להבהב, המשך לשחזר את ביצוע התוכנית וה- LED צריך להתחיל להבהב שוב.

שלב 5: הוסף תצורת באגים לקוד Visual Studio

הוסף תצורת באגים לקוד Visual Studio
הוסף תצורת באגים לקוד Visual Studio

אני מניח שבשלב זה כבר הגדרת קוד אולפן ויזואלי ותוסף arduino בצורה נכונה ותוכל לאמת ולהעלות את הסקיצה שלך ללוח. אם לא, אנא בדוק כמה הוראות כיצד להגדיר קוד אולפן ויזואלי וארדואינו, למשל בדף זה

כדי לגרום לאיתור באגים לפעול יש צורך לציין תיקיית פלט build. מתחת לתיקיית הסקיצה שלך יש (מוסתר) תיקייה.vscode, היכן נמצא הקובץ arduino.json. הוסף לקובץ זה את השורה הבאה:

"output": "BuildOutput/"

הפעל לאמת או להעלות ולבדוק שוב את תיקיית הסקיצות שלך, אמורה להיות תיקיית BuildOutput חדשה ובתוכה קובץ עם הרחבת.elf. קובץ elf חיוני לניפוי באגים.

הגדרות באגים נמצאות ב- launch.json של הקובץ. צור קובץ זה עם התוכן הבא, או שאתה יכול להעתיק קובץ זה מפרויקט דוגמה מצורף. אל תשכח להתאים את קו 26 ולהגדיר את הנתיב הנכון לקובץ.elf הפרויקט שלך.

{// השתמש ב- IntelliSense כדי ללמוד על תכונות אפשריות. // רחף כדי להציג תיאורים של תכונות קיימות. // למידע נוסף, בקר בכתובת: https://go.microsoft.com/fwlink/?linkid=830387 "גרסה": "0.2.0", "תצורות": [{"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 target: 3333 "}, {" text ":" mon reset stop "}, {// variant variant" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// גרסה סטטית //" text ":" קובץ c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "מידע \: [w / d \.]*: / חומרה "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

כיצד להתחיל איתור באגים:

  1. השלם והעלה את הסקיצה שלך ללוח
  2. התחל openOCD עם פרמטרים
  3. הגדר את נקודות הבלם בקוד היכן שאתה רוצה
  4. לאחר הגדרת כל נקודות הבלם, ודא שפתחת את קובץ ה-.ino הראשי של הפרויקט. (או נתיב קוד קשיח לקובץ.elf ב- launch.json)
  5. פתח את לוח הבאגים מול הקוד (Ctrl + Shift + D)
  6. בחר באגים "Arduino-GDB-openOCD", אמור להיות זמין רק.
  7. הקש F5 כדי להתחיל איתור באגים

מוּמלָץ: