JTAG

JTAG (سميت نسبة إلى مجموعة العمل المشتركة للاختبار التي قامت بتقنينها) هي معيار صناعي للتحقق من تصميمات واختبار لوحات الدوائر المطبوعة بعد التصنيع.

تُطبّق تقنية JTAG معاييرَ للأجهزة المدمجة في أتمتة تصميم الإلكترونيات (EDA) كأداةٍ مُكمّلةٍ للمحاكاة الرقمية . [ 1 ] وتُحدّد استخدام منفذ تصحيح أخطاء مُخصّص يُنفّذ واجهة اتصالات تسلسلية للوصول السريع دون الحاجة إلى وصول خارجي مباشر إلى عناوين النظام وحافلات البيانات. تتصل هذه الواجهة بمنفذ اختبار مدمج (TAP) يُنفّذ بروتوكولًا يعتمد على الحالة للوصول إلى مجموعة من سجلات الاختبار التي تُقدّم مستويات منطق الشريحة وقدرات الأجهزة المختلفة.

شُكِّل فريق العمل المشترك للاختبار عام 1985 لتطوير طريقة للتحقق من التصاميم واختبار لوحات الدوائر المطبوعة بعد تصنيعها. وفي عام 1990، قام معهد مهندسي الكهرباء والإلكترونيات بتقنين نتائج هذا الجهد في معيار IEEE 1149.1-1990، بعنوان " منفذ الوصول القياسي للاختبار وبنية المسح الحدودي" .

تم توسيع معايير JTAG من قبل العديد من مصنعي رقائق أشباه الموصلات بإصدارات متخصصة لتوفير ميزات خاصة بكل مورد. [ 2 ]

تاريخ

في ثمانينيات القرن الماضي، أصبحت لوحات الدوائر متعددة الطبقات والدوائر المتكاملة التي تستخدم مصفوفة الشبكة الكروية وتقنيات تركيب مماثلة معيارًا شائعًا، وتم إنشاء وصلات بين الدوائر المتكاملة لم تكن متاحة للمجسات. كانت غالبية أعطال التصنيع والاستخدام الميداني في لوحات الدوائر ناتجة عن ضعف وصلات اللحام ، أو عيوب في توصيلات اللوحة، أو في نقاط التوصيل وأسلاك التوصيل بين وسادات الدوائر المتكاملة وإطارات أطراف التوصيل. تم تشكيل مجموعة العمل المشتركة لاختبار الدوائر المتكاملة (JTAG) عام ١٩٨٥ لتوفير رؤية واضحة لتوصيلات الأطراف بين وسادات الدوائر المتكاملة، مما يُمكّن من اكتشاف هذه الأعطال.

أصبح معيار الصناعة معيارًا معتمدًا من قِبل معهد مهندسي الكهرباء والإلكترونيات ( IEEE ) في عام 1990 تحت مسمى IEEE Std. 1149.1-1990 [ 3 ] بعد سنوات من الاستخدام الأولي. في العام نفسه، أصدرت شركة إنتل أول معالج لها مزود بتقنية JTAG (المعالج 80486 )، مما أدى إلى اعتماده بشكل أسرع من قِبل جميع الشركات المصنعة. في عام 1994، أُضيف ملحق يتضمن وصفًا للغة وصف مسح الحدود (BSDL). وفي عام 2001، أُجريت تحسينات إضافية تتعلق باستخدام الأصفار فقط في وظيفة EXTEST، وفصل استخدام وظيفة SAMPLE عن وظيفة PRELOAD، وتحسين تنفيذ خلايا OBSERVE_ONLY [ 4 ]. ومنذ عام 1990، اعتمدت شركات الإلكترونيات حول العالم هذا المعيار. أصبح مسح الحدود الآن مرادفًا لتقنية JTAG، ولكن لتقنية JTAG استخدامات أساسية تتجاوز تطبيقات التصنيع. [ 5 ] وقد صدرت مراجعة عام 2013 لمعيار IEEE Std. لقد قدم الإصدار 1149.1 مجموعة واسعة من الميزات الاختيارية، والامتدادات المرتبطة بـ BSDL، ولغة وصف إجرائية جديدة (PDL) تعتمد على Tcl .

تصحيح الأخطاء

على الرغم من أن التطبيقات المبكرة لتقنية JTAG استهدفت اختبار مستوى اللوحة، فقد صُمم معيار JTAG هنا للمساعدة في اختبار الأجهزة واللوحات والأنظمة، وتشخيص الأعطال وعزلها. تُستخدم JTAG اليوم كوسيلة أساسية للوصول إلى الوحدات الفرعية للدوائر المتكاملة ، مما يجعلها آلية ضرورية لتصحيح أخطاء الأنظمة المدمجة التي قد لا تمتلك أي قناة اتصال أخرى قادرة على تصحيح الأخطاء. في معظم الأنظمة، يتوفر تصحيح الأخطاء القائم على JTAG من أول تعليمة بعد إعادة تشغيل وحدة المعالجة المركزية، مما يسمح له بالمساعدة في تطوير برامج بدء التشغيل المبكرة التي تعمل قبل أي إعداد. يستخدم المحاكي داخل الدائرة (أو، بشكل أدق، محول JTAG ) تقنية JTAG كآلية نقل للوصول إلى وحدات تصحيح الأخطاء الموجودة على الشريحة داخل وحدة المعالجة المركزية المستهدفة . تُمكّن هذه الوحدات مطوري البرامج من تصحيح أخطاء برامج النظام المدمج مباشرةً على مستوى تعليمات الآلة عند الحاجة، أو (في الغالب) من حيث شفرة المصدر للغة عالية المستوى.

يُعد دعم تصحيح أخطاء برامج النظام السبب الرئيسي لاهتمام العديد من مطوري البرامج بتقنية JTAG. وقد قامت العديد من معمارية السيليكون، مثل PowerPC وMIPS وARM وx86، ببناء بنية تحتية متكاملة لتصحيح أخطاء البرامج وتتبع التعليمات وتتبع البيانات حول بروتوكول JTAG الأساسي. مع ذلك، غالبًا ما يقوم مُصنّعو السيليكون بتنفيذ أجزاء فقط من هذه الامتدادات. ومن الأمثلة على ذلك ARM CoreSight و Nexus، بالإضافة إلى تطبيقات Intel لتقنيات BTS (تخزين تتبع الفروع) وLBR (سجل الفرع الأخير) وIPT (تتبع معالج Intel). وهناك عدد من الامتدادات الأخرى الخاصة بمُصنّعي السيليكون والتي قد لا تكون موثقة إلا بموجب اتفاقية عدم إفصاح . وقد ساهم اعتماد معيار JTAG في تحويل بيئات تصحيح الأخطاء التي تركز على JTAG بعيدًا عن التصاميم القديمة الخاصة بالمعالجات. ويمكن عادةً إيقاف المعالجات مؤقتًا، أو تنفيذها خطوة بخطوة، أو تركها تعمل بحرية. ويمكن تعيين نقاط توقف للتعليمات البرمجية، سواءً للتعليمات الموجودة في ذاكرة الوصول العشوائي (RAM) (غالبًا باستخدام تعليمة خاصة بالجهاز، مثل INT3 ) أو في ذاكرة القراءة فقط (ROM) أو ذاكرة الفلاش. تتوفر نقاط توقف البيانات غالبًا، بالإضافة إلى إمكانية تنزيل البيانات بكميات كبيرة إلى ذاكرة الوصول العشوائي (RAM). تحتوي معظم التصاميم على وضع إيقاف التصحيح ، لكن بعضها يسمح لمصححات الأخطاء بالوصول إلى السجلات وناقلات البيانات دون الحاجة إلى إيقاف النواة التي يتم تصحيحها. يمكن لبعض سلاسل الأدوات استخدام وحدات ARM Embedded Trace Macrocell (ETM)، أو تطبيقات مكافئة في بنى أخرى، لتشغيل نشاط مصحح الأخطاء (أو التتبع) عند وقوع أحداث معقدة في الأجهزة، مثل محلل منطقي مُبرمج لتجاهل أول سبع عمليات وصول إلى سجل من روتين فرعي معين.

أحيانًا يستخدم مطورو الدوائر المتكاملة القابلة للبرمجة (FPGA) تقنية JTAG لتطوير أدوات تصحيح الأخطاء. [ 6 ] يمكن لتقنيات JTAG نفسها المستخدمة لتصحيح أخطاء البرامج التي تعمل داخل وحدة المعالجة المركزية (CPU) أن تساعد في تصحيح أخطاء وحدات التصميم الرقمي الأخرى داخل FPGA. على سبيل المثال، يمكن توفير تعليمات JTAG مخصصة للسماح بقراءة السجلات المبنية من مجموعات إشارات عشوائية داخل FPGA، مما يوفر رؤية للسلوكيات غير المرئية لعمليات مسح الحدود. وبالمثل، يمكن أن توفر كتابة هذه السجلات إمكانية تحكم غير متاحة بطريقة أخرى.

تخزين البرامج الثابتة

تتيح تقنية JTAG لأجهزة برمجة الأجهزة نقل البيانات إلى ذاكرة الجهاز الداخلية غير المتطايرة (مثل CPLDs ). بعض أجهزة برمجة الأجهزة تؤدي وظيفتين: برمجة الجهاز وتصحيح أخطائه. في حالة FPGAs، يمكن أيضًا برمجة أجهزة الذاكرة المتطايرة عبر منفذ JTAG، عادةً أثناء عملية التطوير. بالإضافة إلى ذلك، يمكن الوصول إلى إمكانيات المراقبة الداخلية (درجة الحرارة، والجهد، والتيار) عبر منفذ JTAG.

تُستخدم مبرمجات JTAG أيضًا لكتابة البرامج والبيانات في ذاكرة الفلاش . ويتم ذلك عادةً باستخدام نفس ناقل البيانات الذي يستخدمه المعالج، وأحيانًا يتولى المعالج هذه العملية. في حالات أخرى، تحتوي رقائق الذاكرة نفسها على واجهات JTAG. توفر بعض بنى تصحيح الأخطاء الحديثة إمكانية الوصول إلى ناقل البيانات الرئيسي داخليًا وخارجيًا دون الحاجة إلى إيقاف المعالج والتحكم به. في أسوأ الأحوال، يُمكن عادةً إرسال إشارات ناقل البيانات الخارجية باستخدام خاصية مسح الحدود.

من الناحية العملية، عند تطوير نظام مضمن، تُعد محاكاة مخزن التعليمات أسرع طريقة لتنفيذ دورة تصحيح الأخطاء (التعديل، التجميع، التنزيل، الاختبار، والتصحيح). وذلك لأن المحاكي المدمج الذي يحاكي مخزن التعليمات يمكن تحديثه بسرعة كبيرة من جهاز التطوير عبر منفذ USB مثلاً. أما استخدام منفذ UART التسلسلي وبرنامج الإقلاع لتحميل البرامج الثابتة إلى ذاكرة الفلاش فيجعل دورة تصحيح الأخطاء هذه بطيئة للغاية، وربما مكلفة من حيث الأدوات؛ لذا يُعد تثبيت البرامج الثابتة في ذاكرة الفلاش (أو ذاكرة SRAM بدلاً من الفلاش) عبر JTAG حلاً وسطاً بين هذين النقيضين.

اختبار المسح الحدودي

تتيح تقنية فحص حدود JTAG الوصول إلى عدد من الإشارات المنطقية لدائرة متكاملة معقدة، بما في ذلك أطراف الجهاز. تُخزَّن هذه الإشارات في سجل فحص الحدود (BSR) الذي يمكن الوصول إليه عبر TAP. يسمح هذا باختبار الإشارات والتحكم في حالاتها لأغراض الاختبار والتصحيح. وبالتالي، يمكن تحديد أعطال البرمجيات والأجهزة (عيوب التصنيع) ومراقبة الجهاز أثناء التشغيل.

عند دمجها مع الاختبار الذاتي المدمج ( BIST )، تُمكّن سلسلة مسح JTAG من توفير حل مُدمج منخفض التكلفة لاختبار الدوائر المتكاملة بحثًا عن أعطال ثابتة مُحددة (مثل الدوائر القصيرة، والدوائر المفتوحة، والأخطاء المنطقية). لا تُساعد آلية سلسلة المسح عادةً في تشخيص أو اختبار أخطاء التوقيت، أو درجة الحرارة، أو غيرها من الأخطاء التشغيلية الديناميكية التي قد تحدث. غالبًا ما تُقدّم حالات الاختبار بتنسيقات قياسية مثل SVF ، أو ما يُقابلها في النظام الثنائي XSVF، وتُستخدم في اختبارات الإنتاج. تُعدّ القدرة على إجراء مثل هذه الاختبارات على اللوحات النهائية جزءًا أساسيًا من تصميم الاختبار في المنتجات الحديثة، مما يزيد من عدد الأعطال التي يُمكن اكتشافها قبل شحن المنتجات إلى العملاء.

الخصائص الكهربائية

واجهة JTAG هي واجهة خاصة تُضاف إلى الشريحة. وبحسب إصدار JTAG، تُضاف دبابيس ثنائية أو رباعية أو خماسية. صُممت الواجهات ذات الدبابيس الأربعة والخماسية بحيث يمكن توصيل خطوط JTAG الخاصة بشرائح متعددة على لوحة واحدة على التوالي، وذلك في حال استيفاء شروط معينة. [ 7 ] أما الواجهة ذات الدبوسين، فقد صُممت بحيث يمكن توصيل شرائح متعددة على شكل نجمة . في كلتا الحالتين، يكفي أن يتصل مسبار الاختبار بمنفذ JTAG واحد للوصول إلى جميع الشرائح على لوحة الدوائر .

JTAG المتسلسل (IEEE 1149.1)

مثال على سلسلة JTAG. لم يتم عرض إشارة إعادة ضبط الاختبار.
مثال على سلسلة JTAG. لم يتم عرض إشارة إعادة ضبط الاختبار.

دبابيس الموصل هي:

  1. TDI (بيانات الاختبار الداخلة)
  2. بيانات الاختبار ( TDO )
  3. TCK (ساعة الاختبار)
  4. TMS (تحديد وضع الاختبار)
  5. إعادة ضبط الاختبار ( TRST ) اختيارية.

يُعدّ طرف TRST خيارًا لإعادة ضبط منطق الاختبار، حيث يعمل بمستوى منخفض، وعادةً ما تكون إعادة الضبط غير متزامنة، ولكنها قد تكون متزامنة أحيانًا، وذلك حسب نوع الشريحة. في حال عدم توفر هذا الطرف، يمكن إعادة ضبط منطق الاختبار بالتبديل إلى حالة إعادة الضبط بشكل متزامن باستخدام TCK وTMS. تجدر الإشارة إلى أن إعادة ضبط منطق الاختبار لا تعني بالضرورة إعادة ضبط أي شيء آخر. توجد عادةً بعض عمليات JTAG الخاصة بالمعالج والتي يمكنها إعادة ضبط الشريحة قيد التصحيح كليًا أو جزئيًا.

بما أن خط بيانات واحد فقط متاح، فإن البروتوكول تسلسلي . مدخل الساعة موجود عند طرف TCK. يتم نقل بت واحد من البيانات من TDI إلى TDO مع كل حافة صاعدة لساعة TCK. يمكن تحميل تعليمات مختلفة. قد تقرأ تعليمات الدوائر المتكاملة النموذجية مُعرّف الشريحة، أو تأخذ عينات من دبابيس الإدخال، أو تُشغّل (أو تُعوّم) دبابيس الإخراج، أو تُعالج وظائف الشريحة، أو تتجاوز (تُمرّر TDI إلى TDO لتقصير سلاسل الشرائح المتعددة منطقيًا).

كما هو الحال مع أي إشارة مُوَقَّطة، يجب أن تكون البيانات المُقدَّمة إلى TDI صالحة لفترة زمنية محددة خاصة بالشريحة قبل الحافة الصاعدة للساعة (هنا، فترة التثبيت). وتكون بيانات TDO صالحة لفترة زمنية محددة خاصة بالشريحة بعد الحافة الهابطة لإشارة TCK.

يختلف الحد الأقصى لتردد تشغيل TCK باختلاف جميع الرقاقات في السلسلة (يجب استخدام أقل سرعة)، ولكنه يتراوح عادةً بين 10 و100  ميجاهرتز (100-10 نانوثانية لكل بت). كما تعتمد ترددات TCK على تصميم اللوحة وقدرات محول JTAG وحالته. قد تحتوي إحدى الرقاقات على  ساعة JTAG بتردد 40 ميجاهرتز، ولكن فقط إذا كانت تستخدم  ساعة بتردد 200 ميجاهرتز لعمليات أخرى غير JTAG؛ وقد تحتاج إلى استخدام ساعة أبطأ بكثير عند تشغيلها في وضع الطاقة المنخفضة. وبناءً على ذلك، تحتوي بعض محولات JTAG على توقيت تكيفي باستخدام إشارة RTCK (إشارة TCK العائدة). تُعد ترددات TCK الأعلى مفيدة للغاية عند استخدام JTAG لنقل كميات كبيرة من البيانات، كما هو الحال عند تخزين برنامج قابل للتنفيذ في ذاكرة الفلاش .

يتم تغيير التوقيت على خطوات TMS من خلال آلة حالة JTAG قياسية . يمكن لآلة حالة JTAG إعادة الضبط، أو الوصول إلى سجل التعليمات، أو الوصول إلى البيانات التي يحددها سجل التعليمات.

غالبًا ما تُضيف منصات JTAG إشاراتٍ إلى الإشارات القليلة المُحددة في مواصفات IEEE 1149.1. تُعد إشارة إعادة ضبط النظام (SRST) شائعةً جدًا، حيث تُمكّن أدوات تصحيح الأخطاء من إعادة ضبط النظام بأكمله، وليس فقط الأجزاء التي تدعم JTAG. في بعض الأحيان، تُستخدم إشارات أحداث لتحفيز نشاطٍ ما من قِبل المُضيف أو الجهاز الذي تتم مراقبته عبر JTAG، أو ربما خطوط تحكم إضافية.

على الرغم من أن قلة من المنتجات الاستهلاكية توفر منفذ JTAG صريحًا، إلا أن هذه المنافذ غالبًا ما تكون موجودة على لوحة الدوائر المطبوعة كبقايا من مراحل التطوير أو الإنتاج. وعند استغلالها، توفر هذه المنافذ في كثير من الأحيان أنجع الوسائل للهندسة العكسية .

JTAG ذو عدد دبابيس مخفض (IEEE 1149.7)

مثال على JTAG مع عدد دبابيس مخفّض

يستخدم موصل JTAG ذو عدد الدبابيس المخفّض سلكين فقط، سلك الساعة وسلك البيانات. هذا مُعرّف كجزء من معيار IEEE 1149.7. [ 8 ] دبابيس الموصل هي:

  1. TMSC (بيانات التسلسل الاختبارية)
  2. TCK (ساعة الاختبار)

يُطلق عليه اسم cJTAG اختصاراً لـ compact JTAG.

قللت واجهة السلكين من الضغط على عدد الأطراف، ويمكن توصيل الأجهزة في بنية نجمية . [ 9 ] تُمكّن البنية النجمية من إيقاف تشغيل بعض أجزاء النظام، بينما يظل الوصول إلى أجزاء أخرى ممكنًا عبر JTAG؛ أما التوصيل التسلسلي فيتطلب تشغيل جميع واجهات JTAG. توجد واجهات سلكين أخرى، مثل Serial Wire Debug (SWD) و Spy-Bi-Wire (SBW).

نموذج الاتصالات

في تقنية JTAG، تُعرّض الأجهزة منفذ اختبار واحد أو أكثر (TAPs). تُظهر الصورة أعلاه ثلاثة منافذ اختبار، قد تكون رقائق منفصلة أو وحدات داخل رقاقة واحدة. تُسمى سلسلة منافذ الاختبار المتسلسلة بسلسلة مسح ضوئي ، أو (بشكل عام) هدف. يمكن أن تكون سلاسل المسح الضوئي طويلة جدًا، ولكن عمليًا، يُعتبر وجود عشرين منفذ اختبار عددًا كبيرًا.

لاستخدام JTAG، يتم توصيل جهاز مضيف بإشارات JTAG الخاصة بالجهاز المستهدف (TMS، TCK، TDI، TDO، إلخ) عبر محول JTAG ، والذي قد يحتاج إلى معالجة مشكلات مثل تغيير مستوى الإشارة والعزل الجلفاني . يتصل المحول بالجهاز المضيف باستخدام واجهة مثل USB أو PCI أو Ethernet، وما إلى ذلك.

البدائيون

يتواصل المضيف مع نقاط الوصول (TAPs) عن طريق معالجة إشارات TMS وTDI بالتزامن مع إشارة TCK وقراءة النتائج عبر TDO (وهي المدخل القياسي الوحيد من جانب المضيف). تُنشئ عمليات تحويل مخرجات TMS/TDI/TCK البنية الأساسية لاتصال JTAG التي تُبنى عليها بروتوكولات الطبقات العليا.

  • تبديل الحالة ... جميع نقاط الوصول (TAPs) في نفس الحالة، وتتغير هذه الحالة عند انتقال إشارة TCK. تُعدّ آلة حالة JTAG هذه جزءًا من مواصفات JTAG، وتتضمن ست عشرة حالة. هناك ست حالات مستقرة، حيث يمنع الحفاظ على استقرار TMS تغيير الحالة. في جميع الحالات الأخرى، تُغيّر إشارة TCK تلك الحالة دائمًا. بالإضافة إلى ذلك، يُجبر تفعيل TRST الدخول إلى إحدى تلك الحالات المستقرة (Test_Logic_Reset)، بطريقة أسرع قليلًا من البديل المتمثل في إبقاء TMS عاليًا وتكرار TCK خمس مرات.
  • التحويل ... تدعم معظم أجزاء آلة حالة JTAG حالتين مستقرتين تُستخدمان لنقل البيانات. يحتوي كل منفذ TAP على سجل تعليمات (IR) وسجل بيانات (DR). يختلف حجم هذين السجلين بين منافذ TAP، ويتم دمجهما عبر TDI وTDO لتشكيل سجل إزاحة كبير. (يعتمد حجم سجل البيانات على قيمة سجل التعليمات الحالي لمنفذ TAP، وربما على القيمة المحددة بواسطة تعليمة SCAN_N). توجد ثلاث عمليات مُعرّفة على سجل الإزاحة هذا:
    • تحقيق قيمة مؤقتة
      • يتم الدخول إلى الحالة المستقرة Shift_IR عبر حالة Capture_IR، حيث يتم تحميل سجل الإزاحة بقيمة ثابتة جزئيًا (ليست التعليمات الحالية).
      • يتم الدخول إلى حالة Shift_DR المستقرة عبر حالة Capture_DR، حيث يتم تحميل قيمة سجل البيانات المحدد بواسطة IR الحالي لـ TAP.
    • تحويل تلك القيمة بتًا بتًا، إما في الحالة المستقرة Shift_IR أو Shift_DR؛ تحولات TCK مسجل الإزاحة بتًا واحدًا، من TDI نحو TDO، تمامًا مثل نقل بيانات SPI الوضع 1 من خلال سلسلة متصلة من الأجهزة (مع TMS=0 يعمل كإشارة اختيار الشريحة، وTDI كـ MOSI، وما إلى ذلك).
    • يتم تحديث سجل IR أو DR من القيمة المؤقتة المُدخلة، عند الانتقال عبر حالة Update_IR أو Update_DR. تجدر الإشارة إلى أنه لا يمكن قراءة (التقاط) سجل دون كتابته (تحديثه)، والعكس صحيح. يُستخدم عادةً بتات إضافية لتحديد ما إذا كان التحديث سيُحدث آثارًا جانبية، أو ما إذا كان الجهاز جاهزًا لتنفيذ هذه الآثار.
  • جارٍ التشغيل ... تُسمى إحدى الحالات المستقرة Run_Test/Idle. ويختلف هذا التمييز باختلاف نوع المعالج. لا يُحدث توقيت إشارة TCK في حالة Idle أي آثار جانبية محددة، ولكن توقيتها في حالة Run_Test قد يُغير حالة النظام. على سبيل المثال، تدعم بعض أنوية ARM9 وضع تصحيح الأخطاء حيث تُحرك دورات TCK في حالة Run_Test مسار التعليمات.

على المستوى الأساسي، يتضمن استخدام JTAG قراءة وكتابة التعليمات وسجلات البيانات المرتبطة بها، ويتضمن أحيانًا تشغيل عدد من دورات الاختبار. خلف هذه السجلات توجد مكونات مادية غير محددة بواسطة JTAG، ولها حالاتها الخاصة التي تتأثر بأنشطة JTAG.

تستخدم معظم أجهزة JTAG أقصر مسار بين حالتين، ربما بسبب قيود خاصة بالمحول. (على سبيل المثال، لا يتعامل أحد المحولات إلا مع المسارات التي يكون طولها من مضاعفات سبعة بتات). تراقب بعض الطبقات المبنية على JTAG انتقالات الحالة وتستخدم مسارات غير شائعة لتشغيل عمليات ذات مستوى أعلى. تستخدم بعض معالجات ARM مثل هذه التسلسلات للدخول والخروج من وضع SWD ثنائي الأسلاك (غير JTAG) . يُستخدم تسلسل المسح الصفري (ZBS) في معيار IEEE 1149.7 [ 8 ] للوصول إلى وظائف متقدمة مثل تبديل TAPs داخل وخارج سلاسل المسح، وإدارة الطاقة، ووضع ثنائي الأسلاك مختلف.

تعليمات JTAG IEEE Std 1149.1 (فحص الحدود)

عادةً ما تكون أحجام سجلات التعليمات صغيرة، ربما أربعة أو سبعة بتات. باستثناء تعليمات التجاوز (BYPASS) والاختبار الخارجي (EXTEST)، يتم تعريف جميع رموز عمليات التعليمات من قِبل مُنفِّذ TAP، وكذلك سجلات البيانات المرتبطة بها؛ ولا ينبغي استخدام رموز التعليمات غير المُعرَّفة. من أهم التعليمات:

  • يجب أن تدعم جميع وحدات المعالجة الطرفية (TAPs) تعليمة التجاوز (BYPASS)، وهي تعليمة ذات قيمة واحدة (جميعها 1) بغض النظر عن حجم سجل التعليمات الخاص بوحدة المعالجة الطرفية. تقوم هذه التعليمة بتحديد سجل بيانات أحادي البت (يُسمى أيضًا التجاوز). تسمح هذه التعليمة بتجاوز هذا الجهاز (عدم القيام بأي شيء) أثناء فحص الأجهزة الأخرى في مسار المسح. [ 4 ]
  • تعليمة IDCODE الاختيارية، ذات رمز تشغيل مُحدد من قِبل المُنفذ. ترتبط IDCODE بسجل 32 بت (IDCODE). تستخدم بياناتها تنسيقًا قياسيًا يتضمن رمز المُصنِّع (مُشتق من معيار JEDEC لرمز تعريف المُصنِّع ، JEP-106)، ورقم القطعة المُخصص من قِبل المُصنِّع، ورمز إصدار القطعة. تحظى IDCODE بدعم واسع، ولكن ليس عالميًا.

عند الخروج من حالة إعادة الضبط، يتم تحميل سجل التعليمات مسبقًا إما بـ BYPASS أو IDCODE. يسمح هذا لأجهزة JTAG بتحديد حجم سلسلة المسح الضوئي المتصلة بها، ومحتوياتها جزئيًا على الأقل. (يمكنها الدخول في حالة إعادة الضبط، ثم مسح سجل البيانات حتى قراءة البيانات التي كتبتها. يحتوي سجل BYPASS على بت صفر فقط، بينما يحتوي سجل IDCODE على 32 بت ويبدأ بالرقم واحد. لذا، يمكن بسهولة ربط البتات التي لم يكتبها الجهاز بـ TAPs). يُستخدم هذا التحديد غالبًا للتحقق من صحة التكوين اليدوي، نظرًا لأن IDCODE غالبًا ما يكون غير محدد. على سبيل المثال، يمكنه تحديد متحكم دقيق قائم على معالج ARM Cortex-M3، دون تحديد الشركة المصنعة أو الطراز؛ أو FPGA معين، ولكن دون تحديد كيفية برمجته.

تتضمن إحدى الطرق الشائعة نقل إشارة التجاوز (BYPASS) إلى سجلات التعليمات لجميع وحدات المعالجة الطرفية (TAPs) باستثناء واحدة، والتي تتلقى تعليمات أخرى. وبهذه الطريقة، تُعرّض جميع وحدات المعالجة الطرفية، باستثناء واحدة، سجل بيانات أحادي البت، ويمكن نقل القيم بشكل انتقائي من وإلى سجل بيانات تلك الوحدة دون التأثير على أي وحدة معالجة طرفية أخرى.

يصف معيار IEEE 1149.1 (JTAG) عددًا من التعليمات لدعم تطبيقات فحص الحدود. بعض هذه التعليمات إلزامي ، ولكن نقاط الوصول (TAPs) المستخدمة لتصحيح الأخطاء بدلًا من اختبار فحص الحدود قد لا توفر دعمًا كافيًا أو لا توفر أي دعم لهذه التعليمات. تعمل هذه التعليمات الإلزامية على سجل فحص الحدود (BSR) المحدد في ملف BSDL ، وتشمل ما يلي:

  • EXTEST للاختبار الخارجي، مثل استخدام الدبابيس لاختبار سلوكيات اللوحة على مستوى اللوحة
  • تحميل قيم خرج الدبوس مسبقًا قبل اختبار EXTEST (يتم دمجه أحيانًا مع SAMPLE)
  • قراءة عينة لقيم الدبابيس في سجل مسح الحدود

تتضمن التعليمات الاختيارية المحددة من قبل معهد مهندسي الكهرباء والإلكترونيات (IEEE) ما يلي:

  • CLAMP هو نوع من أنواع BYPASS يقوم بتشغيل دبابيس الإخراج باستخدام القيم المحملة مسبقًا
  • يؤدي وضع HIGHZ إلى تعطيل مخارج جميع المنافذ.
  • يُستخدم INTEST للاختبار الداخلي، مثل استخدام الدبابيس لاختبار سلوكيات الشريحة.
  • يقوم برنامج RUNBIST بوضع الشريحة في وضع الاختبار الذاتي
  • يُعيد USERCODE رمزًا يُحدده المستخدم، على سبيل المثال لتحديد صورة FPGA النشطة

قد تُعرّف الأجهزة تعليمات إضافية، ويجب أن تكون هذه التعريفات جزءًا من ملف BSDL مُقدّم من الشركة المصنّعة. وغالبًا ما تُصنّف هذه التعريفات على أنها "خاصة" فقط.

سجل مسح الحدود

تتواصل الأجهزة مع العالم عبر مجموعة من منافذ الإدخال والإخراج. توفر هذه المنافذ، في حد ذاتها، رؤية محدودة لآلية عمل الجهاز. مع ذلك، تحتوي الأجهزة التي تدعم مسح الحدود على خلية مسجل إزاحة لكل منفذ إشارة في الجهاز. تتصل هذه المسجلات في مسار مخصص حول حدود الجهاز (ومن هنا جاءت التسمية). يُنشئ هذا المسار إمكانية وصول افتراضية تتجاوز منافذ الإدخال والإخراج العادية، مما يوفر تحكمًا مباشرًا في الجهاز ورؤية تفصيلية للإشارات. [ 10 ]

عادةً ما يصف المصنّع محتويات سجل مسح الحدود، بما في ذلك إمكانيات إدخال/إخراج الإشارات، باستخدام ملف BSDL خاص بكل جزء . تُستخدم هذه الملفات مع "قوائم الشبكة" التصميمية من أنظمة CAD/EDA لتطوير الاختبارات المستخدمة في تصنيع اللوحات. غالبًا ما تكلف أنظمة الاختبار التجارية عدة آلاف من الدولارات للنظام الكامل، وتتضمن خيارات تشخيصية لتحديد الأعطال بدقة، مثل الدوائر المفتوحة والدوائر القصيرة. كما قد توفر هذه الأنظمة عارضات للمخططات أو التصميمات لعرض العطل بشكل رسومي.

لتمكين مسح الحدود، يُضيف مُصنّعو الدوائر المتكاملة منطقًا إلى كل جهاز من أجهزتهم، بما في ذلك خلايا مسح لكل طرف من أطراف الإشارة. ثم تُوصل هذه الخلايا معًا لتشكيل مُسجّل إزاحة مسح الحدود (BSR)، والذي يتصل بدوره بوحدة تحكم TAP. تُعدّ هذه التصاميم جزءًا من معظم مكتبات Verilog أو VHDL. إنّ التكلفة الإضافية لهذا المنطق ضئيلة، وعادةً ما يكون ثمنه مُبررًا لتمكين الاختبار الفعال على مستوى اللوحة.

