ARM, توصیه شده, معرفی, مقاله های سیسوگ

تاریخچه و قابلیت‌های خاص پروتکل JTAG

پروتکل JTAG چیست

اگر با میکروکنترلرها زیاد سر و کار دارید و آن‌ها را پروگرام کرده باشید به احتمال زیاد اسم JTAG را نیز زیاد شنیده‌اید، اما چرا؟ چون از JTAG غالبا برای پروگرام و دیباگ تراشه‌های زیادی از جمله میکروکنترلرها استفاده می‌شود و افرادی که درگیر پروگرام تراشه‌های مختلف هستند حتما اسم این پروتکل را شنیده‌اند. اما JTAG چیست؟

به طور عام ما الان JTAG را پروتکلی برای پروگرام و دیباگ کردن تقریبا تمامی تراشه‌ها می‌شناسیم، تراشه‌های مانند میکروکنترلرهای ST،AVR و … و همینطور انواع FPGAها و CPLDها. اما ما قصد داریم در این مقاله به طور خاص کمی از تاریخچه و قابلیت‌های این پروتکل بگوییم.

شاید برای شما مفید باشد: آموزش FPGA

تاریخچه

در دهه 1980 میلادی به دنبال راه حلی برای استانداردسازی بردهای چند لایه بودند تا اینکه در نهایت استانداردی مرتبط با این موضوع تحت عنوان JTAG ارائه شد. اما این پروتکل گسترده‌تر شد و به سمت کاربردهای دیگری رفت که ما در ادامه به این کاربردها اشاره خواهیم کرد.

دیباگ

دیباگ

اگرچه JTAG برای اولین بار به منظورهای دیگری در رابطه با تست‌های سطح برد استفاده می‌شد اما اکنون JTAG برای دیباگ کردن دستگاه‌ها، آزمایش سیستم‌ها و تشخیص خطاها طراحی شده است. امروزه JTAG به عنوان اصلی‌ترین وسیله برای دسترسی به بلوک‌های مدارات مجتمع مورد استفاده قرار می‌گیرد و به یک مکانیزم اساسی برای دیباگ سیستم‌های امبدد (embedded) تبدیل شده است که ممکن است دیگر کانال ارتباطی با قابلیت دیباگ نداشته باشند.

در اغلب سیستم‌ها، دیباگ مبتنی بر JTAG از اولین کلاک پس از ریست CPU در دسترس است، که این اجازه را می‌دهد boot اولیه قبل از راه‌اندازی هر چیزی اجرا شود.

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

قابلیت‌های زیاد و کاربردهای فراوانی که JTAG دارد، از جمله ردیابی دستورالعمل‌ها و همچنین دسترسی به تمامی رجیسترها و حافظه‌ها مانند RAM و FLASH این پروتکل را منحصر به فرد کرده است.

شما با استفاده از پروتکل JTAG می‌توانید یک روند تست ایجاد کنید، چون می‌توان به تمامی حافظه‌ها و رجیسترها دسترسی داشت، بنابراین حتی در هنگام کار مدار می‌توان مقادیری را تغییر داد و سیگنال‌هایی از مدار که مد نظرمان است را بخوانیم. این مورد هم در پردازنده‌ها و هم در FPGAها و CPLDها صادق است.

به عنوان مثال می‌توان به دو شیوه روند تست ایجاد کنید. اما این دو شیوه و روش به چه نحوی عمل می‌کنند؟

ما می‌توانیم برنامه خود را پروگرام کنیم و زمانی که برنامه در حال اجراست حافظه‌ها یا سیگنال‌های بخش‌های مختلف مدار را در نرم‌افزاری که با استفاده از پروتکل JTAG با مدار در ارتباط است مانیتور کنیم. روش دیگر این است که ما با استفاده از همین پروتکل JTAG وقتی برنامه در حال اجرا است، مقادیر حافظه‌های داخلی را می‌توانیم تغییر بدهیم و سپس نتیجه تغییرات حاصله را مانیتور کنیم.

این موضوع در FPGAها نیز وجود دارد و شما می‌توانید با استفاده از نرم‌افزار chipscope و ipcoreهایی که وجود داد هر دو روند تست بالا را انجام دهید، فقط توجه کنید که در روند تست دوم قرار نیست کد جدیدی درون FPGA سنتز شود بلکه کد سنتز شده همان است و فقط مقادیر بعضی از منابع یا حافظه‎‌ها تغییر خواهد کرد. (برای درک این موضوع نیاز است که با مفاهیم و چگونگی برنامه‌ریزی FPGAها آشنا باشید)

مشخصات الکتریکی

