ARM, STM, STM32, آموزش, توصیه شده, دسته‌بندی نشده

هر آن چه نیاز است در مورد JTAG و SWD بدانید.

JTAG-vs-SWD

شاید برای خیلی از شما هایی که الکترونیکی هستید این سوال پیش اومده باشه که تفاوت SWD و JTAG چیه؟ در نگاه اول شاید فکر کنید خیلی تفاوت چندانی نداره و یا اینکه حالا چه فرقی میکنه از SWD یا JTAG استفاده کرد مهم اینکه با جفتشون میشه ایسی رو پروگرام کرد و عملیات دیباگ رو انجام داد. اما همیشه به همین سادگی نیست گاهی نیاز میشه که خودتون یه پروگرامر درست کنید.

کی به نظرتون نیاز میشه؟ فرض کنید یه پروژه میخواین انجام بدین که با FPGA هست و حالا خودتون هم باید براش پروگرامر درست کنید اونجاست که دیگه نمی‌دونید واقعا چیکار کنید.

این مقاله رو هم دقیقا برای همین نوشتم که اول تفاوت و عملکردشون رو بدونید تا اگه خواستید یه پروگرامر با هزینه کمتر درست کنید. البته لینک ساختش رو گذاشتم که بعد از خوندن این مقاله هیچ جوره توی پروژهاتون از لحاظ پروگرام کد نمونید.
تفاوت JTAG و SWD

 

JTAG

از این پروتکل برای پروگرام کردن هر نوع تراشه ای به صورت کلی استفاده میشه. به طور مثال انواع ایسی ها و یا FPGA ها یا CPLD ها و … کاربرد داره شاید بارها شنیده باشید که این پروتکل 20 پین رو اشغال میکنه (جای خاص خودشو داره که بحث ما نیست) اما همیشه اینجوری نیست بلکه فقط از 4 پین استفاده میکنه که میخوام این 4 پین رو تشریح کنم تا دید بهتری به سخت افزار داشته باشید.

 

پین های JTAG

 

خب همونطوری که گفتم به 4 پین نیاز داریم ولی سوال چرا 5 پین در جدول بالا است؟ این پین اخری اصطلاحا به TAP CONTROLLER معروف هست.

این بخش دسترسی به بسیاری از توابع داخلی موجود برای تست کردن وسیله سازگار با JTAG رو فراهم میکنه.

 

کنترل کننده سخت افزاری JTAG

برای اینکه بتونیم با یک دیوایس ارتباط برقرار کنیم لازمه که حتما بتونیم با اون دیوایس به لحاظ سخت افزاری صحبت کنیم، خب حالا این روند به چه صورتی امکان پذیره؟

باید حتما یه درایور نصب کنیم که بتونه این ارتباط رو بین دیوایس و JTAG  برقرار کنه برای این کار هم کافیه که یه سری به سایت خود JTAG بزنید.

پین های JTAG

خب حالا رسیدیم به اینجا که اگه خواستیم یکی درست کنیم باید چطور شماره گذاری پین ها رو انجام بدیم که به مشکل نخوریم.

  • پین های زوج یعنی 2 و 4 و 6 و 8 و 10 و 12 و14 و16 و 18 و 20 به گراند متصل می شوند.(مدل استاندارد که تقریبا همه جا دیدید)
  • پین های 1 و 7 بدون استفاده هست.
  • پین 3 گزارش خطا رو میده.
  • پین 5 آنالیز cpu رو انجام میده.
  • پین 9 TMS
  • پین 11 TCK
  • پین 13 TDI
  • پین 15 TDO
  • پین 17 متصل به مدار ریست کننده دستگاه هست.
  • پین 19 TRST
اینم از پین ها، حالا یه جا هست ما نمیخوایم از همشون استفاده کنیم اصلا به کارمون نمیاد اونجا باید چیکار کنیم؟ اگه دقت کنید بعضی از پروگرامرها که تو بازار هم زیادن در واقع از همون 4 پینی که گفتم فقط استفاده می کنند بدون اینکه مشکلی برای ایسی پیش بیاد به همین راحتی اینم لینک ساخت یه پروگرامر کاملا کاربری.

 

پروگرام چندین ایسی توسط JTAG

بزارید با یه مثال توضیح بدم فرض کنید یه برد زدین روی بردتون دو تا ایسی متفاوت وجود داره یکی FPGA یکی دیگه STM32Fx  حالا میخواید برنامه هاتون رو روش پروگرام کنید اینجا ایده ای که به ذهن اکثریت ما میاد اینکه برای هرکدومشون یه سوکت پروگرام بزاریم و در نهایت به صورت مجزا هر کدومشون رو پروگرام کنیم اما یه راه حل ساده تری هم هست که اگه از این طریق سخت افزا‌ها رو متصل کرده باشید دیگه نیاز به استفاده از روش اول نخواهید داشت و در نهایت توسط یه سوکت قابلیت پروگرام کردن چندین برد رو خواهید داشت.

اپلود هم زمان چندین کد

 

سوالی که پیش میاد اینکه آیا خودش به صورت خودکار ایسی ها رو میشناسه و پروگرام میکنه؟ خیر بلکه باید از طریق نرم افزار هر کدوم از ایسی ها رو مشخص کنید و در نهایت برنامه مربوط به سخت افزار رو آپلود کنید.

 