مثال: ARM11 debug TAP

يُساعد مثالٌ على توضيح آلية عمل JTAG في الأنظمة الحقيقية. المثال هنا هو منفذ تصحيح الأخطاء (TAP) لمعالج ARM11 ، وتحديدًا نواة ARM1136 [ 11 ] . يتمتع المعالج نفسه بقدرات JTAG واسعة، مماثلة لتلك الموجودة في أنوية المعالجات المركزية الأخرى، وهو مُدمج في رقائق ذات قدرات أوسع يتم الوصول إليها عبر JTAG.

هذا مثالٌ غير بديهي، يُمثّل شريحةً واسعةً من الأنظمة المُفعّلة بتقنية JTAG. إضافةً إلى ذلك، يُبيّن كيفية بناء آليات التحكم باستخدام وظائف قراءة/كتابة السجلات في JTAG، وكيفية دمجها لتسهيل اختبار وتصحيح عناصر المنطق المعقدة؛ فوحدات المعالجة المركزية شائعة، لكنّ الدوائر المتكاملة القابلة للبرمجة (FPGAs) والدوائر المتكاملة الخاصة بالتطبيقات (ASICs) تتضمن عناصر معقدة أخرى تحتاج إلى تصحيح.

يقوم المرخص لهم باستخدام هذه النواة بدمجها في الرقاقات، وعادةً ما يدمجونها مع وحدات معالجة أخرى بالإضافة إلى العديد من الأجهزة الطرفية والذاكرة. تتولى إحدى وحدات المعالجة الأخرى اختبار فحص حدود الرقاقة بأكملها؛ وهي غير مدعومة من قِبل وحدة تصحيح الأخطاء. ومن أمثلة هذه الرقاقات:

  • تتضمن وحدة OMAP2420 وحدة TAP لمسح الحدود، ووحدة TAP لتصحيح أخطاء ARM1136، ووحدة TAP لتخزين بيانات التتبع ETB11، ومعالج إشارة رقمية C55x ، ووحدة TAP لمحرك تصوير قائم على ARM7 TDMI، مع قدرة وحدة TAP لمسح الحدود ("ICEpick-B") على دمج وحدات TAP في سلسلة مسح JTAG وفصلها عنها. [ 12 ]
  • المعالج i.MX31 ، وهو مشابه، على الرغم من أن "System JTAG" الخاص به لفحص الحدود TAP، [ 13 ] وهو مختلف تمامًا عن ICEpick، ويتضمن TAP لمحرك DMA الخاص به بدلاً من محرك DSP والتصوير.

صُممت هذه المعالجات للاستخدام في الهواتف اللاسلكية، مثل الهواتف المحمولة، وهذا أحد أسباب تضمينها وحدات تحكم TAP التي تُعدّل سلسلة مسح JTAG: إذ يتطلب تصحيح أخطاء التشغيل منخفض الطاقة الوصول إلى الرقائق عندما تكون مُطفأة الطاقة إلى حد كبير، وبالتالي عندما لا تكون جميع وحدات TAP قيد التشغيل. ويُعدّ تعديل سلسلة المسح هذا أحد مواضيع معيار IEEE 1149.7 [ 8 ] القادم .

مرافق JTAG

تكشف نقطة الوصول للتصحيح هذه عن العديد من التعليمات القياسية، وعدد قليل منها مصمم خصيصًا للتصحيح بمساعدة الأجهزة ، حيث تستخدم أداة برمجية (المصحح) JTAG للتواصل مع النظام الذي يتم تصحيحه:

  • BYPASSوالتعليمات IDCODEالقياسية كما هو موضح أعلاه
  • EXTEST، INTEST، تعليمات قياسية، ولكنها تعمل على النواة بدلاً من سلسلة مسح حدودية خارجية. EXTESTتُستخدم كتابة البيانات إلى النواة بشكل أساسي، INTESTبينما تُستخدم قراءتها بشكل أساسي؛ لكن سلسلتي المسح تُعتبران استثناءً لهذه القاعدة.
  • SCAN_Nتعليمات ARM لاختيار سلسلة المسح المرقمة المستخدمة مع EXTESTأو INTEST. هناك ست سلاسل مسح:
    • 0- سجل معرف الجهاز، 40 بت من بيانات التعريف للقراءة فقط
    • 1- سجل حالة التصحيح والتحكم (DSCR)، 32 بت تُستخدم لتشغيل مرافق التصحيح
    • 4- سجل نقل التعليمات (ITR)، 33 بت (32 تعليمة بالإضافة إلى بت حالة واحد) يستخدم لتنفيذ تعليمات المعالج أثناء وجوده في وضع تصحيح الأخطاء الخاص (انظر أدناه)
    • 5- قناة اتصالات تصحيح الأخطاء (DCC)، 34 بت (كلمة بيانات طويلة واحدة بالإضافة إلى بتين للحالة) تُستخدم لنقل البيانات ثنائي الاتجاه إلى النواة. تُستخدم هذه القناة في وضع تصحيح الأخطاء، وربما أثناء التشغيل عند التواصل مع البرامج التي تدعم أدوات تصحيح الأخطاء.
    • 6وحدة التتبع المدمجة (ETM)، ذات 40 بت (عنوان 7 بت، وكلمة بيانات واحدة بطول 32 بت، وبت للقراءة/الكتابة)، تُستخدم للتحكم في آلية تتبع التعليمات والبيانات السلبية. تُغذي هذه الوحدة إما مخزن التتبع المدمج (ETB) الموجود على الشريحة أو وحدة خارجية عالية السرعة لجمع بيانات التتبع. يدعم التتبع تصحيح الأخطاء السلبي (فحص سجل التنفيذ) وتحليل الأداء لتحسينه.
    • 7وحدة تصحيح الأخطاء، 40 بت (عنوان 7 بت، كلمة بيانات واحدة بطول 32 بت، وبت للقراءة/الكتابة) تُستخدم للوصول إلى نقاط توقف الأجهزة، ونقاط المراقبة، وغير ذلك. يمكن الكتابة إليها أثناء تشغيل المعالج؛ ولا يشترط أن يكون في وضع تصحيح الأخطاء.
  • HALTوتتضمن RESTARTالتعليمات الخاصة بمعالج ARM11 إيقاف وحدة المعالجة المركزية وإعادة تشغيلها. يؤدي إيقافها إلى وضع النواة في وضع التصحيح ، حيث يمكن استخدام ITR لتنفيذ التعليمات، بما في ذلك استخدام DCC لنقل البيانات بين مضيف التصحيح (JTAG) ووحدة المعالجة المركزية.
  • ITRSELتعليمات خاصة بمعالج ARM11 لتسريع بعض العمليات باستخدام ITR.

يشبه هذا النموذج النموذج المستخدم في معالجات ARM الأخرى. تتمتع الأنظمة غير المبنية على معالجات ARM عمومًا بقدرات مماثلة، ربما يتم تنفيذها باستخدام بروتوكولات Nexus فوق JTAG، أو مخططات أخرى خاصة بالبائع.

تتضمن معالجات ARM7 و ARM9 القديمة وحدة EmbeddedICE [ 14 ] تجمع معظم هذه الميزات، ولكنها تعتمد آلية معقدة لتنفيذ التعليمات: إذ يجب على مصحح الأخطاء التحكم في مسار تعليمات وحدة المعالجة المركزية، ساعةً بساعة، والوصول مباشرةً إلى ناقلات البيانات لقراءة البيانات وكتابتها إلى وحدة المعالجة المركزية. يستخدم معالج ARM11 نفس نموذج دعم التتبع (ETM، ETB) المستخدم في تلك المعالجات القديمة.

تُشابه أنوية ARM Cortex الأحدث نموذج تصحيح الأخطاء هذا إلى حد كبير، لكنها تعتمد على منفذ الوصول لتصحيح الأخطاء (DAP) بدلاً من الوصول المباشر إلى وحدة المعالجة المركزية. في هذه البنية (المسماة تقنية CoreSight )، تكون النواة ووحدة JTAG مستقلتين تمامًا. كما أنهما منفصلتان عن JTAG بحيث يمكن استضافتهما عبر واجهة SWD ثنائية الأسلاك من ARM (انظر أدناه) بدلاً من واجهة JTAG سداسية الأسلاك فقط. (تأخذ ARM إشارات JTAG الأربعة القياسية وتضيف إليها إشارة TRST الاختيارية، بالإضافة إلى إشارة RTCK المستخدمة للتوقيت التكيفي). لا تتزامن وحدة CoreSight JTAG-DP مع ساعات النواة، ولا تُنفذ RTCK. [ 15 ] كما أن الأنوية الأحدث تدعم تتبعًا مُحدثًا.