رابط JTAG یک رابط ویژه است که به یک تراشه اضافه می‌شود یعنی به صورت سخت‌افزاری باید درون تراشه تجهیزاتی برای این پروتکل وجود داشته باشد تا بتوانیم از آن استفاده کنیم. بسته به نسخه JTAG، پین‌های دو، چهار یا پنج پین اضافه می شود.

رابط‌های چهار و پنج پین به گونه‌ای طراحی شده‌اند که در صورت برآورده شدن شرایطی خاص، چندین تراشه می‌توانند به صورت سری همانند شکل زیر به همدیگر وصل شوند و با همین توپولوژی نیز به صورت همزمان چندین تراشه‌ی مختلف مانند میکروکنترلر یا FPGA را پروگرام کنیم.

(Daisy-chained JTAG (IEEE 1149.1

پروتکل jtag

پروتکل jtag

رابط دو پین به گونه‌ای طراحی شده است که می‌توان چندین تراشه را در یک توپولوژی ستاره متصل کرد.

در هر دو حالت بالا، یک پروب آزمایش فقط به یک “پورت JTAG” وصل می‌شود تا به تمام تراشه‌های موجود دسترسی داشته باشد.

پین‌های پروتکل jtag

  1. (TDI (Test Data In
  2. (TDO (Test Data Out
  3. (TCK (Test Clock
  4. (TMS (Test Mode Select
  5. TRST (Test Reset) optional

پین TRST یک پین ریست active-low برای تست می‌باشد. این پین معمولا آسنکرون است، اما با توجه به تراشه می‌تواند سنکرون نیز باشد. به طور کلی برخی عملیات در JTAG وجود دارد که می‌توانیم با استفاده از این عملیات فقط بخش‌هایی از پردازنده را ریست کنیم.

از آن‌جا که فقط یک خط داده وجود دارد پس پروتکل سریال است. کلاک ورودی پین TCK می‌باشد و یک بیت داده با هر لبه بالارونده کلاک، از TDI به TDO منتقل می‌شود.

پروتکل JTAG می‌تواند دستورالعمل‌های متفاوتی را بر روی تراشه بارگذاری کند، با استفاده از این دستورالعمل‌ها می‌تواند نوع تراشه را با استفاده از ID درون تراشه مشخص کند، عملکرد تراشه را دستکاری کند، تراشه را در ساختار و توپولوژی Daisy-chained JTAG بای‌پس (bypass) کند و بسیاری از کارهای دیگر.

حداکثر فرکانس کاری TCK، بسته به اینکه چه نوع تراشه‌هایی در توپولوژی Daisy-chained JTAG وجود دارد می‌تواند متفاوت باشد، به طور کلی باید کمترین فرکانس مربوط به تراشه‌ها انتخاب شود تا عملکرد صحیحی داشته باشیم. اما معمولا فرکانس کاری عددی بین 10 تا 100 مگاهرتز می‌باشد. همچنین فرکانس TCK با توجه به چیدمان برد و آدابتور JTAG می‌تواند متفاوت باشد.

پروتکل JTAG با استفاده از TMS و یک ساختار State Machine، می‌تواند در مدهای مختلف کاری قرار بگیرد و به نواحی مختلف دسترسی داشته باشد.

(Reduced pin count JTAG (IEEE 1149.7

پروتکل JTAG

یکی از عیب‌های که بعضی از افراد نسبت به JTAG خرده می‌گیرند، تعداد پین‌های زیاد این پروتکل می‌باشد. اما در استانداردهایی تعداد پین‌ها به 2 پین تقلیل یافته است که در ادامه به معرفی آن می‌پردازیم.

JTAG با پین‌های کاهش یافته تنها شامل دو پین است، یک پین برای کلاک و پینی دیگر برای دیتا می‌باشد که این مورد بخشی از استاندارد IEEE 1149.7 می‌باشد.

پین‌های پروتکل jtag با پین‌های کاهش یافته

پروتکل JTAG

  1. (TMSC (Test Serial Data
  2. (TCKC (Test Clock

رابط دو سیمه باعث می‌شود که ما بتوانیم دیوایس‌های مختلف را با استفاده از توپولوژی ستاره به هم متصل کنیم. توپولوژی ستاره این امکان را می‌دهد که قسمت‌هایی از سیستم یا بعضی از دیوایس‌ها خاموش شوند، اما در توپولوژی Daisy-chained JTAG همچین امکانی وجود ندارد.

هدف و تمرکز این مقاله روی این موضوع بود که کلیت و قابلیت‌های پروتکل JTAG را ارائه بدهد و نه تشریح عملکرد پروتکل. امیدواریم که بتوانید از این قابلیت‌های خاص پروتکل JTAG به صورت عملی در پروژه‌هایتان استفاده کنید.

 

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

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

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

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