SWD چیست؟

SWD مخفف Serial wire debugging هست به عبارت ساده تر یه روشه برای پروگرام و دیباگ کردن تراشه های  ARM Cortex. یه وقت با JTAG اشتباه نگیرید.

از SWD در حال حاضر برای پروگرام و دیباگ تراشه های ARM Cortex استفاده میشه یعنی اینکه یه وقت برندارید به FPGA وصل کنید بعد توقع داشته باشید FPGA  باهاش پروگرام شه خلاصه از من گفتن بود.

رابط بین SWD و تراشه

وقتی میگیم که SWD  در حال حاضر میتونه ARM Cortex رو پشتیبانی کنه حتما یه خبرایی توی خود نرم افزار و سخت افزارش هست.

SWD شامل 3 پین به نام های SWDIO و SWDCLK و RESET و البته یه پین دیگه به نام  GND هست که از طریق این پین ها میتونیم با تراشه مورد نظرمون ارتباط برقرار کنیم به جرات میتونم بگم هر سخت افزاری که درست کنید و یا بخرید که این پین ها رو داشته باشه به راحتی میتونید سخت افزارتون رو راه اندازی کنید( این از لحاظ سخت افزاریش)

خب حالا چطور میشه که فرایند پروگرام روی تراشه صورت میگیره؟

به سادگی، دقیقا نرم افزار هایی که کار آپلود کد رو میکنند بخشی به اسم SWD دارند به طور مثال برای ایسی های شرکت ST، نرم افزار و سخت افزاری هست به نام STLINK که دقیقا همین قابلیت پروگرام و دیباگ رو به شما میده البته همونطوری که گفتم برای این کار حتما نیاز به نصب درایور دارید پس لطفا این درایور رو جدی بگیرید.

(دو حالت داره یکی اینکه اگه متصل به اینترنت باشه خودش نصب میشه یا باید نرم افزارش رو دانلودش کنید)

اینم لینک ساخت پروگرامر

JLINK

حالا یه وقت هست دوس دارید یه دستگاهی بخرید که هم بتونه از SWD و هم از JTAG پشتیبانی کنه که مجبور نشید برای هر نوع تراشه خاصی از پروگرامر خاص خودش استفاده کنید که توی این مواقع پیشنهادی که برای شما دارم خرید JLINK هست که توی بازار هم دقیقا با همین اسم معروفه که دارای ورژن های متفاوتیه.

sisoog_J-Link

اگر زمانیکه از Jlink استفاده می‌کنید دچار مشکل شدید توصیه میکنم اینجا کلیک کنید

نتیجه گیری

  • SWD در حال حاضر برای پروگرام و دیباگ ARM های سری CORTEX استفاده میشه.
  • SWD تنها از سه سیم برای پروگرام و دیباگ استفاده میکنه که به SWDIO و SWDCLK و RESET معروف هستند .
  • SWD از لحاظ هزینه مقرون به صرفه است.
  • سرعت SWD حدودا به 50Mhz میرسه
  • JTAG صرفا برای پروگرام و دیباگ ARM ها نیست بلکه میشه گفت تقریبا برای تمامی ایسی ها و FPGA ها و CPLD و ASIC ها استفاده میشه و یا به عبارت بهتر میشه گفت هر نوع تراشه دیجیتال رو میتونه پروگرام کنه.
  • JTAG برای پروگرام و دیباگ کردن از 4 سیم استفاده میکنه.
  • JTAG از لحاظ هزینه نسبت به SWD مقداری گرونتره اما کاربردیتره.
  • JTAG قابلیت پروگرام و دیباگ چندین ایسی رو به صورت سری داره که این قابلیت توی SWD امکان پذیر نیست.
  • JTAG از لحاظ ساخت قدمی تر از SWD هست و خانواده های ARM7 و ARM9 رو شامل میشه که SWD این امکان رو نداره.
  • سرعت JTAG حدودا به 100Mhz میرسه
  • تنها نقطه ضعفی که میشه از JTAG گرفت، اینکه بگیم پایه های مورد استفادش بیشتر از SWD هست همین و بس.

با سیسوگ همراه باشید.



انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

نوشته های مشابه

3 دیدگاه در “هر آن چه نیاز است در مورد JTAG و SWD بدانید.

  1. Avatar احسان مرادی گفت:

    حالت SWD یه پایه دیگه هم داره برای مانیتور کردن میکرو معروفه به Trace
    من هم یه پروگرمر SWD چهار سیمه داشتم ولی یه لینک پیدا کردم که هکش کردم و پایه پنجم یعنی Trace رو ازش بیرون کشیدم
    ممنون بابت مطلب خوبتون

  2. BLO OM BLO OM گفت:

    خواهش میکنم دوست عزیز
    نظر لطفتونه

  3. Avatar سعید گفت:

    ممنون عالی بود مدتی بود میخواستم تو سایت های خارجی این مطلب رو پیدا کنم اولا که وقتش نبود دوما فکر نکنم به این کاملی مطلبی پیدا میکردم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *