فهرست مطالب:

ESP32 - راه حل ارزان برای اشکال زدایی در Circruit: 5 مرحله
ESP32 - راه حل ارزان برای اشکال زدایی در Circruit: 5 مرحله

تصویری: ESP32 - راه حل ارزان برای اشکال زدایی در Circruit: 5 مرحله

تصویری: ESP32 - راه حل ارزان برای اشکال زدایی در Circruit: 5 مرحله
تصویری: PWM DC Motor control with Arduino and L298N Module with library - Robojax 2024, جولای
Anonim
ESP32 - راه حل ارزان برای اشکال زدایی در Circruit
ESP32 - راه حل ارزان برای اشکال زدایی در Circruit

سلام ، در این قسمت نحوه تنظیم آداپتور ارزان JTAG بر اساس تراشه FTDI 2232HL ، با کد بصری و افزونه آردوینو توضیح داده شده است.

- ماژول FTDI 2232HL با اتصال USB از 8 دلار در ebay شروع می شود و نیازی به نرم افزار پولی نیست. این یک راه حل عالی برای علاقه مندان است که نمی خواهند 50 دلار+ برای آداپتور profesionall JTAG هزینه کنند.

- این آداپتور می تواند برای اشکال زدایی سیستم عامل های دیگر مانند ESP8266 ، ARM ، AVR و بسیاری دیگر استفاده شود. برخی از پیکربندی ها به پلت فرم هدف بستگی دارد ، این دستورالعمل فقط تنظیمات ESP32 را پوشش می دهد.

- اگر قبلاً تعدادی آداپتور JTAG دارید ، می توانید وقتی از openOCD پشتیبانی می کند از آن استفاده کنید ، فقط کافی است openocd را با نوع پیکربندی متفاوت بر اساس نوع آداپتور jtag خود شروع کنید.

- platform.io می تواند راه اندازی را برای شما آسان کند ، اما اشکال زدایی تنها در نسخه حرفه ای پولی پشتیبانی می شود.

- با اکثر ماژول های ESP32 کار می کند. (به عنوان مثال wemos lolin 32 ارزان)

- این آداپتور jtag باید با لینوکس نیز کار کند ، اما من شخصاً آن را آزمایش نکردم.

مرحله 1: پیش نیازهای نرم افزاری

Arduino IDE نسخه 1.8 یا جدیدتر. نسخه فروشگاه Windows پشتیبانی نمی شود. شما باید از نسخه نصب کننده قدیمی استفاده کنید که می توانید آن را از صفحه رسمی آردوینو https://www.arduino.cc بارگیری کنید

کد استودیوی بصری مایکروسافت

این افزونه ها برای کد استودیوی بصری اجباری است

  • آردوینو
  • اشکال زدایی بومی

من همچنین توصیه می کنم این افزونه را نصب کنید که intelisense را برای C/C ++ فعال می کند

C/C ++

در این دفترچه راهنما از 2 پوشه کار می کنم:

D: / devel / ESP32 / tools / - در اینجا همه ابزارها را قرار داده ام

C: / Users / xxxxx / Documents / Arduino / YourProject / - این پوشه ای با طرح است

در صورت تمایل می توانید فایل های خود را در هر جای دیگری قرار دهید ، فقط لطفاً فراموش نکنید که همه منابع را با مسیر واقعی خود به روز کنید.

مرحله 2: نصب و پیکربندی درایور

نصب و پیکربندی درایور
نصب و پیکربندی درایور
نصب و پیکربندی درایور
نصب و پیکربندی درایور
نصب و پیکربندی درایور
نصب و پیکربندی درایور

حتی اگر ویندوز به طور خودکار FT2232 را به طور پیش فرض تشخیص دهد ، درایورهای پیش فرض ویندوز برای همه ویژگی های پیش فرض کافی نیست و لازم است درایور را از سایت FTDI بارگیری و نصب کنید

هنگام نصب درایور صحیح ، باید ماژول FT2232 خود را در مدیریت دستگاه نه تنها به عنوان 2 پورت سریال بلکه به عنوان "مبدل سریال USB A" و "مبدل سریال USB USB" مشاهده کنید.

مرحله دوم تغییر درایور برای یک کانال مبدل ما است. ابزار zadig را از https://zadig.akeo.ie/ بارگیری کنید. اگر به درستی بفهمم این ابزار درایور winUSB را به دستگاه FTDI وصل می کند که امکان برقراری ارتباط سطح پایین بین دستگاه OpenOCD و USB را فراهم می کند.

در ابزار zadig ، در منوی "Options" ، "Show all Devices" را علامت بزنید ، سپس باید آداپتور خود را در لیست دستگاه های موجود مشاهده کنید. "Dual RS232-HS (Interface 0)" را انتخاب کرده و سپس درایور جایگزین "WinUSB v6.1.xxxx" را انتخاب کرده و بر روی دکمه تعویض درایور کلیک کنید.

وقتی آداپتور خود را به پورت USB مختلف رایانه خود وصل می کنید ، لازم است دوباره تنظیمات درایور را از طریق ابزار zadig تغییر دهید ، در غیر این صورت openOCD آداپتور شما را پیدا نمی کند.

مرحله 3: OpenOCD ، Toolchain و Gdb

OpenOCD ، Toolchain و Gdb
OpenOCD ، Toolchain و 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" به معنی 8 مگاهرتز است.