تصحيح الأخطاء في وضع الإيقاف

إحدى الطرق الأساسية لتصحيح أخطاء البرامج هي عرض نموذج أحادي الخيوط، حيث يقوم مصحح الأخطاء بإيقاف تنفيذ البرنامج دوريًا وفحص حالته كما هو موضح في محتويات السجلات والذاكرة (بما في ذلك سجلات وحدة التحكم الطرفية). عند اقتراب أحداث برمجية مهمة، قد يرغب المستخدم في تنفيذ تعليمات (أو أسطر من التعليمات البرمجية المصدرية) خطوة بخطوة لمراقبة كيفية حدوث خلل معين.

فعلى سبيل المثال، قد يقوم مضيف JTAG بإيقاف النواة مؤقتًا، والدخول في وضع التصحيح، ثم قراءة سجلات وحدة المعالجة المركزية باستخدام تعليمات ITR وDCC. بعد حفظ حالة المعالج، يمكنه كتابة تلك السجلات بالقيم التي يحتاجها، ثم تنفيذ خوارزميات مختلفة على وحدة المعالجة المركزية، والوصول إلى الذاكرة والأجهزة الطرفية للمساعدة في تحديد حالة النظام. بعد أن يُجري المصحح هذه العمليات، يمكن استعادة الحالة واستئناف التنفيذ باستخدام تعليمة RESTART.

يُمكن أيضًا الدخول إلى وضع التصحيح بشكل غير متزامن بواسطة وحدة التصحيح، وذلك بتفعيل نقطة مراقبة أو نقطة توقف، أو بإصدار تعليمة BKPT (نقطة توقف) من البرنامج الذي يتم تصحيحه. عندما لا يُستخدم ETM لتتبع التعليمات، يُمكنه أيضًا تفعيل الدخول إلى وضع التصحيح؛ فهو يدعم مُحفزات مُعقدة حساسة للحالة والتاريخ، بالإضافة إلى مُقارنات العناوين البسيطة التي تُوفرها وحدة التصحيح. يتم اكتشاف الانتقالات غير المتزامنة إلى وضع التصحيح عن طريق استطلاع سجل DSCR. هكذا يتم تنفيذ التتبع خطوة بخطوة: إيقاف النواة، وتعيين نقطة توقف مؤقتة عند التعليمة التالية أو العبارة عالية المستوى التالية، وإعادة التشغيل، واستطلاع سجل DSCR حتى اكتشاف دخول غير متزامن إلى حالة التصحيح، وإزالة نقطة التوقف المؤقتة، وتكرار العملية.

تصحيح الأخطاء في وضع المراقبة

غالبًا ما تكون البرامج الحديثة معقدة للغاية بحيث لا تتوافق جيدًا مع نموذج أحادي الخيوط. على سبيل المثال، قد لا يتمكن المعالج المستخدم للتحكم في محرك (ربما محرك شفرة منشار) من الدخول في وضع الإيقاف بأمان؛ فقد يحتاج إلى الاستمرار في معالجة المقاطعات لضمان السلامة الجسدية للأفراد و/أو الآلات. إصدار أمر إيقاف باستخدام JTAG قد يكون خطيرًا.

تدعم معالجات ARM وضع تصحيح أخطاء بديلًا، يُسمى وضع المراقبة ، للتعامل مع مثل هذه الحالات. (يختلف هذا الوضع عن وضع المراقبة الآمن المُطبق كجزء من امتدادات الأمان في أنوية ARM الأحدث؛ فهو يُدير عمليات تصحيح الأخطاء، وليس عمليات الانتقال الأمني). في هذه الحالات، تُؤدي نقاط التوقف ونقاط المراقبة إلى نوع خاص من استثناءات الأجهزة، مما ينقل التحكم إلى مراقب تصحيح الأخطاء الذي يعمل كجزء من برمجيات النظام. يتواصل هذا المراقب مع مصحح الأخطاء باستخدام DCC، ويمكنه، على سبيل المثال، تنفيذ عملية واحدة فقط خطوة بخطوة بينما تستمر العمليات الأخرى (ومعالجات المقاطعات) في العمل.

الامتدادات الشائعة

غالباً ما تُعرّف شركات تصنيع المعالجات الدقيقة ملحقات تصحيح الأخطاء الخاصة بنوى المعالجات. ومن هذه الشركات Infineon وMIPS مع EJTAG، وغيرها. إذا لم تتبنَّ الشركة معياراً (مثل المعايير المستخدمة في معالجات ARM أو Nexus)، فعليها ابتكار حلها الخاص. وإذا كانت تدعم فحص حدود المعالج، فإنها عادةً ما تُطوّر أدوات تصحيح الأخطاء عبر JTAG.

تُقدّم شركة فري سكيل تقنيتي COP وOnCE (المحاكاة على الشريحة). تتضمن OnCE أمر JTAG الذي يُدخل جهاز TAP في وضع خاص حيث يحتوي سجل التعليمات (IR) على أوامر تصحيح أخطاء OnCE [ 16 ] لعمليات مثل التنفيذ خطوة بخطوة، ووضع نقاط التوقف، والوصول إلى السجلات أو الذاكرة. كما تُعرّف EOnCE (المحاكاة المُحسّنة على الشريحة) [ 17 ] التي تُقدّم لمعالجة متطلبات الوقت الحقيقي.

تمتلك ARM بنية تصحيح أخطاء شاملة لنواة المعالج (CoreSight)، والتي بدأت مع EmbeddedICE (وهي أداة تصحيح أخطاء متوفرة في معظم أنوية ARM)، وتشمل الآن عددًا من المكونات الإضافية، مثل ETM (وحدة تتبع الماكرو المدمجة)، المزودة بمنفذ تتبع عالي السرعة، يدعم التتبع متعدد النوى ومتعدد الخيوط. تجدر الإشارة إلى أن التتبع غير تدخلي؛ فلا يلزم إيقاف تشغيل الأنظمة لتتبعها. (مع ذلك، فإن حجم بيانات التتبع كبير جدًا بحيث لا يمكن استخدام JTAG إلا كقناة تحكم في التتبع).

يُعرّف برنامج Nexus بنيةً أساسيةً لتصحيح أخطاء المعالجات، وهي مستقلة إلى حد كبير عن مُصنّعيها. إحدى واجهاته المادية هي JTAG. كما يُعرّف واجهة منفذ إضافي عالي السرعة، تُستخدم للتتبع وغيره. يُستخدم Nexus مع بعض المنصات الحديثة، مثل معالجات Atmel AVR32 وسلسلة Freescale MPC5500.

الاستخدامات

  • باستثناء بعض الأنظمة ذات المواصفات المتدنية للغاية، تحتوي جميع منصات الأنظمة المدمجة تقريبًا على منفذ JTAG لدعم تصحيح الأخطاء داخل الدائرة وبرمجة البرامج الثابتة بالإضافة إلى اختبار فحص الحدود:
  • يحتوي معيار موصل ناقل PCI على إشارات JTAG اختيارية على الدبابيس من 1 إلى 5؛ [ 18 ] يحتوي PCI Express على إشارات JTAG على الدبابيس من 5 إلى 9. [ 19 ] يمكن استخدام بطاقة JTAG خاصة لإعادة برمجة BIOS تالف .
  • تُبرمج تطبيقات اختبار مسح الحدود وبرمجة النظام (الجهاز) أحيانًا باستخدام تنسيق المتجه التسلسلي ، وهو تمثيل نصي لعمليات JTAG باستخدام صيغة بسيطة. تشمل تنسيقات البرمجة الأخرى JAM وSTAPL، بالإضافة إلى تنسيق ISC (اختصارًا لـ In-System Configuration) المُعرّف في معيار IEEE 1532. يُستخدم تنسيق ISC مع نماذج BSDL المُحسّنة لأجهزة المنطق القابلة للبرمجة (مثل FPGAs وCPLDs) التي تتضمن تعليمات ISC_<operation> إضافية إلى جانب الحد الأدنى من تعليمات IEEE 1149.1 الأساسية. عادةً ما تكون أدوات برمجة FPGA من Xilinx وAltera وLattice وCypress وActel وغيرها قادرة على تصدير هذه الملفات.
  • كما ذكرنا، يتضمن عدد من اللوحات موصلات JTAG، أو مجرد وسادات، لدعم عمليات التصنيع، حيث يساعد اختبار فحص الحدود في التحقق من جودة اللوحة (تحديد وصلات اللحام السيئة، وما إلى ذلك) وتهيئة ذاكرة الفلاش أو FPGAs.
  • يمكن لتقنية JTAG أيضًا دعم التحديثات الميدانية واستكشاف الأخطاء وإصلاحها.

دعم العملاء

يتم الوصول إلى واجهة JTAG الخاصة بالجهاز المستهدف باستخدام تطبيق يدعم JTAG ومحول JTAG. يتوفر نطاق واسع من هذه الأجهزة، مُحسّنة لأغراض متنوعة مثل اختبار الإنتاج، وتصحيح أخطاء الأنظمة عالية السرعة، وتطوير المتحكمات الدقيقة منخفضة التكلفة، وغيرها. وبالمثل، يمكن أن تكون البرامج المستخدمة لتشغيل هذه الأجهزة متنوعة للغاية. يستخدم مطورو البرامج JTAG في الغالب لتصحيح الأخطاء وتحديث البرامج الثابتة.

الموصلات

جدار حماية Netgear FVS336G مزود بموصل JTAG ذي 14 سنًا في أسفل اليسار.
مودم Netgear DG632 ADSL مزود برأس JTAG ذي 8 دبابيس في الموقع "5".

لا توجد معايير رسمية للموصلات المادية لمحولات JTAG. عادةً ما تتضمن لوحات التطوير موصلًا لدعم أدوات التطوير المفضلة؛ وفي بعض الحالات، تتضمن عدة موصلات لدعم أدوات متعددة. على سبيل المثال، نادرًا ما تتشارك وحدة التحكم الدقيقة، وFPGA، ومعالج تطبيقات ARM في الأدوات، لذا قد تحتوي لوحة التطوير التي تستخدم جميع هذه المكونات على ثلاثة موصلات أو أكثر. قد لا تتضمن لوحات الإنتاج هذه الموصلات، أو قد توفر الوصول إلى إشارة JTAG باستخدام نقاط اختبار عند محدودية المساحة.

بعض التوصيلات الشائعة [ 20 ] لرؤوس الدبابيس 2.54 مم (0.100 بوصة) هي:  

  • ARM 2×10 دبوس (أو أحيانًا 2×7 الأقدم)، يستخدم من قبل جميع الأنظمة القائمة على ARM تقريبًا
  • واجهة توصيل MIPS EJTAG (2×7 دبوس) المستخدمة في الأنظمة القائمة على معالجات MIPS
  • منفذ JTAG متوافق مع Altera ByteBlaster ذو 2×5 دبابيس ، تم توسيعه بواسطة العديد من الموردين
  • يقوم AVR ذو 2×5 دبوس بتوسيع Altera JTAG مع SRST (وفي بعض الحالات TRST ومخرج حدث)
  • موصلات تكساس إنسترومنتس ذات 7 دبابيس (2×7) تُستخدم مع معالجات الإشارات الرقمية (DSPs) والمنتجات القائمة على معالجات ARM مثل OMAP
  • كابل JTAG عام من نوع PLD ذو 8 دبابيس (صف واحد) متوافق مع كابلات Lattice ispDOWNLOAD المتعددة
  • موصلات MIPI 10/20 (1.27  مم 050) لـ JTAG و cJTAG و SWD

تتضمن هذه الموصلات عادةً أكثر من مجرد الإشارات القياسية الأربع (TMS، TCK، TDI، TDO). كما توفر إشارات إعادة ضبط، إما TRST (إعادة ضبط TAP) أو SRST (إعادة ضبط النظام)، أو كليهما. ويوفر الموصل عادةً جهد التغذية المنطقية للوحة قيد الاختبار، لكي تستخدم محولات JTAG مستويات المنطق المناسبة . وقد يُستخدم جهد اللوحة أيضًا كمدخل لتصحيح الأخطاء. كما يمكن توفير إشارات إدخال أو إخراج أخرى للأحداث، أو خطوط إدخال/إخراج للأغراض العامة (GPIO)، لدعم بنى تصحيح الأخطاء الأكثر تعقيدًا .

تستخدم المنتجات المتطورة عادةً موصلات كثيفة (غالباً موصلات MICTOR ذات 38 سنًا ) لدعم التتبع عالي السرعة بالتزامن مع عمليات JTAG. ومن الاتجاهات الحديثة دمج واجهة USB في لوحات التطوير مع JTAG، حيث تُستخدم قناة ثانية لمنفذ تسلسلي. (يمكن أيضًا تزويد اللوحات الأصغر حجمًا بالطاقة عبر USB. ونظرًا لأن أجهزة الكمبيوتر الحديثة غالبًا ما تتخلى عن المنافذ التسلسلية، فإن روابط تصحيح الأخطاء المدمجة هذه تُقلل بشكل كبير من فوضى المكونات للمطورين). أما لوحات الإنتاج، فتعتمد في الغالب على وصلات "الدبابيس" لنقاط الاختبار لأغراض الاختبار والبرمجة.

أجهزة المحول

تختلف مكونات محولات JTAG اختلافًا كبيرًا. فعندما لا تكون مدمجة في لوحة تطوير، فإنها تتطلب كابلًا قصيرًا للتوصيل بموصل JTAG على اللوحة المستهدفة، واتصالًا بجهاز المضيف المستخدم للتصحيح، مثل وصلة USB أو PCI أو Ethernet، بالإضافة إلى مكونات إلكترونية كافية لتكييف نطاقي الاتصال (وأحيانًا توفير عزل كهربائي ). وقد يلزم مصدر طاقة منفصل. يوجد نوعان من المحولات: محولات بسيطة ، حيث يتولى المضيف تحديد وتنفيذ جميع عمليات JTAG، ومحولات ذكية ، حيث يتم تنفيذ جزء من هذه العمليات داخل المحول نفسه، وغالبًا ما يتم التحكم بها بواسطة متحكم دقيق. تُقلل المحولات الذكية من زمن استجابة الاتصال لتسلسلات العمليات التي قد تتضمن التحقق من تغيرات الحالة بين الخطوات، وبالتالي قد توفر إنتاجية أعلى.

اعتبارًا من عام 2018تُعدّ المحولات المزودة بوصلة USB من الجهاز المضيف هي الطريقة الأكثر شيوعًا. غالبًا ما تدعم المنتجات المتطورة تقنية الإيثرنت ، ما يتيح ميزة إمكانية وضع جهاز التصحيح المضيف بعيدًا. تتضمن المحولات التي تدعم منافذ التتبع عالية السرعة عادةً عدة ميغابايت من ذاكرة التخزين المؤقت للتتبع، وتوفر وصلات عالية السرعة (USB أو إيثرنت) لنقل البيانات إلى الجهاز المضيف.

محولات المنافذ المتوازية بسيطة وغير مكلفة، لكنها بطيئة نسبيًا لأنها تستخدم وحدة المعالجة المركزية لتغيير كل بت (عملية " التحكم المباشر بالبت "). وقد تراجع استخدامها لأن معظم أجهزة الكمبيوتر في السنوات الأخيرة لا تحتوي على منفذ متوازي. كما أن دعم برامج التشغيل يمثل مشكلة لأن استخدام المنافذ من قِبل هذه المحولات يختلف اختلافًا كبيرًا. ولأن المنفذ المتوازي يعتمد على  مستوى منطقي 5 فولت، فإن معظم المحولات تفتقر إلى دعم تحويل الجهد لجهود الهدف 3.3  فولت أو 1.8  فولت.

توجد أيضًا محولات منافذ RS-232 التسلسلية ، وهي تتراجع فائدتها بشكل مماثل. تعتمد هذه المحولات عادةً إما على معالجة بتات أبطأ من المنفذ المتوازي، أو على متحكم دقيق يترجم بروتوكول أوامر معين إلى عمليات JTAG. هذه المحولات التسلسلية ليست سريعة أيضًا، ولكن يمكن إعادة استخدام بروتوكولات أوامرها على وصلات أسرع.

يُعدّ دعم البرامج من أهمّ الأمور التي يجب مراعاتها في جميع محوّلات JTAG. فبعض الشركات لا تنشر البروتوكولات التي تستخدمها محوّلات JTAG الخاصة بها، مما يُقيّد عملائها بسلاسل الأدوات التي تدعمها تلك الشركات. وتُشكّل هذه مشكلةً خاصةً بالنسبة للمحوّلات "الذكية"، التي يتضمّن بعضها كمياتٍ كبيرةً من المعلومات حول كيفية التفاعل مع وحدات المعالجة المركزية (CPU) المُحدّدة.

تطوير البرمجيات

تتضمن معظم بيئات تطوير البرمجيات المدمجة دعمًا لتقنية JTAG. وبشكل عام، توجد ثلاثة مصادر لهذه البرمجيات:

  • قد توفر شركات تصنيع الرقائق الإلكترونية الأدوات اللازمة، والتي تتطلب عادةً محول JTAG الذي توفره. ومن الأمثلة على ذلك شركات تصنيع FPGA مثل Xilinx و Altera ، وشركة Atmel لخطوط إنتاجها AVR8 وAVR32، وشركة Texas Instruments لمعظم منتجاتها من معالجات الإشارات الرقمية (DSP) والمعالجات الدقيقة. تتميز هذه الأدوات عادةً بميزات متقدمة، وقد تكون الخيار الأمثل للرقائق المتخصصة للغاية مثل FPGAs وDSPs. أما برامج التشغيل الأقل تكلفة، فقد تُقدم مجانًا. محولات JTAG نفسها ليست مجانية، على الرغم من أنها تُرفق أحيانًا مع لوحات التطوير.
  • قد يُوفر مُصنّعو الأدوات هذه المكونات، عادةً بالتعاون مع مُصنّعي رقائق متعددة لتوفير دعم تطوير متعدد المنصات. تتمتع المنتجات القائمة على معالجات ARM بسوق طرف ثالث غني بشكل خاص، وقد توسع عدد من هؤلاء المُصنّعين ليشملوا منصات غير ARM مثل MIPS و PowerPC . أحيانًا، يُطوّر مُصنّعو الأدوات منتجاتهم باستخدام برامج مجانية مثل GCC و GDB ، مع دعم واجهة المستخدم الرسومية الذي غالبًا ما يستخدم Eclipse . تُباع مُحولات JTAG أحيانًا مع حزم الدعم.
  • توجد أدوات مفتوحة المصدر . وكما ذكرنا سابقاً، يشكل كل من GCC وGDB جوهر سلسلة أدوات جيدة، وهناك بيئات واجهة مستخدم رسومية لدعمهما.

تتضمن جميع هذه البرامج عادةً دعمًا أساسيًا لتصحيح الأخطاء: الإيقاف، والتوقف المؤقت، والتنفيذ خطوة بخطوة، ونقاط التوقف، واستعراض بنية البيانات، وما إلى ذلك. أما الأدوات التجارية، فتُوفر عادةً أدوات مثل المحاكيات الدقيقة للغاية وتحليل التتبع، وهي غير متوفرة حاليًا كمصدر مفتوح.

معايير واجهة مماثلة

تُعدّ واجهة تصحيح الأخطاء السلكية التسلسلية (SWD) واجهة كهربائية بديلة ثنائية الأطراف تستخدم نفس البروتوكول، وتعتمد على وصلة التأريض (GND) الموجودة. تستخدم SWD بروتوكولًا سلكيًا ثنائي الاتجاه قياسيًا لمعالجات ARM، مُعرّفًا في واجهة تصحيح أخطاء ARM الإصدار 6. [ 21 ] يُمكّن هذا المُصحّح من أن يصبح مُتحكّمًا رئيسيًا إضافيًا في ناقل AMBA للوصول إلى ذاكرة النظام والسجلات الطرفية أو سجلات تصحيح الأخطاء. تصل سرعة نقل البيانات إلى 4 ميجابايت/ثانية عند تردد 50 ميجاهرتز . كما تتميّز SWD بخاصية مُدمجة لاكتشاف الأخطاء. في أجهزة JTAG المُزوّدة بإمكانية SWD، تُستخدم إشارتا TMS وTCK كإشارات SWDIO وSWCLK على التوالي، مما يُتيح للمبرمجين العمل في وضعين.

انظر أيضاً

مراجع

  1. نيل ستولون (2011). أجهزة القياس على الرقاقة . سبرينغر.
  2. راندي جونسون، ستيوارد كريستي (شركة إنتل، 2009)، JTAG 101 - IEEE 1149.x وتصحيح أخطاء البرمجيات
  3. يمكن شراء نسخ من IEEE 1149.1-1990 أو تحديثاتها الأحدث (2001 و2013 على التوالي) من IEEE.
  4. 1 2 "IEEE 1149.1-2001" .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  5. "IEEE 1149.1-2013" .
  6. حدد طريقة تصحيح الأخطاء الصحيحة لـ FPGA. مؤرشف في 27 أبريل 2010 في Wayback Machine يعرض أحد نماذج هذه الأدوات.
  7. "الأسئلة الشائعة: ما هي الشروط التي تسمح بتوصيل JTAG بشكل متسلسل؟" . www.jtagtest.com .
  8. 1 2 3 شركة تكساس إنسترومنتس هي إحدى الشركات التي تبنت هذا المعيار ولديها صفحة ويكي IEEE 1149.7 مؤرشفة في 6 أبريل 2014 في Wayback Machine مع مزيد من المعلومات.
  9. "المزايا الرئيسية لمعيار IEEE 1149.7" . مؤرشف من الأصل بتاريخ 12 فبراير 2019.
  10. أوشانا، روب (29 أكتوبر 2002). "مقدمة إلى JTAG" . تصميم الأنظمة المدمجة . تم الاسترجاع في 29 أكتوبر 2025 .
  11. دليل المرجع التقني لمعالجات ARM1136JF-S وARM1136J-S ، الإصدار r1p5، ARM DDI 0211K. يعرض الفصل 14 واجهة Debug TAP. وتقدم معالجات ARM11 الأخرى نفس النموذج من خلال واجهات Debug TAP الخاصة بها.
  12. لا تتوفر وثائق OMAP2420 للعموم. مع ذلك، توجدوثيقة من شركة Texas Instruments بعنوان "دليل المستخدم لـ DBGJTAG" مؤرشفة بتاريخ 31 ديسمبر 2014 على موقع Wayback Machine، تتناول أداة تشخيص JTAG، وتقدم مثالًا على سلسلة مسح OMAP2420 (وغيرها).
  13. انظر "دليل مرجع معالج تطبيقات الوسائط المتعددة i.MX35 (MCIMX35)" من موقع Freescale الإلكتروني . يعرض الفصل 44 "وحدة تحكم JTAG الآمنة" (SJC).
  14. دليل المرجع التقني ARM9EJ-S مراجعة r1p2. الملحق ب "التصحيح المتعمق" يعرض وحدة EmbeddedICE-RT، كما هو موضح في نواة ARM926ejs الشائعة.
  15. "دليل المرجع الفني لمكونات CoreSight: 2.3.2. تفاصيل خاصة بالتنفيذ" . infocenter.arm.com .
  16. AN1817/D، "MMC20xx M•CORE OnCE Port Communication and Control Sequences"؛ شركة Freescale Semiconductor، Inc.؛ 2004. لا تدعم جميع المعالجات نفس وحدة OnCE.
  17. AN2073 "الاختلافات بين منافذ EOnCE و OnCE"؛ شركة Freescale Semiconductor؛ 2005.
  18. "ملخص فني لناقل PCI المحلي، 4.10 دبابيس JTAG/Boundary Scan" . مؤرشف من الأصل في 7 نوفمبر 2006. تم الاطلاع عليه في 13 يوليو 2007 .
  19. "مخطط توصيل دبابيس ناقل PCI Express التسلسلي 16x وأسماء إشارات توصيل دبابيس PCIe" . www.interfacebus.com .
  20. يُدرج قسم JTAG Pinouts بعض تخطيطات رؤوس JTAG فقط التي تحظى بدعم واسع النطاق من الأدوات.
  21. "مواصفات بنية واجهة تصحيح أخطاء Arm ADIv6.0" . developer.arm.com . تم الاطلاع عليه بتاريخ 8 ديسمبر 2025 .