محاكاة داخل الدائرة
المحاكاة داخل الدائرة ( ICE ) هي استخدام جهاز مادي أو محاكي داخل الدائرة لتصحيح أخطاء برمجيات الأنظمة المدمجة . وتعمل هذه التقنية باستخدام معالج مزود بقدرة إضافية على دعم عمليات التصحيح، بالإضافة إلى تنفيذ الوظيفة الرئيسية للنظام . وبالنسبة للأنظمة القديمة ذات المعالجات المحدودة، كان هذا يتطلب عادةً استبدال المعالج مؤقتًا بمحاكي مادي: وهو نسخة أكثر قوة وإن كانت أغلى ثمنًا. وكان هذا المحاكي تاريخيًا على شكل معالج ذي منافذ خارجية، حيث يتم إخراج العديد من الإشارات الداخلية لأغراض التصحيح. وتوفر هذه الإشارات معلومات حول حالة المعالج.
في الآونة الأخيرة، يشمل المصطلح أيضًا أجهزة تصحيح الأخطاء المعتمدة على JTAG ، والتي توفر وصولًا مكافئًا باستخدام أجهزة تصحيح الأخطاء المدمجة مع رقائق الإنتاج القياسية. إن استخدام الرقائق القياسية بدلًا من الإصدارات المخصصة يجعل هذه التقنية واسعة الانتشار ومنخفضة التكلفة، ويزيل معظم الاختلافات بين بيئتي التطوير والتشغيل. في هذه الحالة الشائعة، يُعد مصطلح "محاكي الدائرة" تسمية خاطئة ، بل ومُربكة أحيانًا، لأن المحاكاة لم تعد جزءًا من العملية.
تُشكّل الأنظمة المُدمجة تحديات خاصة للمبرمجين، إذ تفتقر عادةً إلى لوحات المفاتيح والشاشات ومحركات الأقراص وغيرها من واجهات المستخدم الموجودة في أجهزة الحاسوب. هذه النواقص تجعل أدوات تصحيح أخطاء البرمجيات داخل الدوائر ضرورية للعديد من مهام التطوير الشائعة.
وظيفة
يوفر المحاكي المدمج (ICE) نافذةً إلى النظام المدمج. يستخدم المبرمج المحاكي لتحميل البرامج في النظام المدمج، وتشغيلها، والتنقل بينها ببطء، وعرض البيانات التي يستخدمها برنامج النظام وتغييرها.
يُطلق على المحاكي هذا الاسم لأنه يُحاكي وحدة المعالجة المركزية (CPU) في حاسوب النظام المُدمج. تقليديًا، كان مزودًا بقابس يُوصل بمقبس شريحة الدائرة المتكاملة لوحدة المعالجة المركزية . أما معظم الأنظمة الحديثة، فتستخدم وحدة المعالجة المركزية للنظام المستهدف مباشرةً، مع إمكانية الوصول إليها عبر بروتوكول JTAG لتصحيح الأخطاء. تُمكّن محاكاة المعالج، أو الوصول المباشر إليه عبر JTAG، المحاكي من القيام بكل ما يُمكن للمعالج القيام به، ولكن تحت سيطرة مُطور البرامج.
تُتيح وحدات التحكم المتكاملة ( ICEs) توصيل طرفية حاسوب أو حاسوب شخصي بالنظام المُدمج. توفر هذه الطرفية أو الحاسوب واجهة مستخدم تفاعلية للمبرمج لفحص النظام المُدمج والتحكم فيه. على سبيل المثال، من الشائع وجود مُصحح أخطاء على مستوى شفرة المصدر بواجهة رسومية، يتصل عبر مُحاكي JTAG بنظام مُدمج مُستهدف لا يحتوي على واجهة مستخدم رسومية.
من الجدير بالذكر أنه عند فشل برنامجها، تتعطل معظم الأنظمة المدمجة تمامًا . غالبًا ما تفتقر هذه الأنظمة إلى وظائف أساسية لاكتشاف علامات فشل البرمجيات ، مثل وحدة إدارة الذاكرة (MMU) لرصد أخطاء الوصول إلى الذاكرة. بدون بيئة اختبار متكاملة (ICE)، يصبح تطوير الأنظمة المدمجة بالغ الصعوبة، لأنه عادةً لا توجد طريقة لتحديد سبب المشكلة. أما مع بيئة الاختبار المتكاملة، فيمكن للمبرمج عادةً اختبار أجزاء من التعليمات البرمجية، ثم تحديد الخطأ في جزء معين منها، ثم فحص التعليمات البرمجية المعيبة وإعادة كتابتها لحل المشكلة.
يوفر نظام التحكم في الإدخال/الإخراج (ICE) للمبرمج نقاط توقف للتنفيذ ، وعرض ومراقبة الذاكرة، والتحكم في الإدخال/الإخراج. إضافةً إلى ذلك، يمكن برمجة نظام التحكم في الإدخال/الإخراج للبحث عن أي نطاق من معايير المطابقة للتوقف عندها، في محاولة لتحديد مصدر العطل.
تستخدم معظم وحدات التحكم الدقيقة الحديثة الموارد المتوفرة في النسخة المصنعة منها لبرمجة الجهاز ومحاكاته وتصحيح أخطائه، بدلاً من الحاجة إلى نسخة محاكاة خاصة أخرى (أي وحدة خارجية) من وحدة التحكم الدقيقة المستهدفة. [ 1 ] ورغم أن هذه الطريقة فعالة من حيث التكلفة، حيث أن وحدة ICE تدير المحاكاة فقط بدلاً من محاكاة وحدة التحكم الدقيقة المستهدفة فعلياً، إلا أنه لا بد من إجراء بعض التنازلات للحفاظ على انخفاض الأسعار أثناء التصنيع، مع توفير ميزات محاكاة كافية لتطبيقات المحاكاة (القليلة نسبياً).
المزايا
تحتوي جميع الأنظمة المدمجة تقريبًا على عنصر مادي وعنصر برمجي، وهما منفصلان ولكنهما مترابطان بشكل وثيق. يسمح نظام ICE بتشغيل العنصر البرمجي واختباره على الجهاز الذي سيُشغّل عليه، مع توفير وسائل مساعدة للمبرمجين لعزل التعليمات البرمجية المعيبة، مثل تصحيح الأخطاء على مستوى المصدر (الذي يُظهر البرنامج كما كُتب في الأصل) والتنفيذ خطوة بخطوة (الذي يسمح للمبرمجين بتشغيل البرامج خطوة بخطوة للعثور على الأخطاء).
تتكون معظم وحدات ICE من وحدة محول توضع بين جهاز الكمبيوتر المضيف لوحدة ICE والنظام المراد اختباره. يربط موصل دبابيس وكابل وحدة المحول بمقبس تُركّب فيه وحدة المعالجة المركزية (CPU) أو المتحكم الدقيق داخل النظام المدمج. تُمكّن وحدات ICE الحديثة المبرمجين من الوصول إلى دائرة تصحيح الأخطاء المدمجة في وحدة المعالجة المركزية عبر JTAG أو واجهة وضع تصحيح الأخطاء في الخلفية (BDM) لتصحيح برامج النظام المدمج. غالبًا ما تستخدم هذه الأنظمة إصدارًا قياسيًا من شريحة وحدة المعالجة المركزية، ويمكن توصيلها ببساطة بمنفذ تصحيح الأخطاء في نظام الإنتاج. تُسمى أحيانًا مصححات الأخطاء داخل الدائرة (ICDs)، للتمييز بينها وبين وحدة المعالجة المركزية القياسية الموجودة مسبقًا، لأنها لا تُحاكي وظائفها. ولأن وحدة المعالجة المركزية غير قابلة للاستبدال، يمكن تشغيلها على وحدات الإنتاج حيث تكون وحدة المعالجة المركزية ملحومة ولا يمكن استبدالها. في معالجات x86 Pentium، تستخدم وحدات ICE وضع "التحقق" الخاص للمساعدة في تصحيح الأخطاء. [ 2 ]
في سياق الأنظمة المدمجة، لا تحاكي وحدة التحكم المتكاملة (ICE) المكونات المادية، بل توفر وصولاً مباشراً لتصحيح الأخطاء إلى وحدة المعالجة المركزية الفعلية. ويخضع النظام قيد الاختبار لسيطرة كاملة، مما يسمح للمطور بتحميل التعليمات البرمجية وتصحيح أخطائها واختبارها مباشرةً.
معظم أنظمة التشغيل عبارة عن حواسيب تجارية عادية لا علاقة لها بوحدة المعالجة المركزية المستخدمة في التطوير. على سبيل المثال، قد يُستخدم حاسوب شخصي يعمل بنظام لينكس لتطوير برامج لنظام يستخدم شريحة Freescale 68HC11 ، وهي معالج لا يدعم تشغيل لينكس.
يقوم المبرمج عادةً بتحرير وتجميع كود النظام المدمج على النظام المضيف أيضًا. ويحتوي النظام المضيف على مُجمِّعات خاصة تُنتج كودًا قابلاً للتنفيذ للنظام المدمج، وتُسمى هذه المُجمِّعات أو المُجمِّعات المتقاطعة .
تصحيح الأخطاء على الشريحة
يُعد تصحيح الأخطاء على الشريحة بديلاً عن المحاكاة داخل الدائرة. وهو يستخدم نهجًا مختلفًا لتحقيق هدف مماثل.
يستخدم تصحيح الأخطاء على الشريحة، والذي يُشار إليه غالبًا باسم مجموعة إجراءات الاختبار المشتركة (JTAG)، واجهة تصحيح أخطاء إضافية للأجهزة الحية في نظام الإنتاج. يوفر هذا النوع من التصحيح نفس ميزات تصحيح الأخطاء داخل الدائرة، مثل فحص الحالة الداخلية أو المتغيرات، وقد يتيح إمكانية تعيين نقاط التحقق ونقاط التوقف ونقاط المراقبة. يكمن الاختلاف في أن هذه الميزة تُوفّرها شريحة سيليكون إضافية داخل معالج الإنتاج، بدلًا من استبدال المعالج بمحاكي تصحيح أخطاء خارجي. لهذا السبب، تتغير بعض وظائف مجموعة إجراءات الاختبار المشتركة (ICE) وفقًا لمواصفات المعالج. تُضاف واجهة JTAG إضافية إلى لوحة التحكم، وهي مطلوبة في كل نظام إنتاج، ولكن نظرًا لأنها لا تتطلب سوى عدد قليل من دبابيس الإشارة، فإن التكلفة الإضافية ضئيلة. طُوّرت واجهات JTAG في الأصل لاختبارات نهاية الإنتاج، ولا تزال مفيدة في هذا المجال.
إنتل
لدعم تصحيح الأخطاء باستخدام محاكي الدائرة (ICE) على معالج Intel 286 ، توفرت خمسة منافذ إضافية على المعالج: منفذ إدخال واحد لفرض نقطة توقف ICE خارجيًا، ICEBP#وزوجان بديلان من منافذ الإخراج لاختيار العمليات عبر ناقل ICE بدلًا من ذاكرة المستخدم. [ 3 ] في معالج 80286، توجد تعليمتان ( 0F 04، 0F 05) لتفريغ/استعادة حالة وحدة المعالجة المركزية بالكامل إلى إزاحة الذاكرة 0x800، بالإضافة إلى بادئة تجاوز أحادية البايت ( F1) لتمكين وضع ICE من الوصول إلى ذاكرة المستخدم.
انظر أيضاً
مراجع
- ↑ كيل، راينهارد (22 يوليو 2008). "تصحيح الأخطاء باستخدام وحدات التحكم الدقيقة Cortex-M3" . www.embedded.com . تم الاطلاع عليه في 25 مايو 2013 .
- ↑ "نظرة عامة على وضع مسبار بنتيوم" .
- ↑ براءة الاختراع الأمريكية رقم 4547849 ، لوي، جلين؛ ريتر، رافي ؛ وشاعانان ، نيف وآخرون، بعنوان "واجهة بين معالج دقيق ومعالج مساعد"، الصادرة في 15 أكتوبر 1985، والمُسجلة باسم شركة إنتل . "تدعم إشارات حالة دورة ناقل المستخدم، S1# وS0#، ناقل المستخدم، بينما تدعم إشارات حالة دورة ناقل ICE، ICES1# وICES0#، ناقل ICE. ... يُستخدم ناقل ICE فقط لدورات قراءة البيانات، وقراءة التعليمات البرمجية، والإيقاف، والإغلاق، وكتابة الذاكرة. ... يُجبر المعالج الدقيق على الانتقال إلى وضع التوافق عند إعادة الضبط، ... ولا يمكن إعادته إلى وضع التوافق إلا عن طريق إعادة الضبط (أو نقطة توقف ICE)، ... يجب إيلاء اهتمام خاص لـ ICE لأنه الحالة الوحيدة التي يمكن فيها تحويل المعالج الدقيق الرئيسي من وضع الحماية إلى وضع التوافق (باستثناء إعادة الضبط). ... يبدأ برنامج ICE التنفيذ بعد نقطة توقف ICE في وضع التوافق، ثم ينتقل إلى وضع الحماية لمعظم عملياته."
روابط خارجية
- الأنظمة المدمجة
- تصحيح الأخطاء