پیش فرض 20 مگاهرتز است و اگر از سیم های بلوز بلندتر یا تخته نان استفاده می کنید ، ممکن است خیلی زیاد باشد. من توصیه می کنم از 1 مگاهرتز شروع کنید و اگر همه چیز خوب است ، به سرعت بالاتر بروید ، برای من 8 مگاهرتز به طور قابل اعتماد کار می کند.

minimodule.cfg

مسیر کامل این پرونده عبارت است از: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

اگر درست متوجه شده باشم ، مینیمودول اصلی تخته براکت گران قیمت FT 2232 تولید شده توسط FTDI است و تنها تفاوت بین مینودول اصل و ماژول ارزان قیمت یا تراشه برهنه موجود در بازار ، توصیف USB پیش فرض است. OCD باز به دنبال آداپتور jtag بر اساس توضیحات دستگاه است ، همچنین طرح اولیه نیز باید تنظیم شود.

ماژول ارزان دارای شرح "Dual RS232-HS" است. اگر از توضیحات دستگاه خود مطمئن نیستید ، می توانید آن را در مدیر دستگاه -> ویژگی های دستگاه -> جزئیات برگه -> مقدار ویژگی "شرح دستگاه گزارش اتوبوس" بررسی کنید

محتوای 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 0x0008i 0s000d

esp32.cfg

مسیر کامل این فایل به شرح زیر است:

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

2 خط زیر را به انتهای esp32.cfg اضافه کنید. بدون این اصلاح ، افزودن نقطه ترمز کار نمی کند.

#نقاط شکست را تقویت کنید. هنگامی که یک نقشه حافظه داریم ، می توانیم نرم افزار bps.gdb_breakpoint_override را نیز به سختی مجاز کنیم

3. xtensa-esp32-elf toolchain را بارگیری و نصب کنید-این ابزار شامل اشکال زدایی خط فرمان (کلاینت gdb) است که برای اشکال زدایی از هر IDE گرافیکی ضروری است. زنجیره ابزار برهنه را می توانید از سایت 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 board /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 Code اضافه کنید

پیکربندی اشکال زدایی را به Visual Studio Code اضافه کنید
پیکربندی اشکال زدایی را به Visual Studio Code اضافه کنید

در آن زمان من تصور می کنم که شما پیش از این کد ویژوال استودیو و افزونه arduino را به طور صحیح پیکربندی کرده اید و می توانید طرح خود را تأیید و بارگذاری کنید. اگر نه ، لطفاً نحوه پیکربندی کد ویژوال استودیو و آردوینو را مطالعه کنید ، برای مثال در این صفحه

برای انجام اشکال زدایی لازم است که پوشه خروجی را مشخص کنید. در زیر پوشه طرح شما پوشه.vscode (مخفی) وجود دارد ، جایی که فایل arduino.json است. خط زیر را به این فایل اضافه کنید:

"output": "BuildOutput/"

پوشه طرح خود را تأیید یا بارگذاری کنید و دوباره بررسی کنید ، باید پوشه BuildOutput جدید و داخل آن فایل با پسوند.elf وجود داشته باشد. فایل elf برای اشکال زدایی حیاتی است.

تنظیمات اشکال زدایی در فایل laun.json است. این فایل را با محتوای زیر ایجاد کنید ، یا می توانید این فایل را از پروژه نمونه پیوست کپی کنید. تنظیم خط 26 را فراموش نکنید و مسیر صحیح پروژه.elf پروژه خود را مشخص کنید.

{// برای اطلاع از ویژگیهای احتمالی از IntelliSense استفاده کنید. // برای مشاهده توضیحات ویژگی های موجود ، نشانگر را ببرید. // برای اطلاعات بیشتر ، از: https://go.microsoft.com/fwlink/؟linkid=830387 "version": "0.2.0" ، "configurations": [{"name": "Arduino-GDB-openOCD "،" type ":" cppdbg "،" request ":" start "،" program ":" $ {file} "،" cwd ":" $ {workspaceRoot}/BuildOutput/"،" MIMode ":" gdb " ، "targetArchitecture": "بازو" ، "miDebuggerPath": "D: /devel/ESP32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb.exe" ، "debugServerArgs": "" ، " customLaunchSetupCommands ": [{" text ":" target remote: 3333 "}، {" text ":" mon reset reset stopt "}، {// variant پویا" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// varic static //" 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": "اطلاعات \: [w / d \.]*: / سخت افزار "،" launCompleteCommand ":" exec-continue "،" filterStderr ": true،" args ": }]}

نحوه شروع اشکال زدایی:

  1. طرح خود را تکمیل و بارگذاری کنید
  2. openOCD را با پارامترها شروع کنید
  3. نقاط ترمز را در کدی که می خواهید تنظیم کنید
  4. پس از تنظیم همه نقاط ترمز ، مطمئن شوید که فایل اصلی.ino پروژه خود را باز کرده اید. (یا مسیر سخت به فایل.elf در laun.json)
  5. باز کردن پانل اشکال زدایی در کد vs (Ctrl + Shift + D)
  6. اشکال زدایی "Arduino-GDB-openOCD" را انتخاب کنید ، فقط باید در دسترس باشد.
  7. F5 را بزنید تا اشکال زدایی شروع شود

توصیه شده: